diff --git a/.deepsource.toml b/.deepsource.toml
deleted file mode 100644
index cfef0358..00000000
--- a/.deepsource.toml
+++ /dev/null
@@ -1,22 +0,0 @@
-version = 1
-
-test_patterns = ["tests/**"]
-
-[[analyzers]]
-name = "python"
-enabled = true
-
- [analyzers.meta]
- runtime_version = "3.x.x"
-
-[[analyzers]]
-name = "test-coverage"
-enabled = true
-
-[[analyzers]]
-name = "docker"
-enabled = true
-
-[[analyzers]]
-name = "shell"
-enabled = true
diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml
deleted file mode 100644
index bdaab28a..00000000
--- a/.github/workflows/python-publish.yml
+++ /dev/null
@@ -1,39 +0,0 @@
-# This workflow will upload a Python Package using Twine when a release is created
-# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python#publishing-to-package-registries
-
-# This workflow uses actions that are not certified by GitHub.
-# They are provided by a third-party and are governed by
-# separate terms of service, privacy policy, and support
-# documentation.
-
-name: Upload Python Package
-
-on:
- release:
- types: [published]
-
-permissions:
- contents: read
-
-jobs:
- deploy:
-
- runs-on: ubuntu-latest
-
- steps:
- - uses: actions/checkout@v3
- - name: Set up Python
- uses: actions/setup-python@v3
- with:
- python-version: '3.x'
- - name: Install dependencies
- run: |
- python -m pip install --upgrade pip
- pip install build
- - name: Build package
- run: python -m build
- - name: Publish package
- uses: pypa/gh-action-pypi-publish@27b31702a0e7fc50959f5ad993c78deac1bdfc29
- with:
- user: __token__
- password: ${{ secrets.PYPI_API_TOKEN }}
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index cff84152..00000000
--- a/.gitignore
+++ /dev/null
@@ -1,250 +0,0 @@
-# Byte-compiled / optimized / DLL files
-__pycache__/
-*.py[cod]
-*$py.class
-
-# C extensions
-*.so
-
-# Distribution / packaging
-.Python
-build/
-develop-eggs/
-dist/
-downloads/
-eggs/
-.eggs/
-lib/
-lib64/
-parts/
-sdist/
-var/
-wheels/
-pip-wheel-metadata/
-share/python-wheels/
-*.egg-info/
-.installed.cfg
-*.egg
-MANIFEST
-
-# PyInstaller
-# Usually these files are written by a python script from a template
-# before PyInstaller builds the exe, so as to inject date/other infos into it.
-*.manifest
-*.spec
-
-# Installer logs
-pip-log.txt
-pip-delete-this-directory.txt
-
-# Unit test / coverage reports
-htmlcov/
-.tox/
-.nox/
-.coverage
-.coverage.*
-.cache
-nosetests.xml
-coverage.xml
-*.cover
-*.py,cover
-.hypothesis/
-.pytest_cache/
-
-# Translations
-*.mo
-*.pot
-
-# Django stuff:
-*.log
-local_settings.py
-db.sqlite3
-db.sqlite3-journal
-
-# Flask stuff:
-instance/
-.webassets-cache
-
-# Scrapy stuff:
-.scrapy
-
-# Sphinx documentation
-docs/_build/
-
-# PyBuilder
-target/
-
-# Jupyter Notebook
-.ipynb_checkpoints
-
-# IPython
-profile_default/
-ipython_config.py
-
-# pyenv
-.python-version
-
-# pipenv
-# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
-# However, in case of collaboration, if having platform-specific dependencies or dependencies
-# having no cross-platform support, pipenv may install dependencies that don't work, or not
-# install all needed dependencies.
-#Pipfile.lock
-
-# PEP 582; used by e.g. github.com/David-OConnor/pyflow
-__pypackages__/
-
-# Celery stuff
-celerybeat-schedule
-celerybeat.pid
-
-# SageMath parsed files
-*.sage.py
-
-# Environments
-.env
-.venv
-env/
-venv/
-ENV/
-env.bak/
-venv.bak/
-
-# Spyder project settings
-.spyderproject
-.spyproject
-
-# Rope project settings
-.ropeproject
-
-# mkdocs documentation
-/site
-
-# mypy
-.mypy_cache/
-.dmypy.json
-dmypy.json
-
-# Pyre type checker
-.pyre/
-
-# MONAI core
-MONAI/
-
-# Created by https://www.toptal.com/developers/gitignore/api/jetbrains
-# Edit at https://www.toptal.com/developers/gitignore?templates=jetbrains
-
-### JetBrains ###
-# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
-# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
-
-# User-specific stuff
-.idea/**/workspace.xml
-.idea/**/tasks.xml
-.idea/**/usage.statistics.xml
-.idea/**/dictionaries
-.idea/**/shelf
-
-# AWS User-specific
-.idea/**/aws.xml
-
-# Generated files
-.idea/**/contentModel.xml
-
-# Sensitive or high-churn files
-.idea/**/dataSources/
-.idea/**/dataSources.ids
-.idea/**/dataSources.local.xml
-.idea/**/sqlDataSources.xml
-.idea/**/dynamic.xml
-.idea/**/uiDesigner.xml
-.idea/**/dbnavigator.xml
-
-# Gradle
-.idea/**/gradle.xml
-.idea/**/libraries
-
-# Gradle and Maven with auto-import
-# When using Gradle or Maven with auto-import, you should exclude module files,
-# since they will be recreated, and may cause churn. Uncomment if using
-# auto-import.
-# .idea/artifacts
-# .idea/compiler.xml
-# .idea/jarRepositories.xml
-# .idea/modules.xml
-# .idea/*.iml
-# .idea/modules
-# *.iml
-# *.ipr
-
-# CMake
-cmake-build-*/
-
-# Mongo Explorer plugin
-.idea/**/mongoSettings.xml
-
-# File-based project format
-*.iws
-
-# IntelliJ
-out/
-
-# mpeltonen/sbt-idea plugin
-.idea_modules/
-
-# JIRA plugin
-atlassian-ide-plugin.xml
-
-# Cursive Clojure plugin
-.idea/replstate.xml
-
-# SonarLint plugin
-.idea/sonarlint/
-
-# Crashlytics plugin (for Android Studio and IntelliJ)
-com_crashlytics_export_strings.xml
-crashlytics.properties
-crashlytics-build.properties
-fabric.properties
-
-# Editor-based Rest Client
-.idea/httpRequests
-
-# Android studio 3.1+ serialized cache file
-.idea/caches/build_file_checksums.ser
-
-### JetBrains Patch ###
-# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
-
-# *.iml
-# modules.xml
-# .idea/misc.xml
-# *.ipr
-
-# Sonarlint plugin
-# https://plugins.jetbrains.com/plugin/7973-sonarlint
-.idea/**/sonarlint/
-
-# SonarQube Plugin
-# https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin
-.idea/**/sonarIssues.xml
-
-# Markdown Navigator plugin
-# https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced
-.idea/**/markdown-navigator.xml
-.idea/**/markdown-navigator-enh.xml
-.idea/**/markdown-navigator/
-
-# Cache file creation bug
-# See https://youtrack.jetbrains.com/issue/JBR-2257
-.idea/$CACHE_FILE$
-
-# CodeStream plugin
-# https://plugins.jetbrains.com/plugin/12206-codestream
-.idea/codestream.xml
-
-# Azure Toolkit for IntelliJ plugin
-# https://plugins.jetbrains.com/plugin/8053-azure-toolkit-for-intellij
-.idea/**/azureSettings.xml
-
-# End of https://www.toptal.com/developers/gitignore/api/jetbrains
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
deleted file mode 100644
index 1cc14835..00000000
--- a/.pre-commit-config.yaml
+++ /dev/null
@@ -1,74 +0,0 @@
-#default_language_version:
-# python: python3.8
-
-ci:
- autofix_prs: true
- autoupdate_commit_msg: '[pre-commit.ci] pre-commit suggestions'
- autoupdate_schedule: quarterly
- # submodules: true
-
-repos:
- - repo: https://github.com/pre-commit/pre-commit-hooks
- rev: v4.4.0
- hooks:
- - id: end-of-file-fixer
- exclude: ^tutorials/
- - id: trailing-whitespace
- - id: check-yaml
- - id: check-docstring-first
- - id: check-executables-have-shebangs
- - id: check-toml
- - id: check-case-conflict
- - id: check-added-large-files
- args: ['--maxkb=1024']
- - id: detect-private-key
- - id: forbid-new-submodules
- - id: pretty-format-json
- args: ['--autofix', '--no-sort-keys', '--indent=4']
- - id: mixed-line-ending
-
- - repo: https://github.com/asottile/pyupgrade
- rev: v3.3.1
- hooks:
- - id: pyupgrade
- args: [--py37-plus]
- name: Upgrade code
- exclude: |
- (?x)^(
- versioneer.py|
- monai/_version.py
- )$
-
- - repo: https://github.com/asottile/yesqa
- rev: v1.4.0
- hooks:
- - id: yesqa
- name: Unused noqa
- additional_dependencies:
- - flake8>=3.8.1
- - flake8-bugbear
- - flake8-comprehensions
- - flake8-executable
- - flake8-pyi
- - pep8-naming
- exclude: |
- (?x)^(
- generative/__init__.py|
- docs/source/conf.py
- )$
-
- - repo: https://github.com/hadialqattan/pycln
- rev: v2.1.2
- hooks:
- - id: pycln
- args: [--config=pyproject.toml]
-
-# - repo: https://github.com/psf/black
-# rev: 22.3.0
-# hooks:
-# - id: black
-#
-# - repo: https://github.com/PyCQA/isort
-# rev: 5.9.3
-# hooks:
-# - id: isort
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
deleted file mode 100644
index c6f6fda2..00000000
--- a/CODE_OF_CONDUCT.md
+++ /dev/null
@@ -1,76 +0,0 @@
-# Contributor Covenant Code of Conduct
-
-## Our Pledge
-
-In the interest of fostering an open and welcoming environment, we as
-contributors and maintainers pledge to making participation in our project and
-our community a harassment-free experience for everyone, regardless of age, body
-size, disability, ethnicity, sex characteristics, gender identity and expression,
-level of experience, education, socio-economic status, nationality, personal
-appearance, race, religion, or sexual identity and orientation.
-
-## Our Standards
-
-Examples of behavior that contributes to creating a positive environment
-include:
-
-* Using welcoming and inclusive language
-* Being respectful of differing viewpoints and experiences
-* Gracefully accepting constructive criticism
-* Focusing on what is best for the community
-* Showing empathy towards other community members
-
-Examples of unacceptable behavior by participants include:
-
-* The use of sexualized language or imagery and unwelcome sexual attention or
- advances
-* Trolling, insulting/derogatory comments, and personal or political attacks
-* Public or private harassment
-* Publishing others' private information, such as a physical or electronic
- address, without explicit permission
-* Other conduct which could reasonably be considered inappropriate in a
- professional setting
-
-## Our Responsibilities
-
-Project maintainers are responsible for clarifying the standards of acceptable
-behavior and are expected to take appropriate and fair corrective action in
-response to any instances of unacceptable behavior.
-
-Project maintainers have the right and responsibility to remove, edit, or
-reject comments, commits, code, wiki edits, issues, and other contributions
-that are not aligned to this Code of Conduct, or to ban temporarily or
-permanently any contributor for other behaviors that they deem inappropriate,
-threatening, offensive, or harmful.
-
-## Scope
-
-This Code of Conduct applies both within project spaces and in public spaces
-when an individual is representing the project or its community. Examples of
-representing a project or community include using an official project e-mail
-address, posting via an official social media account, or acting as an appointed
-representative at an online or offline event. Representation of a project may be
-further defined and clarified by project maintainers.
-
-## Enforcement
-
-Instances of abusive, harassing, or otherwise unacceptable behavior may be
-reported by contacting the project team at monai.contact@gmail.com. All
-complaints will be reviewed and investigated and will result in a response that
-is deemed necessary and appropriate to the circumstances. The project team is
-obligated to maintain confidentiality with regard to the reporter of an incident.
-Further details of specific enforcement policies may be posted separately.
-
-Project maintainers who do not follow or enforce the Code of Conduct in good
-faith may face temporary or permanent repercussions as determined by other
-members of the project's leadership.
-
-## Attribution
-
-This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
-available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
-
-[homepage]: https://www.contributor-covenant.org
-
-For answers to common questions about this code of conduct, see
-https://www.contributor-covenant.org/faq
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
deleted file mode 100644
index 6d0e656f..00000000
--- a/CONTRIBUTING.md
+++ /dev/null
@@ -1,120 +0,0 @@
-- [Introduction](#introduction)
-- [The contribution process](#the-contribution-process)
- * [Preparing pull requests](#preparing-pull-requests)
- * [Submitting pull requests](#submitting-pull-requests)
-
-## Introduction
-
-
-Welcome to Project MONAI Generative Models! We're excited you're here and want to contribute. This documentation is intended for individuals and institutions interested in contributing to MONAI Generative Models. MONAI Generative Models is an open-source project and, as such, its success relies on its community of contributors willing to keep improving it. Your contribution will be a valued addition to the code base; we simply ask that you read this page and understand our contribution process, whether you are a seasoned open-source contributor or whether you are a first-time contributor.
-
-### Communicate with us
-
-We are happy to talk with you about your needs for MONAI Generative Models and your ideas for contributing to the project. One way to do this is to create an issue discussing your thoughts. It might be that a very similar feature is under development or already exists, so an issue is a great starting point. If you are looking for an issue to resolve that will help Project MONAI Generative Models, see the [*good first issue*](https://github.com/Project-MONAI/GenerativeModels/labels/good%20first%20issue) and [*Contribution wanted*](https://github.com/Project-MONAI/GenerativeModels/labels/Contribution%20wanted) labels.
-
-## The contribution process
-
-_Pull request early_
-
-We encourage you to create pull requests early. It helps us track the contributions under development, whether they are ready to be merged or not. [Create a draft pull request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/changing-the-stage-of-a-pull-request) until it is ready for formal review.
-
-
-### Preparing pull requests
-To ensure the code quality, MONAI Generative Models relies on several linting tools ([flake8 and its plugins](https://gitlab.com/pycqa/flake8), [black](https://github.com/psf/black), [isort](https://github.com/timothycrosley/isort)),
-static type analysis tools ([mypy](https://github.com/python/mypy), [pytype](https://github.com/google/pytype)), as well as a set of unit/integration tests.
-
-This section highlights all the necessary preparation steps required before sending a pull request.
-To collaborate efficiently, please read through this section and follow them.
-
-* [Checking the coding style](#checking-the-coding-style)
-* [Licensing information](#licensing-information)
-* [Exporting modules](#exporting-modules)
-* [Unit testing](#unit-testing)
-
-#### Checking the coding style
->In progress. Please wait for more instructions to follow
-
-To keep the quality of the code, please, install pre-commit using ``pip install pre-commit`` and then configure to use it in this repo with the following command:
-```shell
-pre-commit install
-```
-It is necessary to do it just once. After that, every time you git commit, git runs black and flake8 to organise the code to a standardised format (more information at https://python.plainenglish.io/how-to-set-up-pre-commit-hooks-in-python-ac95fc7d0989).
-
-To check any all files of the project with pre-commit, use:
-```
-cd GenerativeModels
-python -m pre_commit run --all-files
-```
-
-#### Licensing information
-All source code files should start with this paragraph:
-
-```
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-```
-
-#### Exporting modules
-
-If you intend for any variables/functions/classes to be available outside of the file with the edited functionality, then:
-
-- Create or append to the `__all__` variable (in the file in which functionality has been added), and
-- Add to the `__init__.py` file.
-
-#### Unit testing
-MONAI Generative Models tests are located under `tests/`.
-
-- The unit test's file name currently follows `test_[module_name].py` or `test_[module_name]_dist.py`.
-- The `test_[module_name]_dist.py` subset of unit tests requires a distributed environment to verify the module with distributed GPU-based computation.
-- The integration test's file name follows `test_integration_[workflow_name].py`.
-
-A bash script (`runtests.sh`) is provided to run all tests locally.
-Please run ``./runtests.sh -h`` to see all options.
-
-To run a particular test, for example `tests/test_spectral_loss.py`:
-```
-python -m tests.test_spectral_loss
-```
-
-Before submitting a pull request, we recommend that all linting and unit tests
-should pass, by running the following command locally:
-
-```bash
-./runtests.sh -f -u --net
-```
-or (for new features that would not break existing functionality):
-
-```bash
-./runtests.sh --quick --unittests
-```
-
-It is recommended that the new test `test_[module_name].py` is constructed by using only
-python 3.7+ build-in functions, `torch`, `numpy`, `coverage` (for reporting code coverages) and `parameterized` (for organising test cases) packages.
-If it requires any other external packages, please make sure:
-- the packages are listed in [`requirements-dev.txt`](requirements-dev.txt)
-- the new test `test_[module_name].py` is added to the `exclude_cases` in [`./tests/min_tests.py`](./tests/min_tests.py) so that
-the minimal CI runner will not execute it.
-
-
-### Submitting pull requests
-All code changes to the main branch must be done via [pull requests](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/proposing-changes-to-your-work-with-pull-requests).
-1. Create a new ticket or take a known ticket from [the issue list][monai issue list].
-1. Check if there's already a branch dedicated to the task.
-1. If the task has not been taken, [create a new branch from the issue](https://docs.github.com/en/issues/tracking-your-work-with-issues/creating-a-branch-for-an-issue).
-The new branch should be based on the latest `main` branch.
-1. Make changes to the branch ([use detailed commit messages if possible](https://chris.beams.io/posts/git-commit/)).
-1. Make sure that new tests cover the changes and the changed codebase [passes all tests locally](#unit-testing).
-1. [Create a new pull request](https://help.github.com/en/desktop/contributing-to-projects/creating-a-pull-request) from the task branch to the main branch, with detailed descriptions of the purpose of this pull request.
-1. Wait for reviews; if there are reviews, make point-to-point responses, make further code changes if needed.
-1. If there are conflicts between the pull request branch and the main branch, pull the changes from the main and resolve the conflicts locally.
-1. Reviewer and contributor may have discussions back and forth until all comments addressed.
-1. Wait for the pull request to be merged.
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index 261eeb9e..00000000
--- a/LICENSE
+++ /dev/null
@@ -1,201 +0,0 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/README.md b/README.md
deleted file mode 100644
index e68b603c..00000000
--- a/README.md
+++ /dev/null
@@ -1,55 +0,0 @@
-
-
-
-
-# MONAI Generative Models
-Prototyping repository for generative models to be integrated into MONAI core, MONAI tutorials, and MONAI model zoo.
-## Features
-* Network architectures: Diffusion Model, Autoencoder-KL, VQ-VAE, Autoregressive transformers, (Multi-scale) Patch-GAN discriminator.
-* Diffusion Model Noise Schedulers: DDPM, DDIM, and PNDM.
-* Losses: Adversarial losses, Spectral losses, and Perceptual losses (for 2D and 3D data using LPIPS, RadImageNet, and 3DMedicalNet pre-trained models).
-* Metrics: Multi-Scale Structural Similarity Index Measure (MS-SSIM) and Fréchet inception distance (FID).
-* Diffusion Models, Latent Diffusion Models, and VQ-VAE + Transformer Inferers classes (compatible with MONAI style) containing methods to train, sample synthetic images, and obtain the likelihood of inputted data.
-* MONAI-compatible trainer engine (based on Ignite) to train models with reconstruction and adversarial components.
-* Tutorials including:
- * How to train VQ-VAEs, VQ-GANs, VQ-VAE + Transformers, AutoencoderKLs, Diffusion Models, and Latent Diffusion Models on 2D and 3D data.
- * Train diffusion model to perform conditional image generation with classifier-free guidance.
- * Comparison of different diffusion model schedulers.
- * Diffusion models with different parameterizations (e.g., v-prediction and epsilon parameterization).
- * Anomaly Detection using VQ-VAE + Transformers and Diffusion Models.
- * Inpainting with diffusion model (using Repaint method)
- * Super-resolution with Latent Diffusion Models (using Noise Conditioning Augmentation)
-
-## Roadmap
-Our short-term goals are available in the [Milestones](https://github.com/Project-MONAI/GenerativeModels/milestones)
-section of the repository.
-
-In the longer term, we aim to integrate the generative models into the MONAI core repository (supporting tasks such as,
-image synthesis, anomaly detection, MRI reconstruction, domain transfer)
-
-## Installation
-To install MONAI Generative Models, it is recommended to clone the codebase directly:
-```
-git clone https://github.com/Project-MONAI/GenerativeModels.git
-```
-This command will create a GenerativeModels/ folder in your current directory. You can install it by running the following:
-```
-cd GenerativeModels/
-python setup.py install
-```
-
-## Contributing
-For guidance on making a contribution to MONAI, see the [contributing guidelines](https://github.com/Project-MONAI/GenerativeModels/blob/main/CONTRIBUTING.md).
-
-## Community
-Join the conversation on Twitter [@ProjectMONAI](https://twitter.com/ProjectMONAI) or join our [Slack channel](https://forms.gle/QTxJq3hFictp31UM9).
-
-# Citation
-
-If you use MONAI Generative in your research, please cite us! The citation can be exported from [the paper](https://arxiv.org/abs/2307.15208).
-
-## Links
-- Website: https://monai.io/
-- Code: https://github.com/Project-MONAI/GenerativeModels
-- Project tracker: https://github.com/Project-MONAI/GenerativeModels/projects
-- Issue tracker: https://github.com/Project-MONAI/GenerativeModels/issues
diff --git a/generative/__init__.py b/generative/__init__.py
deleted file mode 100644
index b0822e5e..00000000
--- a/generative/__init__.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-from .version import __version__
diff --git a/generative/engines/__init__.py b/generative/engines/__init__.py
deleted file mode 100644
index db22bc23..00000000
--- a/generative/engines/__init__.py
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-from .prepare_batch import DiffusionPrepareBatch, VPredictionPrepareBatch
-from .trainer import AdversarialTrainer
diff --git a/generative/engines/prepare_batch.py b/generative/engines/prepare_batch.py
deleted file mode 100644
index 4f3693a5..00000000
--- a/generative/engines/prepare_batch.py
+++ /dev/null
@@ -1,92 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-from typing import Dict, Mapping, Optional, Union
-
-import torch
-import torch.nn as nn
-from monai.engines import PrepareBatch, default_prepare_batch
-
-
-class DiffusionPrepareBatch(PrepareBatch):
- """
- This class is used as a callable for the `prepare_batch` parameter of engine classes for diffusion training.
-
- Assuming a supervised training process, it will generate a noise field using `get_noise` for an input image, and
- return the image and noise field as the image/target pair plus the noise field the kwargs under the key "noise".
- This assumes the inferer being used in conjunction with this class expects a "noise" parameter to be provided.
-
- If the `condition_name` is provided, this must refer to a key in the input dictionary containing the condition
- field to be passed to the inferer. This will appear in the keyword arguments under the key "condition".
-
- """
-
- def __init__(self, num_train_timesteps: int, condition_name: Optional[str] = None) -> None:
- self.condition_name = condition_name
- self.num_train_timesteps = num_train_timesteps
-
- def get_noise(self, images: torch.Tensor) -> torch.Tensor:
- """Returns the noise tensor for input tensor `images`, override this for different noise distributions."""
- return torch.randn_like(images)
-
- def get_timesteps(self, images: torch.Tensor) -> torch.Tensor:
- """Get a timestep, by default this is a random integer between 0 and `self.num_train_timesteps`."""
- return torch.randint(0, self.num_train_timesteps, (images.shape[0],), device=images.device).long()
-
- def get_target(self, images: torch.Tensor, noise: torch.Tensor, timesteps: torch.Tensor) -> torch.Tensor:
- """Return the target for the loss function, this is the `noise` value by default."""
- return noise
-
- def __call__(
- self,
- batchdata: Dict[str, torch.Tensor],
- device: Optional[Union[str, torch.device]] = None,
- non_blocking: bool = False,
- **kwargs,
- ):
- images, _ = default_prepare_batch(batchdata, device, non_blocking, **kwargs)
- noise = self.get_noise(images).to(device, non_blocking=non_blocking, **kwargs)
- timesteps = self.get_timesteps(images).to(device, non_blocking=non_blocking, **kwargs)
-
- target = self.get_target(images, noise, timesteps).to(device, non_blocking=non_blocking, **kwargs)
- infer_kwargs = {"noise": noise, "timesteps": timesteps}
-
- if self.condition_name is not None and isinstance(batchdata, Mapping):
- infer_kwargs["conditioning"] = batchdata[self.condition_name].to(
- device, non_blocking=non_blocking, **kwargs
- )
-
- # return input, target, arguments, and keyword arguments where noise is the target and also a keyword value
- return images, target, (), infer_kwargs
-
-
-class VPredictionPrepareBatch(DiffusionPrepareBatch):
- """
- This class is used as a callable for the `prepare_batch` parameter of engine classes for diffusion training.
-
- Assuming a supervised training process, it will generate a noise field using `get_noise` for an input image, and
- from this compute the velocity using the provided scheduler. This value is used as the target in place of the
- noise field itself although the noise is field is in the kwargs under the key "noise". This assumes the inferer
- being used in conjunction with this class expects a "noise" parameter to be provided.
-
- If the `condition_name` is provided, this must refer to a key in the input dictionary containing the condition
- field to be passed to the inferer. This will appear in the keyword arguments under the key "condition".
-
- """
-
- def __init__(self, scheduler: nn.Module, num_train_timesteps: int, condition_name: Optional[str] = None) -> None:
- super().__init__(num_train_timesteps=num_train_timesteps, condition_name=condition_name)
- self.scheduler = scheduler
-
- def get_target(self, images, noise, timesteps):
- return self.scheduler.get_velocity(images, noise, timesteps)
diff --git a/generative/engines/trainer.py b/generative/engines/trainer.py
deleted file mode 100644
index 345e3c0c..00000000
--- a/generative/engines/trainer.py
+++ /dev/null
@@ -1,318 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-from typing import TYPE_CHECKING, Any, Callable, Iterable, Sequence
-
-import torch
-from monai.config import IgniteInfo
-from monai.engines.trainer import Trainer
-from monai.engines.utils import CommonKeys as Keys
-from monai.engines.utils import default_metric_cmp_fn, default_prepare_batch
-from monai.inferers import Inferer, SimpleInferer
-from monai.transforms import Transform
-from monai.utils import min_version, optional_import
-from torch.optim.optimizer import Optimizer
-from torch.utils.data import DataLoader
-
-from generative.utils import AdversarialIterationEvents, AdversarialKeys
-
-if TYPE_CHECKING:
- from ignite.engine import EventEnum
- from ignite.metrics import Metric
-else:
- Engine, _ = optional_import("ignite.engine", IgniteInfo.OPT_IMPORT_VERSION, min_version, "Engine")
- Metric, _ = optional_import("ignite.metrics", IgniteInfo.OPT_IMPORT_VERSION, min_version, "Metric")
- EventEnum, _ = optional_import("ignite.engine", IgniteInfo.OPT_IMPORT_VERSION, min_version, "EventEnum")
-
-__all__ = ["AdversarialTrainer"]
-
-
-class AdversarialTrainer(Trainer):
- """
- Standard supervised training workflow for adversarial loss enabled neural networks.
-
- Args:
- device: an object representing the device on which to run.
- max_epochs: the total epoch number for engine to run.
- train_data_loader: Core ignite engines uses `DataLoader` for training loop batchdata.
- g_network: ''generator'' (G) network architecture.
- g_optimizer: G optimizer function.
- g_loss_function: G loss function for adversarial training.
- recon_loss_function: G loss function for reconstructions.
- d_network: discriminator (D) network architecture.
- d_optimizer: D optimizer function.
- d_loss_function: D loss function for adversarial training..
- epoch_length: number of iterations for one epoch, default to `len(train_data_loader)`.
- non_blocking: if True and this copy is between CPU and GPU, the copy may occur asynchronously with respect to
- the host. For other cases, this argument has no effect.
- prepare_batch: function to parse image and label for current iteration.
- iteration_update: the callable function for every iteration, expect to accept `engine` and `batchdata` as input
- parameters. if not provided, use `self._iteration()` instead.
- g_inferer: inference method to execute G model forward. Defaults to ``SimpleInferer()``.
- d_inferer: inference method to execute D model forward. Defaults to ``SimpleInferer()``.
- postprocessing: execute additional transformation for the model output data. Typically, several Tensor based
- transforms composed by `Compose`. Defaults to None
- key_train_metric: compute metric when every iteration completed, and save average value to engine.state.metrics
- when epoch completed. key_train_metric is the main metric to compare and save the checkpoint into files.
- additional_metrics: more Ignite metrics that also attach to Ignite Engine.
- metric_cmp_fn: function to compare current key metric with previous best key metric value, it must accept 2 args
- (current_metric, previous_best) and return a bool result: if `True`, will update 'best_metric` and
- `best_metric_epoch` with current metric and epoch, default to `greater than`.
- train_handlers: every handler is a set of Ignite Event-Handlers, must have `attach` function, like:
- CheckpointHandler, StatsHandler, etc.
- amp: whether to enable auto-mixed-precision training, default is False.
- event_names: additional custom ignite events that will register to the engine.
- new events can be a list of str or `ignite.engine.events.EventEnum`.
- event_to_attr: a dictionary to map an event to a state attribute, then add to `engine.state`.
- for more details, check: https://pytorch.org/ignite/generated/ignite.engine.engine.Engine.html
- #ignite.engine.engine.Engine.register_events.
- decollate: whether to decollate the batch-first data to a list of data after model computation, recommend
- `decollate=True` when `postprocessing` uses components from `monai.transforms`. default to `True`.
- optim_set_to_none: when calling `optimizer.zero_grad()`, instead of setting to zero, set the grads to None.
- more details: https://pytorch.org/docs/stable/generated/torch.optim.Optimizer.zero_grad.html.
- to_kwargs: dict of other args for `prepare_batch` API when converting the input data, except for
- `device`, `non_blocking`.
- amp_kwargs: dict of the args for `torch.cuda.amp.autocast()` API, for more details:
- https://pytorch.org/docs/stable/amp.html#torch.cuda.amp.autocast.
- """
-
- def __init__(
- self,
- device: torch.device | str,
- max_epochs: int,
- train_data_loader: Iterable | DataLoader,
- g_network: torch.nn.Module,
- g_optimizer: Optimizer,
- g_loss_function: Callable,
- recon_loss_function: Callable,
- d_network: torch.nn.Module,
- d_optimizer: Optimizer,
- d_loss_function: Callable,
- epoch_length: int | None = None,
- non_blocking: bool = False,
- prepare_batch: Callable[[Engine, Any], Any] | None = default_prepare_batch,
- iteration_update: Callable | None = None,
- g_inferer: Inferer | None = None,
- d_inferer: Inferer | None = None,
- postprocessing: Transform | None = None,
- key_train_metric: dict[str, Metric] | None = None,
- additional_metrics: dict[str, Metric] | None = None,
- metric_cmp_fn: Callable = default_metric_cmp_fn,
- train_handlers: Sequence | None = None,
- amp: bool = False,
- event_names: list[str | EventEnum] | None = None,
- event_to_attr: dict | None = None,
- decollate: bool = True,
- optim_set_to_none: bool = False,
- to_kwargs: dict | None = None,
- amp_kwargs: dict | None = None,
- ):
- super().__init__(
- device=device,
- max_epochs=max_epochs,
- data_loader=train_data_loader,
- epoch_length=epoch_length,
- non_blocking=non_blocking,
- prepare_batch=prepare_batch,
- iteration_update=iteration_update,
- postprocessing=postprocessing,
- key_metric=key_train_metric,
- additional_metrics=additional_metrics,
- metric_cmp_fn=metric_cmp_fn,
- handlers=train_handlers,
- amp=amp,
- event_names=event_names,
- event_to_attr=event_to_attr,
- decollate=decollate,
- to_kwargs=to_kwargs,
- amp_kwargs=amp_kwargs,
- )
-
- self.register_events(*AdversarialIterationEvents)
-
- self.state.g_network = g_network
- self.state.g_optimizer = g_optimizer
- self.state.g_loss_function = g_loss_function
- self.state.recon_loss_function = recon_loss_function
-
- self.state.d_network = d_network
- self.state.d_optimizer = d_optimizer
- self.state.d_loss_function = d_loss_function
-
- self.g_inferer = SimpleInferer() if g_inferer is None else g_inferer
- self.d_inferer = SimpleInferer() if d_inferer is None else d_inferer
-
- self.state.g_scaler = torch.cuda.amp.GradScaler() if self.amp else None
- self.state.d_scaler = torch.cuda.amp.GradScaler() if self.amp else None
-
- self.optim_set_to_none = optim_set_to_none
- self._complete_state_dict_user_keys()
-
- def _complete_state_dict_user_keys(self) -> None:
- """
- This method appends to the _state_dict_user_keys AdversarialTrainer's elements that are required for
- checkpoint saving.
-
- Follows the example found at:
- https://pytorch.org/ignite/generated/ignite.engine.engine.Engine.html#ignite.engine.engine.Engine.state_dict
- """
- self._state_dict_user_keys.extend(
- ["g_network", "g_optimizer", "d_network", "d_optimizer", "g_scaler", "d_scaler"]
- )
-
- g_loss_state_dict = getattr(self.state.g_loss_function, "state_dict", None)
- if callable(g_loss_state_dict):
- self._state_dict_user_keys.append("g_loss_function")
-
- d_loss_state_dict = getattr(self.state.d_loss_function, "state_dict", None)
- if callable(d_loss_state_dict):
- self._state_dict_user_keys.append("d_loss_function")
-
- recon_loss_state_dict = getattr(self.state.recon_loss_function, "state_dict", None)
- if callable(recon_loss_state_dict):
- self._state_dict_user_keys.append("recon_loss_function")
-
- def _iteration(
- self, engine: AdversarialTrainer, batchdata: dict[str, torch.Tensor]
- ) -> dict[str, torch.Tensor | int | float | bool]:
- """
- Callback function for the Adversarial Training processing logic of 1 iteration in Ignite Engine.
- Return below items in a dictionary:
- - IMAGE: image Tensor data for model input, already moved to device.
- - LABEL: label Tensor data corresponding to the image, already moved to device. In case of Unsupervised
- Learning this is equal to IMAGE.
- - PRED: prediction result of model.
- - LOSS: loss value computed by loss functions of the generator (reconstruction and adversarial summed up).
- - AdversarialKeys.REALS: real images from the batch. Are the same as IMAGE.
- - AdversarialKeys.FAKES: fake images generated by the generator. Are the same as PRED.
- - AdversarialKeys.REAL_LOGITS: logits of the discriminator for the real images.
- - AdversarialKeys.FAKE_LOGITS: logits of the discriminator for the fake images.
- - AdversarialKeys.RECONSTRUCTION_LOSS: loss value computed by the reconstruction loss function.
- - AdversarialKeys.GENERATOR_LOSS: loss value computed by the generator loss function. It is the
- discriminator loss for the fake images. That is backpropagated through the generator only.
- - AdversarialKeys.DISCRIMINATOR_LOSS: loss value computed by the discriminator loss function. It is the
- discriminator loss for the real images and the fake images. That is backpropagated through the
- discriminator only.
-
- Args:
- engine: `AdversarialTrainer` to execute operation for an iteration.
- batchdata: input data for this iteration, usually can be dictionary or tuple of Tensor data.
-
- Raises:
- ValueError: must provide batch data for current iteration.
-
- """
-
- if batchdata is None:
- raise ValueError("Must provide batch data for current iteration.")
- batch = engine.prepare_batch(batchdata, engine.state.device, engine.non_blocking, **engine.to_kwargs)
-
- if len(batch) == 2:
- inputs, targets = batch
- args: tuple = ()
- kwargs: dict = {}
- else:
- inputs, targets, args, kwargs = batch
-
- engine.state.output = {Keys.IMAGE: inputs, Keys.LABEL: targets, AdversarialKeys.REALS: inputs}
-
- def _compute_generator_loss() -> None:
- # TODO: Have a callable functions that process the input to the networks/losses such that peculiar outputs
- # are handled properly
- engine.state.output[AdversarialKeys.FAKES] = engine.g_inferer(
- inputs, engine.state.g_network, *args, **kwargs
- )
- engine.state.output[Keys.PRED] = engine.state.output[AdversarialKeys.FAKES]
- engine.fire_event(AdversarialIterationEvents.GENERATOR_FORWARD_COMPLETED)
-
- engine.state.output[AdversarialKeys.FAKE_LOGITS] = engine.d_inferer(
- engine.state.output[AdversarialKeys.FAKES].float().contiguous(), engine.state.d_network, *args, **kwargs
- )
- engine.fire_event(AdversarialIterationEvents.GENERATOR_DISCRIMINATOR_FORWARD_COMPLETED)
-
- engine.state.output[AdversarialKeys.RECONSTRUCTION_LOSS] = engine.state.recon_loss_function(
- engine.state.output[AdversarialKeys.FAKES], targets
- ).mean()
- engine.fire_event(AdversarialIterationEvents.RECONSTRUCTION_LOSS_COMPLETED)
-
- engine.state.output[AdversarialKeys.GENERATOR_LOSS] = engine.state.g_loss_function(
- engine.state.output[AdversarialKeys.FAKE_LOGITS]
- ).mean()
- engine.fire_event(AdversarialIterationEvents.GENERATOR_LOSS_COMPLETED)
-
- # Train Generator
- engine.state.g_network.train()
- engine.state.g_optimizer.zero_grad(set_to_none=engine.optim_set_to_none)
-
- if engine.amp and engine.g_scaler is not None:
- with torch.cuda.amp.autocast(**engine.amp_kwargs):
- _compute_generator_loss()
-
- engine.state.output[Keys.LOSS] = (
- engine.state.output[AdversarialKeys.RECONSTRUCTION_LOSS]
- + engine.state.output[AdversarialKeys.GENERATOR_LOSS]
- )
- engine.state.g_scaler.scale(engine.state.output[Keys.LOSS]).backward()
- engine.fire_event(AdversarialIterationEvents.GENERATOR_BACKWARD_COMPLETED)
- engine.state.g_scaler.step(engine.state.g_optimizer)
- engine.state.g_scaler.update()
- else:
- _compute_generator_loss()
- (
- engine.state.output[AdversarialKeys.RECONSTRUCTION_LOSS]
- + engine.state.output[AdversarialKeys.GENERATOR_LOSS]
- ).backward()
- engine.fire_event(AdversarialIterationEvents.GENERATOR_BACKWARD_COMPLETED)
- engine.state.g_optimizer.step()
- engine.fire_event(AdversarialIterationEvents.GENERATOR_MODEL_COMPLETED)
-
- def _compute_discriminator_loss() -> None:
- engine.state.output[AdversarialKeys.REAL_LOGITS] = engine.d_inferer(
- engine.state.output[AdversarialKeys.REALS].contiguous().detach(),
- engine.state.d_network,
- *args,
- **kwargs,
- )
- engine.fire_event(AdversarialIterationEvents.DISCRIMINATOR_REALS_FORWARD_COMPLETED)
-
- engine.state.output[AdversarialKeys.FAKE_LOGITS] = engine.d_inferer(
- engine.state.output[AdversarialKeys.FAKES].contiguous().detach(),
- engine.state.d_network,
- *args,
- **kwargs,
- )
- engine.fire_event(AdversarialIterationEvents.DISCRIMINATOR_FAKES_FORWARD_COMPLETED)
-
- engine.state.output[AdversarialKeys.DISCRIMINATOR_LOSS] = engine.state.d_loss_function(
- engine.state.output[AdversarialKeys.REAL_LOGITS], engine.state.output[AdversarialKeys.FAKE_LOGITS]
- ).mean()
- engine.fire_event(AdversarialIterationEvents.DISCRIMINATOR_LOSS_COMPLETED)
-
- # Train Discriminator
- engine.state.d_network.train()
- engine.state.d_network.zero_grad(set_to_none=engine.optim_set_to_none)
-
- if engine.amp and engine.d_scaler is not None:
- with torch.cuda.amp.autocast(**engine.amp_kwargs):
- _compute_discriminator_loss()
-
- engine.state.d_scaler.scale(engine.state.output[AdversarialKeys.DISCRIMINATOR_LOSS]).backward()
- engine.fire_event(AdversarialIterationEvents.DISCRIMINATOR_BACKWARD_COMPLETED)
- engine.state.d_scaler.step(engine.state.d_optimizer)
- engine.state.d_scaler.update()
- else:
- _compute_discriminator_loss()
- engine.state.output[AdversarialKeys.DISCRIMINATOR_LOSS].backward()
- engine.state.d_optimizer.step()
-
- return engine.state.output
diff --git a/generative/inferers/__init__.py b/generative/inferers/__init__.py
deleted file mode 100644
index e6402093..00000000
--- a/generative/inferers/__init__.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-from .inferer import DiffusionInferer, LatentDiffusionInferer, VQVAETransformerInferer
diff --git a/generative/inferers/inferer.py b/generative/inferers/inferer.py
deleted file mode 100644
index 37229b49..00000000
--- a/generative/inferers/inferer.py
+++ /dev/null
@@ -1,683 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-import math
-from collections.abc import Callable, Sequence
-
-import torch
-import torch.nn as nn
-import torch.nn.functional as F
-from monai.inferers import Inferer
-from monai.utils import optional_import
-from monai.transforms import SpatialPad, CenterSpatialCrop
-
-tqdm, has_tqdm = optional_import("tqdm", name="tqdm")
-
-class DiffusionInferer(Inferer):
- """
- DiffusionInferer takes a trained diffusion model and a scheduler and can be used to perform a signal forward pass
- for a training iteration, and sample from the model.
-
-
- Args:
- scheduler: diffusion scheduler.
- """
-
- def __init__(self, scheduler: nn.Module) -> None:
- Inferer.__init__(self)
- self.scheduler = scheduler
-
- def __call__(
- self,
- inputs: torch.Tensor,
- diffusion_model: Callable[..., torch.Tensor],
- noise: torch.Tensor,
- timesteps: torch.Tensor,
- condition: torch.Tensor | None = None,
- mode: str = "crossattn",
- ) -> torch.Tensor:
- """
- Implements the forward pass for a supervised training iteration.
-
- Args:
- inputs: Input image to which noise is added.
- diffusion_model: diffusion model.
- noise: random noise, of the same shape as the input.
- timesteps: random timesteps.
- condition: Conditioning for network input.
- mode: Conditioning mode for the network.
- """
- if mode not in ["crossattn", "concat"]:
- raise NotImplementedError(f"{mode} condition is not supported")
-
- noisy_image = self.scheduler.add_noise(original_samples=inputs, noise=noise, timesteps=timesteps)
- if mode == "concat":
- noisy_image = torch.cat([noisy_image, condition], dim=1)
- condition = None
- prediction = diffusion_model(x=noisy_image, timesteps=timesteps, context=condition)
-
- return prediction
-
- @torch.no_grad()
- def sample(
- self,
- input_noise: torch.Tensor,
- diffusion_model: Callable[..., torch.Tensor],
- scheduler: Callable[..., torch.Tensor] | None = None,
- save_intermediates: bool | None = False,
- intermediate_steps: int | None = 100,
- conditioning: torch.Tensor | None = None,
- mode: str = "crossattn",
- verbose: bool = True,
- ) -> torch.Tensor | tuple[torch.Tensor, list[torch.Tensor]]:
- """
- Args:
- input_noise: random noise, of the same shape as the desired sample.
- diffusion_model: model to sample from.
- scheduler: diffusion scheduler. If none provided will use the class attribute scheduler
- save_intermediates: whether to return intermediates along the sampling change
- intermediate_steps: if save_intermediates is True, saves every n steps
- conditioning: Conditioning for network input.
- mode: Conditioning mode for the network.
- verbose: if true, prints the progression bar of the sampling process.
- """
- if mode not in ["crossattn", "concat"]:
- raise NotImplementedError(f"{mode} condition is not supported")
-
- if not scheduler:
- scheduler = self.scheduler
- image = input_noise
- if verbose and has_tqdm:
- progress_bar = tqdm(scheduler.timesteps)
- else:
- progress_bar = iter(scheduler.timesteps)
- intermediates = []
- for t in progress_bar:
- # 1. predict noise model_output
- if mode == "concat":
- model_input = torch.cat([image, conditioning], dim=1)
- model_output = diffusion_model(
- model_input, timesteps=torch.Tensor((t,)).to(input_noise.device), context=None
- )
- else:
- model_output = diffusion_model(
- image, timesteps=torch.Tensor((t,)).to(input_noise.device), context=conditioning
- )
-
- # 2. compute previous image: x_t -> x_t-1
- image, _ = scheduler.step(model_output, t, image)
- if save_intermediates and t % intermediate_steps == 0:
- intermediates.append(image)
- if save_intermediates:
- return image, intermediates
- else:
- return image
-
- @torch.no_grad()
- def get_likelihood(
- self,
- inputs: torch.Tensor,
- diffusion_model: Callable[..., torch.Tensor],
- scheduler: Callable[..., torch.Tensor] | None = None,
- save_intermediates: bool | None = False,
- conditioning: torch.Tensor | None = None,
- mode: str = "crossattn",
- original_input_range: tuple | None = (0, 255),
- scaled_input_range: tuple | None = (0, 1),
- verbose: bool = True,
- ) -> torch.Tensor | tuple[torch.Tensor, list[torch.Tensor]]:
- """
- Computes the log-likelihoods for an input.
-
- Args:
- inputs: input images, NxCxHxW[xD]
- diffusion_model: model to compute likelihood from
- scheduler: diffusion scheduler. If none provided will use the class attribute scheduler.
- save_intermediates: save the intermediate spatial KL maps
- conditioning: Conditioning for network input.
- mode: Conditioning mode for the network.
- original_input_range: the [min,max] intensity range of the input data before any scaling was applied.
- scaled_input_range: the [min,max] intensity range of the input data after scaling.
- verbose: if true, prints the progression bar of the sampling process.
- """
-
- if not scheduler:
- scheduler = self.scheduler
- if scheduler._get_name() != "DDPMScheduler":
- raise NotImplementedError(
- f"Likelihood computation is only compatible with DDPMScheduler,"
- f" you are using {scheduler._get_name()}"
- )
- if mode not in ["crossattn", "concat"]:
- raise NotImplementedError(f"{mode} condition is not supported")
- if verbose and has_tqdm:
- progress_bar = tqdm(scheduler.timesteps)
- else:
- progress_bar = iter(scheduler.timesteps)
- intermediates = []
- noise = torch.randn_like(inputs).to(inputs.device)
- total_kl = torch.zeros(inputs.shape[0]).to(inputs.device)
- for t in progress_bar:
- timesteps = torch.full(inputs.shape[:1], t, device=inputs.device).long()
- noisy_image = self.scheduler.add_noise(original_samples=inputs, noise=noise, timesteps=timesteps)
- if mode == "concat":
- noisy_image = torch.cat([noisy_image, conditioning], dim=1)
- model_output = diffusion_model(noisy_image, timesteps=timesteps, context=None)
- else:
- model_output = diffusion_model(x=noisy_image, timesteps=timesteps, context=conditioning)
- # get the model's predicted mean, and variance if it is predicted
- if model_output.shape[1] == inputs.shape[1] * 2 and scheduler.variance_type in ["learned", "learned_range"]:
- model_output, predicted_variance = torch.split(model_output, inputs.shape[1], dim=1)
- else:
- predicted_variance = None
-
- # 1. compute alphas, betas
- alpha_prod_t = scheduler.alphas_cumprod[t]
- alpha_prod_t_prev = scheduler.alphas_cumprod[t - 1] if t > 0 else scheduler.one
- beta_prod_t = 1 - alpha_prod_t
- beta_prod_t_prev = 1 - alpha_prod_t_prev
-
- # 2. compute predicted original sample from predicted noise also called
- # "predicted x_0" of formula (15) from https://arxiv.org/pdf/2006.11239.pdf
- if scheduler.prediction_type == "epsilon":
- pred_original_sample = (noisy_image - beta_prod_t ** (0.5) * model_output) / alpha_prod_t ** (0.5)
- elif scheduler.prediction_type == "sample":
- pred_original_sample = model_output
- elif scheduler.prediction_type == "v_prediction":
- pred_original_sample = (alpha_prod_t**0.5) * noisy_image - (beta_prod_t**0.5) * model_output
- # 3. Clip "predicted x_0"
- if scheduler.clip_sample:
- pred_original_sample = torch.clamp(pred_original_sample, -1, 1)
-
- # 4. Compute coefficients for pred_original_sample x_0 and current sample x_t
- # See formula (7) from https://arxiv.org/pdf/2006.11239.pdf
- pred_original_sample_coeff = (alpha_prod_t_prev ** (0.5) * scheduler.betas[t]) / beta_prod_t
- current_sample_coeff = scheduler.alphas[t] ** (0.5) * beta_prod_t_prev / beta_prod_t
-
- # 5. Compute predicted previous sample µ_t
- # See formula (7) from https://arxiv.org/pdf/2006.11239.pdf
- predicted_mean = pred_original_sample_coeff * pred_original_sample + current_sample_coeff * noisy_image
-
- # get the posterior mean and variance
- posterior_mean = scheduler._get_mean(timestep=t, x_0=inputs, x_t=noisy_image)
- posterior_variance = scheduler._get_variance(timestep=t, predicted_variance=predicted_variance)
-
- log_posterior_variance = torch.log(posterior_variance)
- log_predicted_variance = torch.log(predicted_variance) if predicted_variance else log_posterior_variance
-
- if t == 0:
- # compute -log p(x_0|x_1)
- kl = -self._get_decoder_log_likelihood(
- inputs=inputs,
- means=predicted_mean,
- log_scales=0.5 * log_predicted_variance,
- original_input_range=original_input_range,
- scaled_input_range=scaled_input_range,
- )
- else:
- # compute kl between two normals
- kl = 0.5 * (
- -1.0
- + log_predicted_variance
- - log_posterior_variance
- + torch.exp(log_posterior_variance - log_predicted_variance)
- + ((posterior_mean - predicted_mean) ** 2) * torch.exp(-log_predicted_variance)
- )
- total_kl += kl.view(kl.shape[0], -1).mean(axis=1)
- if save_intermediates:
- intermediates.append(kl.cpu())
-
- if save_intermediates:
- return total_kl, intermediates
- else:
- return total_kl
-
- def _approx_standard_normal_cdf(self, x):
- """
- A fast approximation of the cumulative distribution function of the
- standard normal. Code adapted from https://github.com/openai/improved-diffusion.
- """
-
- return 0.5 * (
- 1.0 + torch.tanh(torch.sqrt(torch.Tensor([2.0 / math.pi]).to(x.device)) * (x + 0.044715 * torch.pow(x, 3)))
- )
-
- def _get_decoder_log_likelihood(
- self,
- inputs: torch.Tensor,
- means: torch.Tensor,
- log_scales: torch.Tensor,
- original_input_range: tuple | None = (0, 255),
- scaled_input_range: tuple | None = (0, 1),
- ) -> torch.Tensor:
- """
- Compute the log-likelihood of a Gaussian distribution discretizing to a
- given image. Code adapted from https://github.com/openai/improved-diffusion.
-
- Args:
- input: the target images. It is assumed that this was uint8 values,
- rescaled to the range [-1, 1].
- means: the Gaussian mean Tensor.
- log_scales: the Gaussian log stddev Tensor.
- original_input_range: the [min,max] intensity range of the input data before any scaling was applied.
- scaled_input_range: the [min,max] intensity range of the input data after scaling.
- """
- assert inputs.shape == means.shape
- bin_width = (scaled_input_range[1] - scaled_input_range[0]) / (
- original_input_range[1] - original_input_range[0]
- )
- centered_x = inputs - means
- inv_stdv = torch.exp(-log_scales)
- plus_in = inv_stdv * (centered_x + bin_width / 2)
- cdf_plus = self._approx_standard_normal_cdf(plus_in)
- min_in = inv_stdv * (centered_x - bin_width / 2)
- cdf_min = self._approx_standard_normal_cdf(min_in)
- log_cdf_plus = torch.log(cdf_plus.clamp(min=1e-12))
- log_one_minus_cdf_min = torch.log((1.0 - cdf_min).clamp(min=1e-12))
- cdf_delta = cdf_plus - cdf_min
- log_probs = torch.where(
- inputs < -0.999,
- log_cdf_plus,
- torch.where(inputs > 0.999, log_one_minus_cdf_min, torch.log(cdf_delta.clamp(min=1e-12))),
- )
- assert log_probs.shape == inputs.shape
- return log_probs
-
-class LatentDiffusionInferer(DiffusionInferer):
- """
- LatentDiffusionInferer takes a stage 1 model (VQVAE or AutoencoderKL), diffusion model, and a scheduler, and can
- be used to perform a signal forward pass for a training iteration, and sample from the model.
-
- Args:
- scheduler: a scheduler to be used in combination with `unet` to denoise the encoded image latents.
- scale_factor: scale factor to multiply the values of the latent representation before processing it by the
- second stage.
- ldm_latent_shape: desired spatial latent space shape. Used if there is a difference in the autoencoder model's latent shape.
- autoencoder_latent_shape: autoencoder_latent_shape: autoencoder spatial latent space shape. Used if there is a difference between the autoencoder's latent shape and the DM shape.
- """
-
- def __init__(self, scheduler: nn.Module, scale_factor: float = 1.0,
- ldm_latent_shape: list | None = None,
- autoencoder_latent_shape: list | None = None) -> None:
-
- super().__init__(scheduler=scheduler)
- self.scale_factor = scale_factor
- if (ldm_latent_shape is None) ^ (autoencoder_latent_shape is None):
- raise ValueError("If ldm_latent_shape is None, autoencoder_latent_shape must be None"
- "and vice versa.")
- self.ldm_latent_shape = ldm_latent_shape
- self.autoencoder_latent_shape = autoencoder_latent_shape
- if self.ldm_latent_shape is not None:
- self.ldm_resizer = SpatialPad(spatial_size=[-1,]+self.ldm_latent_shape)
- self.autoencoder_resizer = CenterSpatialCrop(roi_size=[-1,]+self.autoencoder_latent_shape)
-
- def __call__(
- self,
- inputs: torch.Tensor,
- autoencoder_model: Callable[..., torch.Tensor],
- diffusion_model: Callable[..., torch.Tensor],
- noise: torch.Tensor,
- timesteps: torch.Tensor,
- condition: torch.Tensor | None = None,
- mode: str = "crossattn",
- ) -> torch.Tensor:
- """
- Implements the forward pass for a supervised training iteration.
-
- Args:
- inputs: input image to which the latent representation will be extracted and noise is added.
- autoencoder_model: first stage model.
- diffusion_model: diffusion model.
- noise: random noise, of the same shape as the latent representation.
- timesteps: random timesteps.
- condition: conditioning for network input.
- mode: Conditioning mode for the network.
- """
- with torch.no_grad():
- latent = autoencoder_model.encode_stage_2_inputs(inputs) * self.scale_factor
-
- if self.ldm_latent_shape is not None:
- latent = self.ldm_resizer(latent)
-
- prediction = super().__call__(
- inputs=latent,
- diffusion_model=diffusion_model,
- noise=noise,
- timesteps=timesteps,
- condition=condition,
- mode=mode,
- )
-
- return prediction
-
- @torch.no_grad()
- def sample(
- self,
- input_noise: torch.Tensor,
- autoencoder_model: Callable[..., torch.Tensor],
- diffusion_model: Callable[..., torch.Tensor],
- scheduler: Callable[..., torch.Tensor] | None = None,
- save_intermediates: bool | None = False,
- intermediate_steps: int | None = 100,
- conditioning: torch.Tensor | None = None,
- mode: str = "crossattn",
- verbose: bool = True,
- ) -> torch.Tensor | tuple[torch.Tensor, list[torch.Tensor]]:
- """
- Args:
- input_noise: random noise, of the same shape as the desired latent representation.
- autoencoder_model: first stage model.
- diffusion_model: model to sample from.
- scheduler: diffusion scheduler. If none provided will use the class attribute scheduler.
- save_intermediates: whether to return intermediates along the sampling change
- intermediate_steps: if save_intermediates is True, saves every n steps
- conditioning: Conditioning for network input.
- mode: Conditioning mode for the network.
- verbose: if true, prints the progression bar of the sampling process.
- """
- outputs = super().sample(
- input_noise=input_noise,
- diffusion_model=diffusion_model,
- scheduler=scheduler,
- save_intermediates=save_intermediates,
- intermediate_steps=intermediate_steps,
- conditioning=conditioning,
- mode=mode,
- verbose=verbose,
- )
-
- if save_intermediates:
- latent, latent_intermediates = outputs
- else:
- latent = outputs
-
- if self.ldm_latent_shape is not None:
- latent = self.autoencoder_resizer(latent)
- latent_intermediates = [self.autoencoder_resizer(l) for l in latent_intermediates]
-
- image = autoencoder_model.decode_stage_2_outputs(latent / self.scale_factor)
-
- if save_intermediates:
- intermediates = []
- for latent_intermediate in latent_intermediates:
- intermediates.append(autoencoder_model.decode_stage_2_outputs(latent_intermediate / self.scale_factor))
- return image, intermediates
-
- else:
- return image
-
- @torch.no_grad()
- def get_likelihood(
- self,
- inputs: torch.Tensor,
- autoencoder_model: Callable[..., torch.Tensor],
- diffusion_model: Callable[..., torch.Tensor],
- scheduler: Callable[..., torch.Tensor] | None = None,
- save_intermediates: bool | None = False,
- conditioning: torch.Tensor | None = None,
- mode: str = "crossattn",
- original_input_range: tuple | None = (0, 255),
- scaled_input_range: tuple | None = (0, 1),
- verbose: bool = True,
- resample_latent_likelihoods: bool = False,
- resample_interpolation_mode: str = "nearest",
- ) -> torch.Tensor | tuple[torch.Tensor, list[torch.Tensor]]:
- """
- Computes the log-likelihoods of the latent representations of the input.
-
- Args:
- inputs: input images, NxCxHxW[xD]
- autoencoder_model: first stage model.
- diffusion_model: model to compute likelihood from
- scheduler: diffusion scheduler. If none provided will use the class attribute scheduler
- save_intermediates: save the intermediate spatial KL maps
- conditioning: Conditioning for network input.
- mode: Conditioning mode for the network.
- original_input_range: the [min,max] intensity range of the input data before any scaling was applied.
- scaled_input_range: the [min,max] intensity range of the input data after scaling.
- verbose: if true, prints the progression bar of the sampling process.
- resample_latent_likelihoods: if true, resamples the intermediate likelihood maps to have the same spatial
- dimension as the input images.
- resample_interpolation_mode: if use resample_latent_likelihoods, select interpolation 'nearest', 'bilinear',
- or 'trilinear;
- """
- if resample_latent_likelihoods and resample_interpolation_mode not in ("nearest", "bilinear", "trilinear"):
- raise ValueError(
- f"resample_interpolation mode should be either nearest, bilinear, or trilinear, got {resample_interpolation_mode}"
- )
- latents = autoencoder_model.encode_stage_2_inputs(inputs) * self.scale_factor
-
- if self.ldm_latent_shape is not None:
- latents = self.ldm_resizer(latents)
-
- outputs = super().get_likelihood(
- inputs=latents,
- diffusion_model=diffusion_model,
- scheduler=scheduler,
- save_intermediates=save_intermediates,
- conditioning=conditioning,
- mode=mode,
- verbose=verbose,
- )
- if save_intermediates and resample_latent_likelihoods:
- intermediates = outputs[1]
- resizer = nn.Upsample(size=inputs.shape[2:], mode=resample_interpolation_mode)
- intermediates = [resizer(x) for x in intermediates]
- outputs = (outputs[0], intermediates)
- return outputs
-
-class VQVAETransformerInferer(Inferer):
- """
- Class to perform inference with a VQVAE + Transformer model.
- """
-
- def __init__(self) -> None:
- Inferer.__init__(self)
-
- def __call__(
- self,
- inputs: torch.Tensor,
- vqvae_model: Callable[..., torch.Tensor],
- transformer_model: Callable[..., torch.Tensor],
- ordering: Callable[..., torch.Tensor],
- condition: torch.Tensor | None = None,
- return_latent: bool = False,
- ) -> torch.Tensor | tuple[torch.Tensor, torch.Tensor, tuple]:
- """
- Implements the forward pass for a supervised training iteration.
-
- Args:
- inputs: input image to which the latent representation will be extracted.
- vqvae_model: first stage model.
- transformer_model: autoregressive transformer model.
- ordering: ordering of the quantised latent representation.
- return_latent: also return latent sequence and spatial dim of the latent.
- condition: conditioning for network input.
- """
- with torch.no_grad():
- latent = vqvae_model.index_quantize(inputs)
-
- latent_spatial_dim = tuple(latent.shape[1:])
- latent = latent.reshape(latent.shape[0], -1)
- latent = latent[:, ordering.get_sequence_ordering()]
-
- # get the targets for the loss
- target = latent.clone()
- # Use the value from vqvae_model's num_embeddings as the starting token, the "Begin Of Sentence" (BOS) token.
- # Note the transformer_model must have vqvae_model.num_embeddings + 1 defined as num_tokens.
- latent = F.pad(latent, (1, 0), "constant", vqvae_model.num_embeddings)
- # crop the last token as we do not need the probability of the token that follows it
- latent = latent[:, :-1]
- latent = latent.long()
-
- # train on a part of the sequence if it is longer than max_seq_length
- seq_len = latent.shape[1]
- max_seq_len = transformer_model.max_seq_len
- if max_seq_len < seq_len:
- start = torch.randint(low=0, high=seq_len + 1 - max_seq_len, size=(1,)).item()
- else:
- start = 0
- prediction = transformer_model(x=latent[:, start : start + max_seq_len], context=condition)
- if return_latent:
- return prediction, target[:, start : start + max_seq_len], latent_spatial_dim
- else:
- return prediction
-
- @torch.no_grad()
- def sample(
- self,
- latent_spatial_dim: Sequence[int, int, int] | Sequence[int, int],
- starting_tokens: torch.Tensor,
- vqvae_model: Callable[..., torch.Tensor],
- transformer_model: Callable[..., torch.Tensor],
- ordering: Callable[..., torch.Tensor],
- conditioning: torch.Tensor | None = None,
- temperature: float = 1.0,
- top_k: int | None = None,
- verbose: bool = True,
- ) -> torch.Tensor:
- """
- Sampling function for the VQVAE + Transformer model.
-
- Args:
- latent_spatial_dim: shape of the sampled image.
- starting_tokens: starting tokens for the sampling. It must be vqvae_model.num_embeddings value.
- vqvae_model: first stage model.
- transformer_model: model to sample from.
- conditioning: Conditioning for network input.
- temperature: temperature for sampling.
- top_k: top k sampling.
- verbose: if true, prints the progression bar of the sampling process.
- """
- seq_len = math.prod(latent_spatial_dim)
-
- if verbose and has_tqdm:
- progress_bar = tqdm(range(seq_len))
- else:
- progress_bar = iter(range(seq_len))
-
- latent_seq = starting_tokens.long()
- for _ in progress_bar:
- # if the sequence context is growing too long we must crop it at block_size
- if latent_seq.size(1) <= transformer_model.max_seq_len:
- idx_cond = latent_seq
- else:
- idx_cond = latent_seq[:, -transformer_model.max_seq_len :]
-
- # forward the model to get the logits for the index in the sequence
- logits = transformer_model(x=idx_cond, context=conditioning)
- # pluck the logits at the final step and scale by desired temperature
- logits = logits[:, -1, :] / temperature
- # optionally crop the logits to only the top k options
- if top_k is not None:
- v, _ = torch.topk(logits, min(top_k, logits.size(-1)))
- logits[logits < v[:, [-1]]] = -float("Inf")
- # apply softmax to convert logits to (normalized) probabilities
- probs = F.softmax(logits, dim=-1)
- # remove the chance to be sampled the BOS token
- probs[:, vqvae_model.num_embeddings] = 0
- # sample from the distribution
- idx_next = torch.multinomial(probs, num_samples=1)
- # append sampled index to the running sequence and continue
- latent_seq = torch.cat((latent_seq, idx_next), dim=1)
-
- latent_seq = latent_seq[:, 1:]
- latent_seq = latent_seq[:, ordering.get_revert_sequence_ordering()]
- latent = latent_seq.reshape((starting_tokens.shape[0],) + latent_spatial_dim)
-
- return vqvae_model.decode_samples(latent)
-
- @torch.no_grad()
- def get_likelihood(
- self,
- inputs: torch.Tensor,
- vqvae_model: Callable[..., torch.Tensor],
- transformer_model: Callable[..., torch.Tensor],
- ordering: Callable[..., torch.Tensor],
- condition: torch.Tensor | None = None,
- resample_latent_likelihoods: bool = False,
- resample_interpolation_mode: str = "nearest",
- verbose: bool = False,
- ) -> torch.Tensor:
- """
- Computes the log-likelihoods of the latent representations of the input.
-
- Args:
- inputs: input images, NxCxHxW[xD]
- vqvae_model: first stage model.
- transformer_model: autoregressive transformer model.
- ordering: ordering of the quantised latent representation.
- condition: conditioning for network input.
- resample_latent_likelihoods: if true, resamples the intermediate likelihood maps to have the same spatial
- dimension as the input images.
- resample_interpolation_mode: if use resample_latent_likelihoods, select interpolation 'nearest', 'bilinear',
- or 'trilinear;
- verbose: if true, prints the progression bar of the sampling process.
-
- """
- if resample_latent_likelihoods and resample_interpolation_mode not in ("nearest", "bilinear", "trilinear"):
- raise ValueError(
- f"resample_interpolation mode should be either nearest, bilinear, or trilinear, got {resample_interpolation_mode}"
- )
-
- with torch.no_grad():
- latent = vqvae_model.index_quantize(inputs)
-
- latent_spatial_dim = tuple(latent.shape[1:])
- latent = latent.reshape(latent.shape[0], -1)
- latent = latent[:, ordering.get_sequence_ordering()]
- seq_len = math.prod(latent_spatial_dim)
-
- # Use the value from vqvae_model's num_embeddings as the starting token, the "Begin Of Sentence" (BOS) token.
- # Note the transformer_model must have vqvae_model.num_embeddings + 1 defined as num_tokens.
- latent = F.pad(latent, (1, 0), "constant", vqvae_model.num_embeddings)
- latent = latent.long()
-
- # get the first batch, up to max_seq_length, efficiently
- logits = transformer_model(x=latent[:, : transformer_model.max_seq_len], context=condition)
- probs = F.softmax(logits, dim=-1)
- # target token for each set of logits is the next token along
- target = latent[:, 1:]
- probs = torch.gather(probs, 2, target[:, : transformer_model.max_seq_len].unsqueeze(2)).squeeze(2)
-
- # if we have not covered the full sequence we continue with inefficient looping
- if probs.shape[1] < target.shape[1]:
- if verbose and has_tqdm:
- progress_bar = tqdm(range(transformer_model.max_seq_len, seq_len))
- else:
- progress_bar = iter(range(transformer_model.max_seq_len, seq_len))
-
- for i in progress_bar:
- idx_cond = latent[:, i + 1 - transformer_model.max_seq_len : i + 1]
- # forward the model to get the logits for the index in the sequence
- logits = transformer_model(x=idx_cond, context=condition)
- # pluck the logits at the final step
- logits = logits[:, -1, :]
- # apply softmax to convert logits to (normalized) probabilities
- p = F.softmax(logits, dim=-1)
- # select correct values and append
- p = torch.gather(p, 1, target[:, i].unsqueeze(1))
-
- probs = torch.cat((probs, p), dim=1)
-
- # convert to log-likelihood
- probs = torch.log(probs)
-
- # reshape
- probs = probs[:, ordering.get_revert_sequence_ordering()]
- probs_reshaped = probs.reshape((inputs.shape[0],) + latent_spatial_dim)
- if resample_latent_likelihoods:
- resizer = nn.Upsample(size=inputs.shape[2:], mode=resample_interpolation_mode)
- probs_reshaped = resizer(probs_reshaped[:, None, ...])
-
- return probs_reshaped
diff --git a/generative/losses/__init__.py b/generative/losses/__init__.py
deleted file mode 100644
index b53c1a41..00000000
--- a/generative/losses/__init__.py
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-from .adversarial_loss import PatchAdversarialLoss
-from .perceptual import PerceptualLoss
-from .spectral_loss import JukeboxLoss
diff --git a/generative/losses/adversarial_loss.py b/generative/losses/adversarial_loss.py
deleted file mode 100644
index fe34432b..00000000
--- a/generative/losses/adversarial_loss.py
+++ /dev/null
@@ -1,170 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-import warnings
-
-import torch
-from monai.networks.layers.utils import get_act_layer
-from monai.utils import LossReduction
-from monai.utils.enums import StrEnum
-from torch.nn.modules.loss import _Loss
-
-
-class AdversarialCriterions(StrEnum):
- BCE = "bce"
- HINGE = "hinge"
- LEAST_SQUARE = "least_squares"
-
-
-class PatchAdversarialLoss(_Loss):
- """
- Calculates an adversarial loss on a Patch Discriminator or a Multi-scale Patch Discriminator.
- Warning: due to the possibility of using different criterions, the output of the discrimination
- mustn't be passed to a final activation layer. That is taken care of internally within the loss.
-
- Args:
- reduction: {``"none"``, ``"mean"``, ``"sum"``} Specifies the reduction to apply to the output.
- Defaults to ``"mean"``.
- - ``"none"``: no reduction will be applied.
- - ``"mean"``: the sum of the output will be divided by the number of elements in the output.
- - ``"sum"``: the output will be summed.
- criterion: which criterion (hinge, least_squares or bce) you want to use on the discriminators outputs.
- Depending on the criterion, a different activation layer will be used. Make sure you don't run the outputs
- through an activation layer prior to calling the loss.
- no_activation_leastsq: if True, the activation layer in the case of least-squares is removed.
- """
-
- def __init__(
- self,
- reduction: LossReduction | str = LossReduction.MEAN,
- criterion: str = AdversarialCriterions.LEAST_SQUARE.value,
- no_activation_leastsq: bool = False,
- ) -> None:
- super().__init__(reduction=LossReduction(reduction).value)
-
- if criterion.lower() not in [m.value for m in AdversarialCriterions]:
- raise ValueError(
- "Unrecognised criterion entered for Adversarial Loss. Must be one in: %s"
- % ", ".join([m.value for m in AdversarialCriterions])
- )
-
- # Depending on the criterion, a different activation layer is used.
- self.real_label = 1.0
- self.fake_label = 0.0
- if criterion == AdversarialCriterions.BCE.value:
- self.activation = get_act_layer("SIGMOID")
- self.loss_fct = torch.nn.BCELoss(reduction=reduction)
- elif criterion == AdversarialCriterions.HINGE.value:
- self.activation = get_act_layer("TANH")
- self.fake_label = -1.0
- elif criterion == AdversarialCriterions.LEAST_SQUARE.value:
- if no_activation_leastsq:
- self.activation = None
- else:
- self.activation = get_act_layer(name=("LEAKYRELU", {"negative_slope": 0.05}))
- self.loss_fct = torch.nn.MSELoss(reduction=reduction)
-
- self.criterion = criterion
- self.reduction = reduction
-
- def get_target_tensor(self, input: torch.FloatTensor, target_is_real: bool) -> torch.Tensor:
- """
- Gets the ground truth tensor for the discriminator depending on whether the input is real or fake.
-
- Args:
- input: input tensor from the discriminator (output of discriminator, or output of one of the multi-scale
- discriminator). This is used to match the shape.
- target_is_real: whether the input is real or wannabe-real (1s) or fake (0s).
- Returns:
- """
- filling_label = self.real_label if target_is_real else self.fake_label
- label_tensor = torch.tensor(1).fill_(filling_label).type(input.type()).to(input[0].device)
- label_tensor.requires_grad_(False)
- return label_tensor.expand_as(input)
-
- def get_zero_tensor(self, input: torch.FloatTensor) -> torch.Tensor:
- """
- Gets a zero tensor.
-
- Args:
- input: tensor which shape you want the zeros tensor to correspond to.
- Returns:
- """
-
- zero_label_tensor = torch.tensor(0).type(input[0].type()).to(input[0].device)
- zero_label_tensor.requires_grad_(False)
- return zero_label_tensor.expand_as(input)
-
- def forward(
- self, input: torch.FloatTensor | list, target_is_real: bool, for_discriminator: bool
- ) -> torch.Tensor | list[torch.Tensor]:
- """
-
- Args:
- input: output of Multi-Scale Patch Discriminator or Patch Discriminator; being a list of
- tensors or a tensor; they shouldn't have gone through an activation layer.
- target_is_real: whereas the input corresponds to discriminator output for real or fake images
- for_discriminator: whereas this is being calculated for discriminator or generator loss. In the last
- case, target_is_real is set to True, as the generator wants the input to be dimmed as real.
- Returns: if reduction is None, returns a list with the loss tensors of each discriminator if multi-scale
- discriminator is active, or the loss tensor if there is just one discriminator. Otherwise, it returns the
- summed or mean loss over the tensor and discriminator/s.
-
- """
-
- if not for_discriminator and not target_is_real:
- target_is_real = True # With generator, we always want this to be true!
- warnings.warn(
- "Variable target_is_real has been set to False, but for_discriminator is set"
- "to False. To optimise a generator, target_is_real must be set to True."
- )
-
- if type(input) is not list:
- input = [input]
- target_ = []
- for _, disc_out in enumerate(input):
- if self.criterion != AdversarialCriterions.HINGE.value:
- target_.append(self.get_target_tensor(disc_out, target_is_real))
- else:
- target_.append(self.get_zero_tensor(disc_out))
-
- # Loss calculation
- loss = []
- for disc_ind, disc_out in enumerate(input):
- if self.activation is not None:
- disc_out = self.activation(disc_out)
- if self.criterion == AdversarialCriterions.HINGE.value and not target_is_real:
- loss_ = self.forward_single(-disc_out, target_[disc_ind])
- else:
- loss_ = self.forward_single(disc_out, target_[disc_ind])
- loss.append(loss_)
-
- if loss is not None:
- if self.reduction == LossReduction.MEAN.value:
- loss = torch.mean(torch.stack(loss))
- elif self.reduction == LossReduction.SUM.value:
- loss = torch.sum(torch.stack(loss))
-
- return loss
-
- def forward_single(self, input: torch.FloatTensor, target: torch.FloatTensor) -> torch.Tensor | None:
- if (
- self.criterion == AdversarialCriterions.BCE.value
- or self.criterion == AdversarialCriterions.LEAST_SQUARE.value
- ):
- return self.loss_fct(input, target)
- elif self.criterion == AdversarialCriterions.HINGE.value:
- minval = torch.min(input - 1, self.get_zero_tensor(input))
- return -torch.mean(minval)
- else:
- return None
diff --git a/generative/losses/perceptual.py b/generative/losses/perceptual.py
deleted file mode 100644
index 8fffb1c8..00000000
--- a/generative/losses/perceptual.py
+++ /dev/null
@@ -1,366 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-import torch
-import torch.nn as nn
-from lpips import LPIPS
-from torchvision.models import ResNet50_Weights, resnet50
-from torchvision.models.feature_extraction import create_feature_extractor
-
-
-class PerceptualLoss(nn.Module):
- """
- Perceptual loss using features from pretrained deep neural networks trained. The function supports networks
- pretrained on: ImageNet that use the LPIPS approach from Zhang, et al. "The unreasonable effectiveness of deep
- features as a perceptual metric." https://arxiv.org/abs/1801.03924 ; RadImagenet from Mei, et al. "RadImageNet: An
- Open Radiologic Deep Learning Research Dataset for Effective Transfer Learning"
- https://pubs.rsna.org/doi/full/10.1148/ryai.210315 ; MedicalNet from Chen et al. "Med3D: Transfer Learning for
- 3D Medical Image Analysis" https://arxiv.org/abs/1904.00625 ;
- and ResNet50 from Torchvision: https://pytorch.org/vision/main/models/generated/torchvision.models.resnet50.html .
-
- The fake 3D implementation is based on a 2.5D approach where we calculate the 2D perceptual on slices from the
- three axis.
-
- Args:
- spatial_dims: number of spatial dimensions.
- network_type: {``"alex"``, ``"vgg"``, ``"squeeze"``, ``"radimagenet_resnet50"``,
- ``"medicalnet_resnet10_23datasets"``, ``"medicalnet_resnet50_23datasets"``, ``"resnet50"``}
- Specifies the network architecture to use. Defaults to ``"alex"``.
- is_fake_3d: if True use 2.5D approach for a 3D perceptual loss.
- fake_3d_ratio: ratio of how many slices per axis are used in the 2.5D approach.
- cache_dir: path to cache directory to save the pretrained network weights.
- pretrained: whether to load pretrained weights. This argument only works when using networks from
- LIPIS or Torchvision. Defaults to ``"True"``.
- pretrained_path: if `pretrained` is `True`, users can specify a weights file to be loaded
- via using this argument. This argument only works when ``"network_type"`` is "resnet50".
- Defaults to `None`.
- pretrained_state_dict_key: if `pretrained_path` is not `None`, this argument is used to
- extract the expected state dict. This argument only works when ``"network_type"`` is "resnet50".
- Defaults to `None`.
- """
-
- def __init__(
- self,
- spatial_dims: int,
- network_type: str = "alex",
- is_fake_3d: bool = True,
- fake_3d_ratio: float = 0.5,
- cache_dir: str | None = None,
- pretrained: bool = True,
- pretrained_path: str | None = None,
- pretrained_state_dict_key: str | None = None,
- ):
- super().__init__()
-
- if spatial_dims not in [2, 3]:
- raise NotImplementedError("Perceptual loss is implemented only in 2D and 3D.")
-
- if (spatial_dims == 2 or is_fake_3d) and "medicalnet_" in network_type:
- raise ValueError(
- "MedicalNet networks are only compatible with ``spatial_dims=3``."
- "Argument is_fake_3d must be set to False."
- )
-
- if cache_dir:
- torch.hub.set_dir(cache_dir)
-
- self.spatial_dims = spatial_dims
- if spatial_dims == 3 and is_fake_3d is False:
- self.perceptual_function = MedicalNetPerceptualSimilarity(net=network_type, verbose=False)
- elif "radimagenet_" in network_type:
- self.perceptual_function = RadImageNetPerceptualSimilarity(net=network_type, verbose=False)
- elif network_type == "resnet50":
- self.perceptual_function = TorchvisionModelPerceptualSimilarity(
- net=network_type,
- pretrained=pretrained,
- pretrained_path=pretrained_path,
- pretrained_state_dict_key=pretrained_state_dict_key,
- )
- else:
- self.perceptual_function = LPIPS(pretrained=pretrained, net=network_type, verbose=False)
- self.is_fake_3d = is_fake_3d
- self.fake_3d_ratio = fake_3d_ratio
-
- def _calculate_axis_loss(self, input: torch.Tensor, target: torch.Tensor, spatial_axis: int) -> torch.Tensor:
- """
- Calculate perceptual loss in one of the axis used in the 2.5D approach. After the slices of one spatial axis
- is transformed into different instances in the batch, we compute the loss using the 2D approach.
-
- Args:
- input: input 5D tensor. BNHWD
- target: target 5D tensor. BNHWD
- spatial_axis: spatial axis to obtain the 2D slices.
- """
-
- def batchify_axis(x: torch.Tensor, fake_3d_perm: tuple) -> torch.Tensor:
- """
- Transform slices from one spatial axis into different instances in the batch.
- """
- slices = x.float().permute((0,) + fake_3d_perm).contiguous()
- slices = slices.view(-1, x.shape[fake_3d_perm[1]], x.shape[fake_3d_perm[2]], x.shape[fake_3d_perm[3]])
-
- return slices
-
- preserved_axes = [2, 3, 4]
- preserved_axes.remove(spatial_axis)
-
- channel_axis = 1
- input_slices = batchify_axis(x=input, fake_3d_perm=(spatial_axis, channel_axis) + tuple(preserved_axes))
- indices = torch.randperm(input_slices.shape[0])[: int(input_slices.shape[0] * self.fake_3d_ratio)].to(
- input_slices.device
- )
- input_slices = torch.index_select(input_slices, dim=0, index=indices)
- target_slices = batchify_axis(x=target, fake_3d_perm=(spatial_axis, channel_axis) + tuple(preserved_axes))
- target_slices = torch.index_select(target_slices, dim=0, index=indices)
-
- axis_loss = torch.mean(self.perceptual_function(input_slices, target_slices))
-
- return axis_loss
-
- def forward(self, input: torch.Tensor, target: torch.Tensor) -> torch.Tensor:
- """
- Args:
- input: the shape should be BNHW[D].
- target: the shape should be BNHW[D].
- """
- if target.shape != input.shape:
- raise ValueError(f"ground truth has differing shape ({target.shape}) from input ({input.shape})")
-
- if self.spatial_dims == 3 and self.is_fake_3d:
- # Compute 2.5D approach
- loss_sagittal = self._calculate_axis_loss(input, target, spatial_axis=2)
- loss_coronal = self._calculate_axis_loss(input, target, spatial_axis=3)
- loss_axial = self._calculate_axis_loss(input, target, spatial_axis=4)
- loss = loss_sagittal + loss_axial + loss_coronal
- else:
- # 2D and real 3D cases
- loss = self.perceptual_function(input, target)
-
- return torch.mean(loss)
-
-
-class MedicalNetPerceptualSimilarity(nn.Module):
- """
- Component to perform the perceptual evaluation with the networks pretrained by Chen, et al. "Med3D: Transfer
- Learning for 3D Medical Image Analysis". This class uses torch Hub to download the networks from
- "Warvito/MedicalNet-models".
-
- Args:
- net: {``"medicalnet_resnet10_23datasets"``, ``"medicalnet_resnet50_23datasets"``}
- Specifies the network architecture to use. Defaults to ``"medicalnet_resnet10_23datasets"``.
- verbose: if false, mute messages from torch Hub load function.
- """
-
- def __init__(self, net: str = "medicalnet_resnet10_23datasets", verbose: bool = False) -> None:
- super().__init__()
- torch.hub._validate_not_a_forked_repo = lambda a, b, c: True
- self.model = torch.hub.load("Warvito/MedicalNet-models", model=net, verbose=verbose)
- self.eval()
-
- for param in self.parameters():
- param.requires_grad = False
-
- def forward(self, input: torch.Tensor, target: torch.Tensor) -> torch.Tensor:
- """
- Compute perceptual loss using MedicalNet 3D networks. The input and target tensors are inputted in the
- pre-trained MedicalNet that is used for feature extraction. Then, these extracted features are normalised across
- the channels. Finally, we compute the difference between the input and target features and calculate the mean
- value from the spatial dimensions to obtain the perceptual loss.
-
- Args:
- input: 3D input tensor with shape BCDHW.
- target: 3D target tensor with shape BCDHW.
- """
- input = medicalnet_intensity_normalisation(input)
- target = medicalnet_intensity_normalisation(target)
-
- # Get model outputs
- outs_input = self.model.forward(input)
- outs_target = self.model.forward(target)
-
- # Normalise through the channels
- feats_input = normalize_tensor(outs_input)
- feats_target = normalize_tensor(outs_target)
-
- results = (feats_input - feats_target) ** 2
- results = spatial_average_3d(results.sum(dim=1, keepdim=True), keepdim=True)
-
- return results
-
-
-def spatial_average_3d(x: torch.Tensor, keepdim: bool = True) -> torch.Tensor:
- return x.mean([2, 3, 4], keepdim=keepdim)
-
-
-def normalize_tensor(x: torch.Tensor, eps: float = 1e-10) -> torch.Tensor:
- norm_factor = torch.sqrt(torch.sum(x**2, dim=1, keepdim=True))
- return x / (norm_factor + eps)
-
-
-def medicalnet_intensity_normalisation(volume):
- """Based on https://github.com/Tencent/MedicalNet/blob/18c8bb6cd564eb1b964bffef1f4c2283f1ae6e7b/datasets/brains18.py#L133"""
- mean = volume.mean()
- std = volume.std()
- return (volume - mean) / std
-
-
-class RadImageNetPerceptualSimilarity(nn.Module):
- """
- Component to perform the perceptual evaluation with the networks pretrained on RadImagenet (pretrained by Mei, et
- al. "RadImageNet: An Open Radiologic Deep Learning Research Dataset for Effective Transfer Learning"). This class
- uses torch Hub to download the networks from "Warvito/radimagenet-models".
-
- Args:
- net: {``"radimagenet_resnet50"``}
- Specifies the network architecture to use. Defaults to ``"radimagenet_resnet50"``.
- verbose: if false, mute messages from torch Hub load function.
- """
-
- def __init__(self, net: str = "radimagenet_resnet50", verbose: bool = False) -> None:
- super().__init__()
- self.model = torch.hub.load("Warvito/radimagenet-models", model=net, verbose=verbose)
- self.eval()
-
- for param in self.parameters():
- param.requires_grad = False
-
- def forward(self, input: torch.Tensor, target: torch.Tensor) -> torch.Tensor:
- """
- We expect that the input is normalised between [0, 1]. Given the preprocessing performed during the training at
- https://github.com/BMEII-AI/RadImageNet, we make sure that the input and target have 3 channels, reorder it from
- 'RGB' to 'BGR', and then remove the mean components of each input data channel. The outputs are normalised
- across the channels, and we obtain the mean from the spatial dimensions (similar approach to the lpips package).
- """
- # If input has just 1 channel, repeat channel to have 3 channels
- if input.shape[1] == 1 and target.shape[1] == 1:
- input = input.repeat(1, 3, 1, 1)
- target = target.repeat(1, 3, 1, 1)
-
- # Change order from 'RGB' to 'BGR'
- input = input[:, [2, 1, 0], ...]
- target = target[:, [2, 1, 0], ...]
-
- # Subtract mean used during training
- input = subtract_mean(input)
- target = subtract_mean(target)
-
- # Get model outputs
- outs_input = self.model.forward(input)
- outs_target = self.model.forward(target)
-
- # Normalise through the channels
- feats_input = normalize_tensor(outs_input)
- feats_target = normalize_tensor(outs_target)
-
- results = (feats_input - feats_target) ** 2
- results = spatial_average(results.sum(dim=1, keepdim=True), keepdim=True)
-
- return results
-
-
-class TorchvisionModelPerceptualSimilarity(nn.Module):
- """
- Component to perform the perceptual evaluation with TorchVision models.
- Currently, only ResNet50 is supported. The network structure is based on:
- https://pytorch.org/vision/main/models/generated/torchvision.models.resnet50.html
-
- Args:
- net: {``"resnet50"``}
- Specifies the network architecture to use. Defaults to ``"resnet50"``.
- pretrained: whether to load pretrained weights. Defaults to `True`.
- pretrained_path: if `pretrained` is `True`, users can specify a weights file to be loaded
- via using this argument. Defaults to `None`.
- pretrained_state_dict_key: if `pretrained_path` is not `None`, this argument is used to
- extract the expected state dict. Defaults to `None`.
- """
-
- def __init__(
- self,
- net: str = "resnet50",
- pretrained: bool = True,
- pretrained_path: str | None = None,
- pretrained_state_dict_key: str | None = None,
- ) -> None:
- super().__init__()
- supported_networks = ["resnet50"]
- if net not in supported_networks:
- raise NotImplementedError(
- f"'net' {net} is not supported, please select a network from {supported_networks}."
- )
-
- if pretrained_path is None:
- network = resnet50(weights=ResNet50_Weights.DEFAULT if pretrained else None)
- else:
- network = resnet50(weights=None)
- if pretrained is True:
- state_dict = torch.load(pretrained_path)
- if pretrained_state_dict_key is not None:
- state_dict = state_dict[pretrained_state_dict_key]
- network.load_state_dict(state_dict)
- self.final_layer = "layer4.2.relu_2"
- self.model = create_feature_extractor(network, [self.final_layer])
- self.eval()
-
- for param in self.parameters():
- param.requires_grad = False
-
- def forward(self, input: torch.Tensor, target: torch.Tensor) -> torch.Tensor:
- """
- We expect that the input is normalised between [0, 1]. Given the preprocessing performed during the training at
- https://pytorch.org/vision/main/models/generated/torchvision.models.resnet50.html#torchvision.models.ResNet50_Weights,
- we make sure that the input and target have 3 channels, and then do Z-Score normalization.
- The outputs are normalised across the channels, and we obtain the mean from the spatial dimensions (similar
- approach to the lpips package).
- """
- # If input has just 1 channel, repeat channel to have 3 channels
- if input.shape[1] == 1 and target.shape[1] == 1:
- input = input.repeat(1, 3, 1, 1)
- target = target.repeat(1, 3, 1, 1)
-
- # Input normalization
- input = torchvision_zscore_norm(input)
- target = torchvision_zscore_norm(target)
-
- # Get model outputs
- outs_input = self.model.forward(input)[self.final_layer]
- outs_target = self.model.forward(target)[self.final_layer]
-
- # Normalise through the channels
- feats_input = normalize_tensor(outs_input)
- feats_target = normalize_tensor(outs_target)
-
- results = (feats_input - feats_target) ** 2
- results = spatial_average(results.sum(dim=1, keepdim=True), keepdim=True)
-
- return results
-
-
-def spatial_average(x: torch.Tensor, keepdim: bool = True) -> torch.Tensor:
- return x.mean([2, 3], keepdim=keepdim)
-
-
-def torchvision_zscore_norm(x: torch.Tensor) -> torch.Tensor:
- mean = [0.485, 0.456, 0.406]
- std = [0.229, 0.224, 0.225]
- x[:, 0, :, :] = (x[:, 0, :, :] - mean[0]) / std[0]
- x[:, 1, :, :] = (x[:, 1, :, :] - mean[1]) / std[1]
- x[:, 2, :, :] = (x[:, 2, :, :] - mean[2]) / std[2]
- return x
-
-
-def subtract_mean(x: torch.Tensor) -> torch.Tensor:
- mean = [0.406, 0.456, 0.485]
- x[:, 0, :, :] -= mean[0]
- x[:, 1, :, :] -= mean[1]
- x[:, 2, :, :] -= mean[2]
- return x
diff --git a/generative/losses/spectral_loss.py b/generative/losses/spectral_loss.py
deleted file mode 100644
index d881f5dd..00000000
--- a/generative/losses/spectral_loss.py
+++ /dev/null
@@ -1,87 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-import torch
-import torch.nn.functional as F
-from monai.utils import LossReduction
-from torch.fft import fftn
-from torch.nn.modules.loss import _Loss
-
-
-class JukeboxLoss(_Loss):
- """
- Calculate spectral component based on the magnitude of Fast Fourier Transform (FFT).
-
- Based on:
- Dhariwal, et al. 'Jukebox: A generative model for music.'https://arxiv.org/abs/2005.00341
-
- Args:
- spatial_dims: number of spatial dimensions.
- fft_signal_size: signal size in the transformed dimensions. See torch.fft.fftn() for more information.
- fft_norm: {``"forward"``, ``"backward"``, ``"ortho"``} Specifies the normalization mode in the fft. See
- torch.fft.fftn() for more information.
-
- reduction: {``"none"``, ``"mean"``, ``"sum"``}
- Specifies the reduction to apply to the output. Defaults to ``"mean"``.
-
- - ``"none"``: no reduction will be applied.
- - ``"mean"``: the sum of the output will be divided by the number of elements in the output.
- - ``"sum"``: the output will be summed.
- """
-
- def __init__(
- self,
- spatial_dims: int,
- fft_signal_size: tuple[int] | None = None,
- fft_norm: str = "ortho",
- reduction: LossReduction | str = LossReduction.MEAN,
- ) -> None:
- super().__init__(reduction=LossReduction(reduction).value)
-
- self.spatial_dims = spatial_dims
- self.fft_signal_size = fft_signal_size
- self.fft_dim = tuple(range(1, spatial_dims + 2))
- self.fft_norm = fft_norm
-
- def forward(self, input: torch.Tensor, target: torch.Tensor) -> torch.Tensor:
- input_amplitude = self._get_fft_amplitude(target)
- target_amplitude = self._get_fft_amplitude(input)
-
- # Compute distance between amplitude of frequency components
- # See Section 3.3 from https://arxiv.org/abs/2005.00341
- loss = F.mse_loss(target_amplitude, input_amplitude, reduction="none")
-
- if self.reduction == LossReduction.MEAN.value:
- loss = loss.mean()
- elif self.reduction == LossReduction.SUM.value:
- loss = loss.sum()
- elif self.reduction == LossReduction.NONE.value:
- pass
-
- return loss
-
- def _get_fft_amplitude(self, images: torch.Tensor) -> torch.Tensor:
- """
- Calculate the amplitude of the fourier transformations representation of the images
-
- Args:
- images: Images that are to undergo fftn
-
- Returns:
- fourier transformation amplitude
- """
- img_fft = fftn(images, s=self.fft_signal_size, dim=self.fft_dim, norm=self.fft_norm)
-
- amplitude = torch.sqrt(torch.real(img_fft) ** 2 + torch.imag(img_fft) ** 2)
-
- return amplitude
diff --git a/generative/metrics/__init__.py b/generative/metrics/__init__.py
deleted file mode 100644
index 35af1fe4..00000000
--- a/generative/metrics/__init__.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-from .fid import FIDMetric
-from .mmd import MMDMetric
-from .ms_ssim import MultiScaleSSIMMetric
-from .ssim import SSIMMetric
diff --git a/generative/metrics/fid.py b/generative/metrics/fid.py
deleted file mode 100644
index 8dc7b154..00000000
--- a/generative/metrics/fid.py
+++ /dev/null
@@ -1,105 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from __future__ import annotations
-
-import numpy as np
-import torch
-from monai.metrics.metric import Metric
-from scipy import linalg
-
-
-class FIDMetric(Metric):
- """
- Frechet Inception Distance (FID). The FID calculates the distance between two distributions of feature vectors.
- Based on: Heusel M. et al. "Gans trained by a two time-scale update rule converge to a local nash equilibrium."
- https://arxiv.org/abs/1706.08500#. The inputs for this metric should be two groups of feature vectors (with format
- (number images, number of features)) extracted from the a pretrained network.
-
- Originally, it was proposed to use the activations of the pool_3 layer of an Inception v3 pretrained with Imagenet.
- However, others networks pretrained on medical datasets can be used as well (for example, RadImageNwt for 2D and
- MedicalNet for 3D images). If the chosen model output is not a scalar, usually it is used a global spatial
- average pooling.
- """
-
- def __init__(self) -> None:
- super().__init__()
-
- def __call__(self, y_pred: torch.Tensor, y: torch.Tensor):
- return get_fid_score(y_pred, y)
-
-
-def get_fid_score(y_pred: torch.Tensor, y: torch.Tensor) -> torch.Tensor:
- y = y.double()
- y_pred = y_pred.double()
-
- if y.ndimension() > 2:
- raise ValueError("Inputs should have (number images, number of features) shape.")
-
- mu_y_pred = torch.mean(y_pred, dim=0)
- sigma_y_pred = _cov(y_pred, rowvar=False)
- mu_y = torch.mean(y, dim=0)
- sigma_y = _cov(y, rowvar=False)
-
- return compute_frechet_distance(mu_y_pred, sigma_y_pred, mu_y, sigma_y)
-
-
-def _cov(input_data: torch.Tensor, rowvar: bool = True) -> torch.Tensor:
- """
- Estimate a covariance matrix of the variables.
-
- Args:
- input_data: A 1-D or 2-D array containing multiple variables and observations. Each row of `m` represents a variable,
- and each column a single observation of all those variables.
- rowvar: If rowvar is True (default), then each row represents a variable, with observations in the columns.
- Otherwise, the relationship is transposed: each column represents a variable, while the rows contain
- observations.
- """
- if input_data.dim() < 2:
- input_data = input_data.view(1, -1)
-
- if not rowvar and input_data.size(0) != 1:
- input_data = input_data.t()
-
- factor = 1.0 / (input_data.size(1) - 1)
- input_data = input_data - torch.mean(input_data, dim=1, keepdim=True)
- return factor * input_data.matmul(input_data.t()).squeeze()
-
-
-def _sqrtm(input_data: torch.Tensor) -> torch.Tensor:
- """Compute the square root of a matrix."""
- scipy_res, _ = linalg.sqrtm(input_data.detach().cpu().numpy().astype(np.float_), disp=False)
- return torch.from_numpy(scipy_res)
-
-
-def compute_frechet_distance(
- mu_x: torch.Tensor, sigma_x: torch.Tensor, mu_y: torch.Tensor, sigma_y: torch.Tensor, epsilon: float = 1e-6
-) -> torch.Tensor:
- """The Frechet distance between multivariate normal distributions."""
- diff = mu_x - mu_y
-
- covmean = _sqrtm(sigma_x.mm(sigma_y))
-
- # Product might be almost singular
- if not torch.isfinite(covmean).all():
- print(f"FID calculation produces singular product; adding {epsilon} to diagonal of covariance estimates")
- offset = torch.eye(sigma_x.size(0), device=mu_x.device, dtype=mu_x.dtype) * epsilon
- covmean = _sqrtm((sigma_x + offset).mm(sigma_y + offset))
-
- # Numerical error might give slight imaginary component
- if torch.is_complex(covmean):
- if not torch.allclose(torch.diagonal(covmean).imag, torch.tensor(0, dtype=torch.double), atol=1e-3):
- raise ValueError(f"Imaginary component {torch.max(torch.abs(covmean.imag))} too high.")
- covmean = covmean.real
-
- tr_covmean = torch.trace(covmean)
- return diff.dot(diff) + torch.trace(sigma_x) + torch.trace(sigma_y) - 2 * tr_covmean
diff --git a/generative/metrics/mmd.py b/generative/metrics/mmd.py
deleted file mode 100644
index 416e1dfa..00000000
--- a/generative/metrics/mmd.py
+++ /dev/null
@@ -1,80 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-from collections.abc import Callable
-
-import torch
-from monai.metrics.metric import Metric
-
-
-class MMDMetric(Metric):
- """
- Unbiased Maximum Mean Discrepancy (MMD) is a kernel-based method for measuring the similarity between two
- distributions. It is a non-negative metric where a smaller value indicates a closer match between the two
- distributions.
-
- Gretton, A., et al,, 2012. A kernel two-sample test. The Journal of Machine Learning Research, 13(1), pp.723-773.
-
- Args:
- y_transform: Callable to transform the y tensor before computing the metric. It is usually a Gaussian or Laplace
- filter, but it can be any function that takes a tensor as input and returns a tensor as output such as a
- feature extractor or an Identity function.
- y_pred_transform: Callable to transform the y_pred tensor before computing the metric.
- """
-
- def __init__(self, y_transform: Callable | None = None, y_pred_transform: Callable | None = None) -> None:
- super().__init__()
-
- self.y_transform = y_transform
- self.y_pred_transform = y_pred_transform
-
- def __call__(self, y: torch.Tensor, y_pred: torch.Tensor) -> torch.Tensor:
- """
- Args:
- y: first sample (e.g., the reference image). Its shape is (B,C,W,H) for 2D data and (B,C,W,H,D) for 3D.
- y_pred: second sample (e.g., the reconstructed image). It has similar shape as y.
- """
-
- # Beta and Gamma are not calculated since torch.mean is used at return
- beta = 1.0
- gamma = 2.0
-
- if self.y_transform is not None:
- y = self.y_transform(y)
-
- if self.y_pred_transform is not None:
- y_pred = self.y_pred_transform(y_pred)
-
- if y_pred.shape != y.shape:
- raise ValueError(
- "y_pred and y shapes dont match after being processed "
- f"by their transforms, received y_pred: {y_pred.shape} and y: {y.shape}"
- )
-
- for d in range(len(y.shape) - 1, 1, -1):
- y = y.squeeze(dim=d)
- y_pred = y_pred.squeeze(dim=d)
-
- y = y.view(y.shape[0], -1)
- y_pred = y_pred.view(y_pred.shape[0], -1)
-
- y_y = torch.mm(y, y.t())
- y_pred_y_pred = torch.mm(y_pred, y_pred.t())
- y_pred_y = torch.mm(y_pred, y.t())
-
- y_y = y_y / y.shape[1]
- y_pred_y_pred = y_pred_y_pred / y.shape[1]
- y_pred_y = y_pred_y / y.shape[1]
-
- # Ref. 1 Eq. 3 (found under Lemma 6)
- return beta * (torch.mean(y_y) + torch.mean(y_pred_y_pred)) - gamma * torch.mean(y_pred_y)
diff --git a/generative/metrics/ms_ssim.py b/generative/metrics/ms_ssim.py
deleted file mode 100644
index 7e43da21..00000000
--- a/generative/metrics/ms_ssim.py
+++ /dev/null
@@ -1,153 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-from collections.abc import Sequence
-
-import torch
-import torch.nn.functional as F
-from monai.metrics.regression import RegressionMetric
-from monai.utils import MetricReduction, StrEnum, ensure_tuple_rep
-
-from generative.metrics.ssim import compute_ssim_and_cs
-
-
-class KernelType(StrEnum):
- GAUSSIAN = "gaussian"
- UNIFORM = "uniform"
-
-
-class MultiScaleSSIMMetric(RegressionMetric):
- """
- Computes the Multi-Scale Structural Similarity Index Measure (MS-SSIM).
-
- [1] Wang, Z., Simoncelli, E.P. and Bovik, A.C., 2003, November.
- Multiscale structural similarity for image quality assessment.
- In The Thirty-Seventh Asilomar Conference on Signals, Systems
- & Computers, 2003 (Vol. 2, pp. 1398-1402). Ieee.
-
- Args:
- spatial_dims: number of spatial dimensions of the input images.
- data_range: value range of input images. (usually 1.0 or 255)
- kernel_type: type of kernel, can be "gaussian" or "uniform".
- kernel_size: size of kernel
- kernel_sigma: standard deviation for Gaussian kernel.
- k1: stability constant used in the luminance denominator
- k2: stability constant used in the contrast denominator
- weights: parameters for image similarity and contrast sensitivity at different resolution scores.
- reduction: define the mode to reduce metrics, will only execute reduction on `not-nan` values,
- available reduction modes: {``"none"``, ``"mean"``, ``"sum"``, ``"mean_batch"``, ``"sum_batch"``,
- ``"mean_channel"``, ``"sum_channel"``}, default to ``"mean"``. if "none", will not do reduction
- get_not_nans: whether to return the `not_nans` count, if True, aggregate() returns (metric, not_nans)
- """
-
- def __init__(
- self,
- spatial_dims: int,
- data_range: float = 1.0,
- kernel_type: KernelType | str = KernelType.GAUSSIAN,
- kernel_size: int | Sequence[int, ...] = 11,
- kernel_sigma: float | Sequence[float, ...] = 1.5,
- k1: float = 0.01,
- k2: float = 0.03,
- weights: Sequence[float, ...] = (0.0448, 0.2856, 0.3001, 0.2363, 0.1333),
- reduction: MetricReduction | str = MetricReduction.MEAN,
- get_not_nans: bool = False,
- ) -> None:
- super().__init__(reduction=reduction, get_not_nans=get_not_nans)
-
- self.spatial_dims = spatial_dims
- self.data_range = data_range
- self.kernel_type = kernel_type
-
- if not isinstance(kernel_size, Sequence):
- kernel_size = ensure_tuple_rep(kernel_size, spatial_dims)
- self.kernel_size = kernel_size
-
- if not isinstance(kernel_sigma, Sequence):
- kernel_sigma = ensure_tuple_rep(kernel_sigma, spatial_dims)
- self.kernel_sigma = kernel_sigma
-
- self.k1 = k1
- self.k2 = k2
- self.weights = weights
-
- def _compute_metric(self, y_pred: torch.Tensor, y: torch.Tensor) -> torch.Tensor:
- """
- Args:
- y_pred: Predicted image.
- It must be a 2D or 3D batch-first tensor [B,C,H,W] or [B,C,H,W,D].
- y: Reference image.
- It must be a 2D or 3D batch-first tensor [B,C,H,W] or [B,C,H,W,D].
-
- Raises:
- ValueError: when `y_pred` is not a 2D or 3D image.
- """
- dims = y_pred.ndimension()
- if self.spatial_dims == 2 and dims != 4:
- raise ValueError(
- f"y_pred should have 4 dimensions (batch, channel, height, width) when using {self.spatial_dims} "
- f"spatial dimensions, got {dims}."
- )
-
- if self.spatial_dims == 3 and dims != 5:
- raise ValueError(
- f"y_pred should have 4 dimensions (batch, channel, height, width, depth) when using {self.spatial_dims}"
- f" spatial dimensions, got {dims}."
- )
-
- # check if image have enough size for the number of downsamplings and the size of the kernel
- weights_div = max(1, (len(self.weights) - 1)) ** 2
- y_pred_spatial_dims = y_pred.shape[2:]
- for i in range(len(y_pred_spatial_dims)):
- if y_pred_spatial_dims[i] // weights_div <= self.kernel_size[i] - 1:
- raise ValueError(
- f"For a given number of `weights` parameters {len(self.weights)} and kernel size "
- f"{self.kernel_size[i]}, the image height must be larger than "
- f"{(self.kernel_size[i] - 1) * weights_div}."
- )
-
- weights = torch.tensor(self.weights, device=y_pred.device, dtype=torch.float)
-
- avg_pool = getattr(F, f"avg_pool{self.spatial_dims}d")
-
- multiscale_list: list[torch.Tensor] = []
- for _ in range(len(weights)):
- ssim, cs = compute_ssim_and_cs(
- y_pred=y_pred,
- y=y,
- spatial_dims=self.spatial_dims,
- data_range=self.data_range,
- kernel_type=self.kernel_type,
- kernel_size=self.kernel_size,
- kernel_sigma=self.kernel_sigma,
- k1=self.k1,
- k2=self.k2,
- )
-
- cs_per_batch = cs.view(cs.shape[0], -1).mean(1)
-
- multiscale_list.append(torch.relu(cs_per_batch))
- y_pred = avg_pool(y_pred, kernel_size=2)
- y = avg_pool(y, kernel_size=2)
-
- ssim = ssim.view(ssim.shape[0], -1).mean(1)
- multiscale_list[-1] = torch.relu(ssim)
- multiscale_list = torch.stack(multiscale_list)
-
- ms_ssim_value_full_image = torch.prod(multiscale_list ** weights.view(-1, 1), dim=0)
-
- ms_ssim_per_batch: torch.Tensor = ms_ssim_value_full_image.view(ms_ssim_value_full_image.shape[0], -1).mean(
- 1, keepdim=True
- )
-
- return ms_ssim_per_batch
diff --git a/generative/metrics/ssim.py b/generative/metrics/ssim.py
deleted file mode 100644
index 07039309..00000000
--- a/generative/metrics/ssim.py
+++ /dev/null
@@ -1,231 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-from collections.abc import Sequence
-
-import torch
-import torch.nn.functional as F
-from monai.metrics.regression import RegressionMetric
-from monai.utils import MetricReduction, StrEnum, convert_data_type, ensure_tuple_rep
-from monai.utils.type_conversion import convert_to_dst_type
-
-
-class KernelType(StrEnum):
- GAUSSIAN = "gaussian"
- UNIFORM = "uniform"
-
-
-class SSIMMetric(RegressionMetric):
- r"""
- Computes the Structural Similarity Index Measure (SSIM).
-
- .. math::
- \operatorname {SSIM}(x,y) =\frac {(2 \mu_x \mu_y + c_1)(2 \sigma_{xy} + c_2)}{((\mu_x^2 + \
- \mu_y^2 + c_1)(\sigma_x^2 + \sigma_y^2 + c_2)}
-
- For more info, visit
- https://vicuesoft.com/glossary/term/ssim-ms-ssim/
-
- SSIM reference paper:
- Wang, Zhou, et al. "Image quality assessment: from error visibility to structural
- similarity." IEEE transactions on image processing 13.4 (2004): 600-612.
-
- Args:
- spatial_dims: number of spatial dimensions of the input images.
- data_range: value range of input images. (usually 1.0 or 255)
- kernel_type: type of kernel, can be "gaussian" or "uniform".
- kernel_size: size of kernel
- kernel_sigma: standard deviation for Gaussian kernel.
- k1: stability constant used in the luminance denominator
- k2: stability constant used in the contrast denominator
- reduction: define the mode to reduce metrics, will only execute reduction on `not-nan` values,
- available reduction modes: {``"none"``, ``"mean"``, ``"sum"``, ``"mean_batch"``, ``"sum_batch"``,
- ``"mean_channel"``, ``"sum_channel"``}, default to ``"mean"``. if "none", will not do reduction
- get_not_nans: whether to return the `not_nans` count, if True, aggregate() returns (metric, not_nans)
- """
-
- def __init__(
- self,
- spatial_dims: int,
- data_range: float = 1.0,
- kernel_type: KernelType | str = KernelType.GAUSSIAN,
- kernel_size: int | Sequence[int, ...] = 11,
- kernel_sigma: float | Sequence[float, ...] = 1.5,
- k1: float = 0.01,
- k2: float = 0.03,
- reduction: MetricReduction | str = MetricReduction.MEAN,
- get_not_nans: bool = False,
- ) -> None:
- super().__init__(reduction=reduction, get_not_nans=get_not_nans)
-
- self.spatial_dims = spatial_dims
- self.data_range = data_range
- self.kernel_type = kernel_type
-
- if not isinstance(kernel_size, Sequence):
- kernel_size = ensure_tuple_rep(kernel_size, spatial_dims)
- self.kernel_size = kernel_size
-
- if not isinstance(kernel_sigma, Sequence):
- kernel_sigma = ensure_tuple_rep(kernel_sigma, spatial_dims)
- self.kernel_sigma = kernel_sigma
-
- self.k1 = k1
- self.k2 = k2
-
- def _compute_metric(self, y_pred: torch.Tensor, y: torch.Tensor) -> torch.Tensor:
- """
- Args:
- y_pred: Predicted image.
- It must be a 2D or 3D batch-first tensor [B,C,H,W] or [B,C,H,W,D].
- y: Reference image.
- It must be a 2D or 3D batch-first tensor [B,C,H,W] or [B,C,H,W,D].
-
- Raises:
- ValueError: when `y_pred` is not a 2D or 3D image.
- """
- dims = y_pred.ndimension()
- if self.spatial_dims == 2 and dims != 4:
- raise ValueError(
- f"y_pred should have 4 dimensions (batch, channel, height, width) when using {self.spatial_dims} "
- f"spatial dimensions, got {dims}."
- )
-
- if self.spatial_dims == 3 and dims != 5:
- raise ValueError(
- f"y_pred should have 4 dimensions (batch, channel, height, width, depth) when using {self.spatial_dims}"
- f" spatial dimensions, got {dims}."
- )
-
- ssim_value_full_image, _ = compute_ssim_and_cs(
- y_pred=y_pred,
- y=y,
- spatial_dims=self.spatial_dims,
- data_range=self.data_range,
- kernel_type=self.kernel_type,
- kernel_size=self.kernel_size,
- kernel_sigma=self.kernel_sigma,
- k1=self.k1,
- k2=self.k2,
- )
-
- ssim_per_batch: torch.Tensor = ssim_value_full_image.view(ssim_value_full_image.shape[0], -1).mean(
- 1, keepdim=True
- )
-
- return ssim_per_batch
-
-
-def _gaussian_kernel(
- spatial_dims: int, num_channels: int, kernel_size: Sequence[int, ...], kernel_sigma: Sequence[float, ...]
-) -> torch.Tensor:
- """Computes 2D or 3D gaussian kernel.
-
- Args:
- spatial_dims: number of spatial dimensions of the input images.
- num_channels: number of channels in the image
- kernel_size: size of kernel
- kernel_sigma: standard deviation for Gaussian kernel.
- """
-
- def gaussian_1d(kernel_size: int, sigma: float) -> torch.Tensor:
- """Computes 1D gaussian kernel.
-
- Args:
- kernel_size: size of the gaussian kernel
- sigma: Standard deviation of the gaussian kernel
- """
- dist = torch.arange(start=(1 - kernel_size) / 2, end=(1 + kernel_size) / 2, step=1)
- gauss = torch.exp(-torch.pow(dist / sigma, 2) / 2)
- return (gauss / gauss.sum()).unsqueeze(dim=0)
-
- gaussian_kernel_x = gaussian_1d(kernel_size[0], kernel_sigma[0])
- gaussian_kernel_y = gaussian_1d(kernel_size[1], kernel_sigma[1])
- kernel = torch.matmul(gaussian_kernel_x.t(), gaussian_kernel_y) # (kernel_size, 1) * (1, kernel_size)
-
- kernel_dimensions = (num_channels, 1, kernel_size[0], kernel_size[1])
-
- if spatial_dims == 3:
- gaussian_kernel_z = gaussian_1d(kernel_size[2], kernel_sigma[2])[None,]
- kernel = torch.mul(
- kernel.unsqueeze(-1).repeat(1, 1, kernel_size[2]),
- gaussian_kernel_z.expand(kernel_size[0], kernel_size[1], kernel_size[2]),
- )
- kernel_dimensions = (num_channels, 1, kernel_size[0], kernel_size[1], kernel_size[2])
-
- return kernel.expand(kernel_dimensions)
-
-
-def compute_ssim_and_cs(
- y_pred: torch.Tensor,
- y: torch.Tensor,
- spatial_dims: int,
- data_range: float = 1.0,
- kernel_type: KernelType | str = KernelType.GAUSSIAN,
- kernel_size: Sequence[int, ...] = 11,
- kernel_sigma: Sequence[float, ...] = 1.5,
- k1: float = 0.01,
- k2: float = 0.03,
-) -> tuple[torch.Tensor, torch.Tensor]:
- """
- Function to compute the Structural Similarity Index Measure (SSIM) and Contrast Sensitivity (CS) for a batch
- of images.
-
- Args:
- y_pred: batch of predicted images with shape (batch_size, channels, spatial_dim1, spatial_dim2[, spatial_dim3])
- y: batch of target images with shape (batch_size, channels, spatial_dim1, spatial_dim2[, spatial_dim3])
- spatial_dims: number of spatial dimensions of the images (2, 3)
- data_range: the data range of the images.
- kernel_type: the type of kernel to use for the SSIM computation. Can be either "gaussian" or "uniform".
- kernel_size: the size of the kernel to use for the SSIM computation.
- kernel_sigma: the standard deviation of the kernel to use for the SSIM computation.
- k1: the first stability constant.
- k2: the second stability constant.
-
- Returns:
- ssim: the Structural Similarity Index Measure score for the batch of images.
- cs: the Contrast Sensitivity for the batch of images.
- """
- if y.shape != y_pred.shape:
- raise ValueError(f"y_pred and y should have same shapes, got {y_pred.shape} and {y.shape}.")
-
- y_pred = convert_data_type(y_pred, output_type=torch.Tensor, dtype=torch.float)[0]
- y = convert_data_type(y, output_type=torch.Tensor, dtype=torch.float)[0]
-
- num_channels = y_pred.size(1)
-
- if kernel_type == KernelType.GAUSSIAN:
- kernel = _gaussian_kernel(spatial_dims, num_channels, kernel_size, kernel_sigma)
- elif kernel_type == KernelType.UNIFORM:
- kernel = torch.ones((num_channels, 1, *kernel_size)) / torch.prod(torch.tensor(kernel_size))
-
- kernel = convert_to_dst_type(src=kernel, dst=y_pred)[0]
-
- c1 = (k1 * data_range) ** 2 # stability constant for luminance
- c2 = (k2 * data_range) ** 2 # stability constant for contrast
-
- conv_fn = getattr(F, f"conv{spatial_dims}d")
- mu_x = conv_fn(y_pred, kernel, groups=num_channels)
- mu_y = conv_fn(y, kernel, groups=num_channels)
- mu_xx = conv_fn(y_pred * y_pred, kernel, groups=num_channels)
- mu_yy = conv_fn(y * y, kernel, groups=num_channels)
- mu_xy = conv_fn(y_pred * y, kernel, groups=num_channels)
-
- sigma_x = mu_xx - mu_x * mu_x
- sigma_y = mu_yy - mu_y * mu_y
- sigma_xy = mu_xy - mu_x * mu_y
-
- contrast_sensitivity = (2 * sigma_xy + c2) / (sigma_x + sigma_y + c2)
- ssim_value_full_image = ((2 * mu_x * mu_y + c1) / (mu_x**2 + mu_y**2 + c1)) * contrast_sensitivity
-
- return ssim_value_full_image, contrast_sensitivity
diff --git a/generative/networks/__init__.py b/generative/networks/__init__.py
deleted file mode 100644
index 1e97f894..00000000
--- a/generative/networks/__init__.py
+++ /dev/null
@@ -1,10 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
diff --git a/generative/networks/blocks/__init__.py b/generative/networks/blocks/__init__.py
deleted file mode 100644
index b7931237..00000000
--- a/generative/networks/blocks/__init__.py
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-from .encoder_modules import SpatialRescaler
-from .selfattention import SABlock
-from .transformerblock import TransformerBlock
diff --git a/generative/networks/blocks/encoder_modules.py b/generative/networks/blocks/encoder_modules.py
deleted file mode 100644
index 62eab739..00000000
--- a/generative/networks/blocks/encoder_modules.py
+++ /dev/null
@@ -1,83 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-from collections.abc import Sequence
-from functools import partial
-
-import torch
-import torch.nn as nn
-from monai.networks.blocks import Convolution
-
-__all__ = ["SpatialRescaler"]
-
-
-class SpatialRescaler(nn.Module):
- """
- SpatialRescaler based on https://github.com/CompVis/latent-diffusion/blob/main/ldm/modules/encoders/modules.py
-
- Args:
- spatial_dims: number of spatial dimensions.
- n_stages: number of interpolation stages.
- size: output spatial size (int or Tuple[int] or Tuple[int, int] or Tuple[int, int, int]).
- method: algorithm used for sampling.
- multiplier: multiplier for spatial size. If `multiplier` is a sequence,
- its length has to match the number of spatial dimensions; `input.dim() - 2`.
- in_channels: number of input channels.
- out_channels: number of output channels.
- bias: whether to have a bias term.
- """
-
- def __init__(
- self,
- spatial_dims: int = 2,
- n_stages: int = 1,
- size: Sequence[int] | int | None = None,
- method: str = "bilinear",
- multiplier: Sequence[float] | float | None = None,
- in_channels: int = 3,
- out_channels: int = None,
- bias: bool = False,
- ):
- super().__init__()
- self.n_stages = n_stages
- assert self.n_stages >= 0
- assert method in ["nearest", "linear", "bilinear", "trilinear", "bicubic", "area"]
- if size is not None and n_stages != 1:
- raise ValueError("when size is not None, n_stages should be 1.")
- if size is not None and multiplier is not None:
- raise ValueError("only one of size or multiplier should be defined.")
- self.multiplier = multiplier
- self.interpolator = partial(torch.nn.functional.interpolate, mode=method, size=size)
- self.remap_output = out_channels is not None
- if self.remap_output:
- print(f"Spatial Rescaler mapping from {in_channels} to {out_channels} channels before resizing.")
- self.channel_mapper = Convolution(
- spatial_dims=spatial_dims,
- in_channels=in_channels,
- out_channels=out_channels,
- kernel_size=1,
- conv_only=True,
- bias=bias,
- )
-
- def forward(self, x: torch.Tensor) -> torch.Tensor:
- if self.remap_output:
- x = self.channel_mapper(x)
-
- for stage in range(self.n_stages):
- x = self.interpolator(x, scale_factor=self.multiplier)
-
- return x
-
- def encode(self, x: torch.Tensor) -> torch.Tensor:
- return self(x)
diff --git a/generative/networks/blocks/selfattention.py b/generative/networks/blocks/selfattention.py
deleted file mode 100644
index b59b78bb..00000000
--- a/generative/networks/blocks/selfattention.py
+++ /dev/null
@@ -1,148 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-import importlib.util
-import math
-
-import torch
-import torch.nn as nn
-from torch.nn import functional as F
-
-if importlib.util.find_spec("xformers") is not None:
- import xformers.ops as xops
-
- has_xformers = True
-else:
- has_xformers = False
-
-
-class SABlock(nn.Module):
- """
- A self-attention block, based on: "Dosovitskiy et al.,
- An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale "
-
- Args:
- hidden_size: dimension of hidden layer.
- num_heads: number of attention heads.
- dropout_rate: dropout ratio. Defaults to no dropout.
- qkv_bias: bias term for the qkv linear layer.
- causal: whether to use causal attention.
- sequence_length: if causal is True, it is necessary to specify the sequence length.
- with_cross_attention: Whether to use cross attention for conditioning.
- use_flash_attention: if True, use flash attention for a memory efficient attention mechanism.
- """
-
- def __init__(
- self,
- hidden_size: int,
- num_heads: int,
- dropout_rate: float = 0.0,
- qkv_bias: bool = False,
- causal: bool = False,
- sequence_length: int | None = None,
- with_cross_attention: bool = False,
- use_flash_attention: bool = False,
- ) -> None:
- super().__init__()
- self.hidden_size = hidden_size
- self.num_heads = num_heads
- self.head_dim = hidden_size // num_heads
- self.scale = 1.0 / math.sqrt(self.head_dim)
- self.causal = causal
- self.sequence_length = sequence_length
- self.with_cross_attention = with_cross_attention
- self.use_flash_attention = use_flash_attention
-
- if not (0 <= dropout_rate <= 1):
- raise ValueError("dropout_rate should be between 0 and 1.")
- self.dropout_rate = dropout_rate
-
- if hidden_size % num_heads != 0:
- raise ValueError("hidden size should be divisible by num_heads.")
-
- if causal and sequence_length is None:
- raise ValueError("sequence_length is necessary for causal attention.")
-
- if use_flash_attention and not has_xformers:
- raise ValueError("use_flash_attention is True but xformers is not installed.")
-
- # key, query, value projections
- self.to_q = nn.Linear(hidden_size, hidden_size, bias=qkv_bias)
- self.to_k = nn.Linear(hidden_size, hidden_size, bias=qkv_bias)
- self.to_v = nn.Linear(hidden_size, hidden_size, bias=qkv_bias)
-
- # regularization
- self.drop_weights = nn.Dropout(dropout_rate)
- self.drop_output = nn.Dropout(dropout_rate)
-
- # output projection
- self.out_proj = nn.Linear(hidden_size, hidden_size)
-
- if causal and sequence_length is not None:
- # causal mask to ensure that attention is only applied to the left in the input sequence
- self.register_buffer(
- "causal_mask",
- torch.tril(torch.ones(sequence_length, sequence_length)).view(1, 1, sequence_length, sequence_length),
- )
-
- def forward(self, x: torch.Tensor, context: torch.Tensor | None = None) -> torch.Tensor:
- b, t, c = x.size() # batch size, sequence length, embedding dimensionality (hidden_size)
-
- # calculate query, key, values for all heads in batch and move head forward to be the batch dim
- query = self.to_q(x)
-
- kv = context if context is not None else x
- _, kv_t, _ = kv.size()
- key = self.to_k(kv)
- value = self.to_v(kv)
-
- query = query.view(b, t, self.num_heads, c // self.num_heads) # (b, t, nh, hs)
- key = key.view(b, kv_t, self.num_heads, c // self.num_heads) # (b, kv_t, nh, hs)
- value = value.view(b, kv_t, self.num_heads, c // self.num_heads) # (b, kv_t, nh, hs)
-
- if self.use_flash_attention:
- query = query.contiguous()
- key = key.contiguous()
- value = value.contiguous()
- y = xops.memory_efficient_attention(
- query=query,
- key=key,
- value=value,
- scale=self.scale,
- p=self.dropout_rate,
- attn_bias=xops.LowerTriangularMask() if self.causal else None,
- )
-
- else:
- query = query.transpose(1, 2) # (b, nh, t, hs)
- key = key.transpose(1, 2) # (b, nh, kv_t, hs)
- value = value.transpose(1, 2) # (b, nh, kv_t, hs)
-
- # manual implementation of attention
- query = query * self.scale
- attention_scores = query @ key.transpose(-2, -1)
-
- if self.causal:
- attention_scores = attention_scores.masked_fill(self.causal_mask[:, :, :t, :kv_t] == 0, float("-inf"))
-
- attention_probs = F.softmax(attention_scores, dim=-1)
- attention_probs = self.drop_weights(attention_probs)
- y = attention_probs @ value # (b, nh, t, kv_t) x (b, nh, kv_t, hs) -> (b, nh, t, hs)
-
- y = y.transpose(1, 2) # (b, nh, t, hs) -> (b, t, nh, hs)
-
- y = y.contiguous().view(b, t, c) # re-assemble all head outputs side by side
-
- y = self.out_proj(y)
- y = self.drop_output(y)
- return y
diff --git a/generative/networks/blocks/spade_norm.py b/generative/networks/blocks/spade_norm.py
deleted file mode 100644
index 0fe735e8..00000000
--- a/generative/networks/blocks/spade_norm.py
+++ /dev/null
@@ -1,95 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-import torch
-import torch.nn as nn
-import torch.nn.functional as F
-from monai.networks.blocks import ADN, Convolution
-
-
-class SPADE(nn.Module):
- """
- SPADE normalisation block based on the 2019 paper by Park et al. (doi: https://doi.org/10.48550/arXiv.1903.07291)
-
- Args:
- label_nc: number of semantic labels
- norm_nc: number of output channels
- kernel_size: kernel size
- spatial_dims: number of spatial dimensions
- hidden_channels: number of channels in the intermediate gamma and beta layers
- norm: type of base normalisation used before applying the SPADE normalisation
- norm_params: parameters for the base normalisation
- """
-
- def __init__(
- self,
- label_nc: int,
- norm_nc: int,
- kernel_size: int = 3,
- spatial_dims: int = 2,
- hidden_channels: int = 64,
- norm: str | tuple = "INSTANCE",
- norm_params: dict = {},
- ) -> None:
-
- super().__init__()
-
- if len(norm_params) != 0:
- norm = (norm, norm_params)
- self.param_free_norm = ADN(
- act=None, dropout=0.0, norm=norm, norm_dim=spatial_dims, ordering="N", in_channels=norm_nc
- )
- self.mlp_shared = Convolution(
- spatial_dims=spatial_dims,
- in_channels=label_nc,
- out_channels=hidden_channels,
- kernel_size=kernel_size,
- norm=None,
- padding=kernel_size // 2,
- act="LEAKYRELU",
- )
- self.mlp_gamma = Convolution(
- spatial_dims=spatial_dims,
- in_channels=hidden_channels,
- out_channels=norm_nc,
- kernel_size=kernel_size,
- padding=kernel_size // 2,
- act=None,
- )
- self.mlp_beta = Convolution(
- spatial_dims=spatial_dims,
- in_channels=hidden_channels,
- out_channels=norm_nc,
- kernel_size=kernel_size,
- padding=kernel_size // 2,
- act=None,
- )
-
- def forward(self, x: torch.Tensor, segmap: torch.Tensor) -> torch.Tensor:
- """
- Args:
- x: input tensor
- segmap: input segmentation map (bxcx[spatial-dimensions]) where c is the number of semantic channels.
- The map will be interpolated to the dimension of x internally.
- """
-
- # Part 1. generate parameter-free normalized activations
- normalized = self.param_free_norm(x)
-
- # Part 2. produce scaling and bias conditioned on semantic map
- segmap = F.interpolate(segmap, size=x.size()[2:], mode="nearest")
- actv = self.mlp_shared(segmap)
- gamma = self.mlp_gamma(actv)
- beta = self.mlp_beta(actv)
- out = normalized * (1 + gamma) + beta
- return out
diff --git a/generative/networks/blocks/transformerblock.py b/generative/networks/blocks/transformerblock.py
deleted file mode 100644
index ae8cb962..00000000
--- a/generative/networks/blocks/transformerblock.py
+++ /dev/null
@@ -1,92 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-import torch
-import torch.nn as nn
-from monai.networks.blocks.mlp import MLPBlock
-
-from generative.networks.blocks.selfattention import SABlock
-
-
-class TransformerBlock(nn.Module):
- """
- A transformer block, based on: "Dosovitskiy et al.,
- An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale "
-
- Args:
- hidden_size: dimension of hidden layer.
- mlp_dim: dimension of feedforward layer.
- num_heads: number of attention heads.
- dropout_rate: faction of the input units to drop.
- qkv_bias: apply bias term for the qkv linear layer
- causal: whether to use causal attention.
- sequence_length: if causal is True, it is necessary to specify the sequence length.
- with_cross_attention: Whether to use cross attention for conditioning.
- use_flash_attention: if True, use flash attention for a memory efficient attention mechanism.
- """
-
- def __init__(
- self,
- hidden_size: int,
- mlp_dim: int,
- num_heads: int,
- dropout_rate: float = 0.0,
- qkv_bias: bool = False,
- causal: bool = False,
- sequence_length: int | None = None,
- with_cross_attention: bool = False,
- use_flash_attention: bool = False,
- ) -> None:
- self.with_cross_attention = with_cross_attention
- super().__init__()
-
- if not (0 <= dropout_rate <= 1):
- raise ValueError("dropout_rate should be between 0 and 1.")
-
- if hidden_size % num_heads != 0:
- raise ValueError("hidden_size should be divisible by num_heads.")
-
- self.norm1 = nn.LayerNorm(hidden_size)
- self.attn = SABlock(
- hidden_size=hidden_size,
- num_heads=num_heads,
- dropout_rate=dropout_rate,
- qkv_bias=qkv_bias,
- causal=causal,
- sequence_length=sequence_length,
- use_flash_attention=use_flash_attention,
- )
-
- self.norm2 = None
- self.cross_attn = None
- if self.with_cross_attention:
- self.norm2 = nn.LayerNorm(hidden_size)
- self.cross_attn = SABlock(
- hidden_size=hidden_size,
- num_heads=num_heads,
- dropout_rate=dropout_rate,
- qkv_bias=qkv_bias,
- with_cross_attention=with_cross_attention,
- causal=False,
- use_flash_attention=use_flash_attention,
- )
-
- self.norm3 = nn.LayerNorm(hidden_size)
- self.mlp = MLPBlock(hidden_size, mlp_dim, dropout_rate)
-
- def forward(self, x: torch.Tensor, context: torch.Tensor | None = None) -> torch.Tensor:
- x = x + self.attn(self.norm1(x))
- if self.with_cross_attention:
- x = x + self.cross_attn(self.norm2(x), context=context)
- x = x + self.mlp(self.norm3(x))
- return x
diff --git a/generative/networks/layers/__init__.py b/generative/networks/layers/__init__.py
deleted file mode 100644
index bd6e831f..00000000
--- a/generative/networks/layers/__init__.py
+++ /dev/null
@@ -1,12 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from .vector_quantizer import EMAQuantizer, VectorQuantizer
diff --git a/generative/networks/layers/vector_quantizer.py b/generative/networks/layers/vector_quantizer.py
deleted file mode 100644
index 358b95f3..00000000
--- a/generative/networks/layers/vector_quantizer.py
+++ /dev/null
@@ -1,228 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from typing import Sequence, Tuple
-
-import torch
-from torch import nn
-
-__all__ = ["VectorQuantizer", "EMAQuantizer"]
-
-
-class EMAQuantizer(nn.Module):
- """
- Vector Quantization module using Exponential Moving Average (EMA) to learn the codebook parameters based on Neural
- Discrete Representation Learning by Oord et al. (https://arxiv.org/abs/1711.00937) and the official implementation
- that can be found at https://github.com/deepmind/sonnet/blob/v2/sonnet/src/nets/vqvae.py#L148 and commit
- 58d9a2746493717a7c9252938da7efa6006f3739.
-
- This module is not compatible with TorchScript while working in a Distributed Data Parallelism Module. This is due
- to lack of TorchScript support for torch.distributed module as per https://github.com/pytorch/pytorch/issues/41353
- on 22/10/2022. If you want to TorchScript your model, please turn set `ddp_sync` to False.
-
- Args:
- spatial_dims : number of spatial spatial_dims.
- num_embeddings: number of atomic elements in the codebook.
- embedding_dim: number of channels of the input and atomic elements.
- commitment_cost: scaling factor of the MSE loss between input and its quantized version. Defaults to 0.25.
- decay: EMA decay. Defaults to 0.99.
- epsilon: epsilon value. Defaults to 1e-5.
- embedding_init: initialization method for the codebook. Defaults to "normal".
- ddp_sync: whether to synchronize the codebook across processes. Defaults to True.
- """
-
- def __init__(
- self,
- spatial_dims: int,
- num_embeddings: int,
- embedding_dim: int,
- commitment_cost: float = 0.25,
- decay: float = 0.99,
- epsilon: float = 1e-5,
- embedding_init: str = "normal",
- ddp_sync: bool = True,
- ):
- super().__init__()
- self.spatial_dims: int = spatial_dims
- self.embedding_dim: int = embedding_dim
- self.num_embeddings: int = num_embeddings
-
- assert self.spatial_dims in [2, 3], ValueError(
- f"EMAQuantizer only supports 4D and 5D tensor inputs but received spatial dims {spatial_dims}."
- )
-
- self.embedding: torch.nn.Embedding = torch.nn.Embedding(self.num_embeddings, self.embedding_dim)
- if embedding_init == "normal":
- # Initialization is passed since the default one is normal inside the nn.Embedding
- pass
- elif embedding_init == "kaiming_uniform":
- torch.nn.init.kaiming_uniform_(self.embedding.weight.data, mode="fan_in", nonlinearity="linear")
- self.embedding.weight.requires_grad = False
-
- self.commitment_cost: float = commitment_cost
-
- self.register_buffer("ema_cluster_size", torch.zeros(self.num_embeddings))
- self.register_buffer("ema_w", self.embedding.weight.data.clone())
-
- self.decay: float = decay
- self.epsilon: float = epsilon
-
- self.ddp_sync: bool = ddp_sync
-
- # Precalculating required permutation shapes
- self.flatten_permutation: Sequence[int] = [0] + list(range(2, self.spatial_dims + 2)) + [1]
- self.quantization_permutation: Sequence[int] = [0, self.spatial_dims + 1] + list(
- range(1, self.spatial_dims + 1)
- )
-
- @torch.cuda.amp.autocast(enabled=False)
- def quantize(self, inputs: torch.Tensor) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor]:
- """
- Given an input it projects it to the quantized space and returns additional tensors needed for EMA loss.
-
- Args:
- inputs: Encoding space tensors
-
- Returns:
- torch.Tensor: Flatten version of the input of shape [B*D*H*W, C].
- torch.Tensor: One-hot representation of the quantization indices of shape [B*D*H*W, self.num_embeddings].
- torch.Tensor: Quantization indices of shape [B,D,H,W,1]
-
- """
- encoding_indices_view = list(inputs.shape)
- del encoding_indices_view[1]
-
- inputs = inputs.float()
-
- # Converting to channel last format
- flat_input = inputs.permute(self.flatten_permutation).contiguous().view(-1, self.embedding_dim)
-
- # Calculate Euclidean distances
- distances = (
- (flat_input**2).sum(dim=1, keepdim=True)
- + (self.embedding.weight.t() ** 2).sum(dim=0, keepdim=True)
- - 2 * torch.mm(flat_input, self.embedding.weight.t())
- )
-
- # Mapping distances to indexes
- encoding_indices = torch.max(-distances, dim=1)[1]
- encodings = torch.nn.functional.one_hot(encoding_indices, self.num_embeddings).float()
-
- # Quantize and reshape
- encoding_indices = encoding_indices.view(encoding_indices_view)
-
- return flat_input, encodings, encoding_indices
-
- @torch.cuda.amp.autocast(enabled=False)
- def embed(self, embedding_indices: torch.Tensor) -> torch.Tensor:
- """
- Given encoding indices of shape [B,D,H,W,1] embeds them in the quantized space
- [B, D, H, W, self.embedding_dim] and reshapes them to [B, self.embedding_dim, D, H, W] to be fed to the
- decoder.
-
- Args:
- embedding_indices: Tensor in channel last format which holds indices referencing atomic
- elements from self.embedding
-
- Returns:
- torch.Tensor: Quantize space representation of encoding_indices in channel first format.
- """
- return self.embedding(embedding_indices).permute(self.quantization_permutation).contiguous()
-
- @torch.jit.unused
- def distributed_synchronization(self, encodings_sum: torch.Tensor, dw: torch.Tensor) -> None:
- """
- TorchScript does not support torch.distributed.all_reduce. This function is a bypassing trick based on the
- example: https://pytorch.org/docs/stable/generated/torch.jit.unused.html#torch.jit.unused
-
- Args:
- encodings_sum: The summation of one hot representation of what encoding was used for each
- position.
- dw: The multiplication of the one hot representation of what encoding was used for each
- position with the flattened input.
-
- Returns:
- None
- """
- if self.ddp_sync and torch.distributed.is_initialized():
- torch.distributed.all_reduce(tensor=encodings_sum, op=torch.distributed.ReduceOp.SUM)
- torch.distributed.all_reduce(tensor=dw, op=torch.distributed.ReduceOp.SUM)
- else:
- pass
-
- def forward(self, inputs: torch.Tensor) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor]:
- flat_input, encodings, encoding_indices = self.quantize(inputs)
- quantized = self.embed(encoding_indices)
-
- # Use EMA to update the embedding vectors
- if self.training:
- with torch.no_grad():
- encodings_sum = encodings.sum(0)
- dw = torch.mm(encodings.t(), flat_input)
-
- if self.ddp_sync:
- self.distributed_synchronization(encodings_sum, dw)
-
- self.ema_cluster_size.data.mul_(self.decay).add_(torch.mul(encodings_sum, 1 - self.decay))
-
- # Laplace smoothing of the cluster size
- n = self.ema_cluster_size.sum()
- weights = (self.ema_cluster_size + self.epsilon) / (n + self.num_embeddings * self.epsilon) * n
- self.ema_w.data.mul_(self.decay).add_(torch.mul(dw, 1 - self.decay))
- self.embedding.weight.data.copy_(self.ema_w / weights.unsqueeze(1))
-
- # Encoding Loss
- loss = self.commitment_cost * torch.nn.functional.mse_loss(quantized.detach(), inputs)
-
- # Straight Through Estimator
- quantized = inputs + (quantized - inputs).detach()
-
- return quantized, loss, encoding_indices
-
-
-class VectorQuantizer(torch.nn.Module):
- """
- Vector Quantization wrapper that is needed as a workaround for the AMP to isolate the non fp16 compatible parts of
- the quantization in their own class.
-
- Args:
- quantizer (torch.nn.Module): Quantizer module that needs to return its quantized representation, loss and index
- based quantized representation. Defaults to None
- """
-
- def __init__(self, quantizer: torch.nn.Module = None):
- super().__init__()
-
- self.quantizer: torch.nn.Module = quantizer
-
- self.perplexity: torch.Tensor = torch.rand(1)
-
- def forward(self, inputs: torch.Tensor) -> Tuple[torch.Tensor, torch.Tensor]:
- quantized, loss, encoding_indices = self.quantizer(inputs)
-
- # Perplexity calculations
- avg_probs = (
- torch.histc(encoding_indices.float(), bins=self.quantizer.num_embeddings, max=self.quantizer.num_embeddings)
- .float()
- .div(encoding_indices.numel())
- )
-
- self.perplexity = torch.exp(-torch.sum(avg_probs * torch.log(avg_probs + 1e-10)))
-
- return loss, quantized
-
- def embed(self, embedding_indices: torch.Tensor) -> torch.Tensor:
- return self.quantizer.embed(embedding_indices=embedding_indices)
-
- def quantize(self, encodings: torch.Tensor) -> torch.Tensor:
- _, _, encoding_indices = self.quantizer(encodings)
-
- return encoding_indices
diff --git a/generative/networks/nets/__init__.py b/generative/networks/nets/__init__.py
deleted file mode 100644
index ed4b172b..00000000
--- a/generative/networks/nets/__init__.py
+++ /dev/null
@@ -1,19 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-from .autoencoderkl import AutoencoderKL
-from .controlnet import ControlNet
-from .diffusion_model_unet import DiffusionModelUNet
-from .patchgan_discriminator import MultiScalePatchDiscriminator, PatchDiscriminator
-from .transformer import DecoderOnlyTransformer
-from .vqvae import VQVAE
diff --git a/generative/networks/nets/autoencoderkl.py b/generative/networks/nets/autoencoderkl.py
deleted file mode 100644
index f0187d5c..00000000
--- a/generative/networks/nets/autoencoderkl.py
+++ /dev/null
@@ -1,799 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-import importlib.util
-import math
-from collections.abc import Sequence
-
-import torch
-import torch.nn as nn
-import torch.nn.functional as F
-from monai.networks.blocks import Convolution
-from monai.utils import ensure_tuple_rep
-
-# To install xformers, use pip install xformers==0.0.16rc401
-if importlib.util.find_spec("xformers") is not None:
- import xformers
- import xformers.ops
-
- has_xformers = True
-else:
- xformers = None
- has_xformers = False
-
-# TODO: Use MONAI's optional_import
-# from monai.utils import optional_import
-# xformers, has_xformers = optional_import("xformers.ops", name="xformers")
-
-__all__ = ["AutoencoderKL"]
-
-
-class Upsample(nn.Module):
- """
- Convolution-based upsampling layer.
-
- Args:
- spatial_dims: number of spatial dimensions (1D, 2D, 3D).
- in_channels: number of input channels to the layer.
- use_convtranspose: if True, use ConvTranspose to upsample feature maps in decoder.
- """
-
- def __init__(self, spatial_dims: int, in_channels: int, use_convtranspose: bool) -> None:
- super().__init__()
- if use_convtranspose:
- self.conv = Convolution(
- spatial_dims=spatial_dims,
- in_channels=in_channels,
- out_channels=in_channels,
- strides=2,
- kernel_size=3,
- padding=1,
- conv_only=True,
- is_transposed=True,
- )
- else:
- self.conv = Convolution(
- spatial_dims=spatial_dims,
- in_channels=in_channels,
- out_channels=in_channels,
- strides=1,
- kernel_size=3,
- padding=1,
- conv_only=True,
- )
- self.use_convtranspose = use_convtranspose
-
- def forward(self, x: torch.Tensor) -> torch.Tensor:
- if self.use_convtranspose:
- return self.conv(x)
-
- # Cast to float32 to as 'upsample_nearest2d_out_frame' op does not support bfloat16
- # https://github.com/pytorch/pytorch/issues/86679
- dtype = x.dtype
- if dtype == torch.bfloat16:
- x = x.to(torch.float32)
-
- x = F.interpolate(x, scale_factor=2.0, mode="nearest")
-
- # If the input is bfloat16, we cast back to bfloat16
- if dtype == torch.bfloat16:
- x = x.to(dtype)
-
- x = self.conv(x)
- return x
-
-
-class Downsample(nn.Module):
- """
- Convolution-based downsampling layer.
-
- Args:
- spatial_dims: number of spatial dimensions (1D, 2D, 3D).
- in_channels: number of input channels.
- """
-
- def __init__(self, spatial_dims: int, in_channels: int) -> None:
- super().__init__()
- self.pad = (0, 1) * spatial_dims
-
- self.conv = Convolution(
- spatial_dims=spatial_dims,
- in_channels=in_channels,
- out_channels=in_channels,
- strides=2,
- kernel_size=3,
- padding=0,
- conv_only=True,
- )
-
- def forward(self, x: torch.Tensor) -> torch.Tensor:
- x = nn.functional.pad(x, self.pad, mode="constant", value=0.0)
- x = self.conv(x)
- return x
-
-
-class ResBlock(nn.Module):
- """
- Residual block consisting of a cascade of 2 convolutions + activation + normalisation block, and a
- residual connection between input and output.
-
- Args:
- spatial_dims: number of spatial dimensions (1D, 2D, 3D).
- in_channels: input channels to the layer.
- norm_num_groups: number of groups involved for the group normalisation layer. Ensure that your number of
- channels is divisible by this number.
- norm_eps: epsilon for the normalisation.
- out_channels: number of output channels.
- """
-
- def __init__(
- self, spatial_dims: int, in_channels: int, norm_num_groups: int, norm_eps: float, out_channels: int
- ) -> None:
- super().__init__()
- self.in_channels = in_channels
- self.out_channels = in_channels if out_channels is None else out_channels
-
- self.norm1 = nn.GroupNorm(num_groups=norm_num_groups, num_channels=in_channels, eps=norm_eps, affine=True)
- self.conv1 = Convolution(
- spatial_dims=spatial_dims,
- in_channels=self.in_channels,
- out_channels=self.out_channels,
- strides=1,
- kernel_size=3,
- padding=1,
- conv_only=True,
- )
- self.norm2 = nn.GroupNorm(num_groups=norm_num_groups, num_channels=out_channels, eps=norm_eps, affine=True)
- self.conv2 = Convolution(
- spatial_dims=spatial_dims,
- in_channels=self.out_channels,
- out_channels=self.out_channels,
- strides=1,
- kernel_size=3,
- padding=1,
- conv_only=True,
- )
-
- if self.in_channels != self.out_channels:
- self.nin_shortcut = Convolution(
- spatial_dims=spatial_dims,
- in_channels=self.in_channels,
- out_channels=self.out_channels,
- strides=1,
- kernel_size=1,
- padding=0,
- conv_only=True,
- )
- else:
- self.nin_shortcut = nn.Identity()
-
- def forward(self, x: torch.Tensor) -> torch.Tensor:
- h = x
- h = self.norm1(h)
- h = F.silu(h)
- h = self.conv1(h)
-
- h = self.norm2(h)
- h = F.silu(h)
- h = self.conv2(h)
-
- if self.in_channels != self.out_channels:
- x = self.nin_shortcut(x)
-
- return x + h
-
-
-class AttentionBlock(nn.Module):
- """
- Attention block.
-
- Args:
- spatial_dims: number of spatial dimensions (1D, 2D, 3D).
- num_channels: number of input channels.
- num_head_channels: number of channels in each attention head.
- norm_num_groups: number of groups involved for the group normalisation layer. Ensure that your number of
- channels is divisible by this number.
- norm_eps: epsilon value to use for the normalisation.
- use_flash_attention: if True, use flash attention for a memory efficient attention mechanism.
- """
-
- def __init__(
- self,
- spatial_dims: int,
- num_channels: int,
- num_head_channels: int | None = None,
- norm_num_groups: int = 32,
- norm_eps: float = 1e-6,
- use_flash_attention: bool = False,
- ) -> None:
- super().__init__()
- self.use_flash_attention = use_flash_attention
- self.spatial_dims = spatial_dims
- self.num_channels = num_channels
-
- self.num_heads = num_channels // num_head_channels if num_head_channels is not None else 1
- self.scale = 1 / math.sqrt(num_channels / self.num_heads)
-
- self.norm = nn.GroupNorm(num_groups=norm_num_groups, num_channels=num_channels, eps=norm_eps, affine=True)
-
- self.to_q = nn.Linear(num_channels, num_channels)
- self.to_k = nn.Linear(num_channels, num_channels)
- self.to_v = nn.Linear(num_channels, num_channels)
-
- self.proj_attn = nn.Linear(num_channels, num_channels)
-
- def reshape_heads_to_batch_dim(self, x: torch.Tensor) -> torch.Tensor:
- """
- Divide hidden state dimension to the multiple attention heads and reshape their input as instances in the batch.
- """
- batch_size, seq_len, dim = x.shape
- x = x.reshape(batch_size, seq_len, self.num_heads, dim // self.num_heads)
- x = x.permute(0, 2, 1, 3).reshape(batch_size * self.num_heads, seq_len, dim // self.num_heads)
- return x
-
- def reshape_batch_dim_to_heads(self, x: torch.Tensor) -> torch.Tensor:
- """Combine the output of the attention heads back into the hidden state dimension."""
- batch_size, seq_len, dim = x.shape
- x = x.reshape(batch_size // self.num_heads, self.num_heads, seq_len, dim)
- x = x.permute(0, 2, 1, 3).reshape(batch_size // self.num_heads, seq_len, dim * self.num_heads)
- return x
-
- def _memory_efficient_attention_xformers(
- self, query: torch.Tensor, key: torch.Tensor, value: torch.Tensor
- ) -> torch.Tensor:
- query = query.contiguous()
- key = key.contiguous()
- value = value.contiguous()
- x = xformers.ops.memory_efficient_attention(query, key, value, attn_bias=None)
- return x
-
- def _attention(self, query: torch.Tensor, key: torch.Tensor, value: torch.Tensor) -> torch.Tensor:
- attention_scores = torch.baddbmm(
- torch.empty(query.shape[0], query.shape[1], key.shape[1], dtype=query.dtype, device=query.device),
- query,
- key.transpose(-1, -2),
- beta=0,
- alpha=self.scale,
- )
- attention_probs = attention_scores.softmax(dim=-1)
- x = torch.bmm(attention_probs, value)
- return x
-
- def forward(self, x: torch.Tensor) -> torch.Tensor:
- residual = x
-
- batch = channel = height = width = depth = -1
- if self.spatial_dims == 2:
- batch, channel, height, width = x.shape
- if self.spatial_dims == 3:
- batch, channel, height, width, depth = x.shape
-
- # norm
- x = self.norm(x)
-
- if self.spatial_dims == 2:
- x = x.view(batch, channel, height * width).transpose(1, 2)
- if self.spatial_dims == 3:
- x = x.view(batch, channel, height * width * depth).transpose(1, 2)
-
- # proj to q, k, v
- query = self.to_q(x)
- key = self.to_k(x)
- value = self.to_v(x)
-
- # Multi-Head Attention
- query = self.reshape_heads_to_batch_dim(query)
- key = self.reshape_heads_to_batch_dim(key)
- value = self.reshape_heads_to_batch_dim(value)
-
- if self.use_flash_attention:
- x = self._memory_efficient_attention_xformers(query, key, value)
- else:
- x = self._attention(query, key, value)
-
- x = self.reshape_batch_dim_to_heads(x)
- x = x.to(query.dtype)
-
- if self.spatial_dims == 2:
- x = x.transpose(-1, -2).reshape(batch, channel, height, width)
- if self.spatial_dims == 3:
- x = x.transpose(-1, -2).reshape(batch, channel, height, width, depth)
-
- return x + residual
-
-
-class Encoder(nn.Module):
- """
- Convolutional cascade that downsamples the image into a spatial latent space.
-
- Args:
- spatial_dims: number of spatial dimensions (1D, 2D, 3D).
- in_channels: number of input channels.
- num_channels: sequence of block output channels.
- out_channels: number of channels in the bottom layer (latent space) of the autoencoder.
- num_res_blocks: number of residual blocks (see ResBlock) per level.
- norm_num_groups: number of groups for the GroupNorm layers, num_channels must be divisible by this number.
- norm_eps: epsilon for the normalization.
- attention_levels: indicate which level from num_channels contain an attention block.
- with_nonlocal_attn: if True use non-local attention block.
- use_flash_attention: if True, use flash attention for a memory efficient attention mechanism.
- """
-
- def __init__(
- self,
- spatial_dims: int,
- in_channels: int,
- num_channels: Sequence[int],
- out_channels: int,
- num_res_blocks: Sequence[int],
- norm_num_groups: int,
- norm_eps: float,
- attention_levels: Sequence[bool],
- with_nonlocal_attn: bool = True,
- use_flash_attention: bool = False,
- ) -> None:
- super().__init__()
- self.spatial_dims = spatial_dims
- self.in_channels = in_channels
- self.num_channels = num_channels
- self.out_channels = out_channels
- self.num_res_blocks = num_res_blocks
- self.norm_num_groups = norm_num_groups
- self.norm_eps = norm_eps
- self.attention_levels = attention_levels
-
- blocks = []
- # Initial convolution
- blocks.append(
- Convolution(
- spatial_dims=spatial_dims,
- in_channels=in_channels,
- out_channels=num_channels[0],
- strides=1,
- kernel_size=3,
- padding=1,
- conv_only=True,
- )
- )
-
- # Residual and downsampling blocks
- output_channel = num_channels[0]
- for i in range(len(num_channels)):
- input_channel = output_channel
- output_channel = num_channels[i]
- is_final_block = i == len(num_channels) - 1
-
- for _ in range(self.num_res_blocks[i]):
- blocks.append(
- ResBlock(
- spatial_dims=spatial_dims,
- in_channels=input_channel,
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- out_channels=output_channel,
- )
- )
- input_channel = output_channel
- if attention_levels[i]:
- blocks.append(
- AttentionBlock(
- spatial_dims=spatial_dims,
- num_channels=input_channel,
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- use_flash_attention=use_flash_attention,
- )
- )
-
- if not is_final_block:
- blocks.append(Downsample(spatial_dims=spatial_dims, in_channels=input_channel))
-
- # Non-local attention block
- if with_nonlocal_attn is True:
- blocks.append(
- ResBlock(
- spatial_dims=spatial_dims,
- in_channels=num_channels[-1],
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- out_channels=num_channels[-1],
- )
- )
-
- blocks.append(
- AttentionBlock(
- spatial_dims=spatial_dims,
- num_channels=num_channels[-1],
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- use_flash_attention=use_flash_attention,
- )
- )
- blocks.append(
- ResBlock(
- spatial_dims=spatial_dims,
- in_channels=num_channels[-1],
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- out_channels=num_channels[-1],
- )
- )
- # Normalise and convert to latent size
- blocks.append(
- nn.GroupNorm(num_groups=norm_num_groups, num_channels=num_channels[-1], eps=norm_eps, affine=True)
- )
- blocks.append(
- Convolution(
- spatial_dims=self.spatial_dims,
- in_channels=num_channels[-1],
- out_channels=out_channels,
- strides=1,
- kernel_size=3,
- padding=1,
- conv_only=True,
- )
- )
-
- self.blocks = nn.ModuleList(blocks)
-
- def forward(self, x: torch.Tensor) -> torch.Tensor:
- for block in self.blocks:
- x = block(x)
- return x
-
-
-class Decoder(nn.Module):
- """
- Convolutional cascade upsampling from a spatial latent space into an image space.
-
- Args:
- spatial_dims: number of spatial dimensions (1D, 2D, 3D).
- num_channels: sequence of block output channels.
- in_channels: number of channels in the bottom layer (latent space) of the autoencoder.
- out_channels: number of output channels.
- num_res_blocks: number of residual blocks (see ResBlock) per level.
- norm_num_groups: number of groups for the GroupNorm layers, num_channels must be divisible by this number.
- norm_eps: epsilon for the normalization.
- attention_levels: indicate which level from num_channels contain an attention block.
- with_nonlocal_attn: if True use non-local attention block.
- use_flash_attention: if True, use flash attention for a memory efficient attention mechanism.
- use_convtranspose: if True, use ConvTranspose to upsample feature maps in decoder.
- """
-
- def __init__(
- self,
- spatial_dims: int,
- num_channels: Sequence[int],
- in_channels: int,
- out_channels: int,
- num_res_blocks: Sequence[int],
- norm_num_groups: int,
- norm_eps: float,
- attention_levels: Sequence[bool],
- with_nonlocal_attn: bool = True,
- use_flash_attention: bool = False,
- use_convtranspose: bool = False,
- ) -> None:
- super().__init__()
- self.spatial_dims = spatial_dims
- self.num_channels = num_channels
- self.in_channels = in_channels
- self.out_channels = out_channels
- self.num_res_blocks = num_res_blocks
- self.norm_num_groups = norm_num_groups
- self.norm_eps = norm_eps
- self.attention_levels = attention_levels
-
- reversed_block_out_channels = list(reversed(num_channels))
-
- blocks = []
- # Initial convolution
- blocks.append(
- Convolution(
- spatial_dims=spatial_dims,
- in_channels=in_channels,
- out_channels=reversed_block_out_channels[0],
- strides=1,
- kernel_size=3,
- padding=1,
- conv_only=True,
- )
- )
-
- # Non-local attention block
- if with_nonlocal_attn is True:
- blocks.append(
- ResBlock(
- spatial_dims=spatial_dims,
- in_channels=reversed_block_out_channels[0],
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- out_channels=reversed_block_out_channels[0],
- )
- )
- blocks.append(
- AttentionBlock(
- spatial_dims=spatial_dims,
- num_channels=reversed_block_out_channels[0],
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- use_flash_attention=use_flash_attention,
- )
- )
- blocks.append(
- ResBlock(
- spatial_dims=spatial_dims,
- in_channels=reversed_block_out_channels[0],
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- out_channels=reversed_block_out_channels[0],
- )
- )
-
- reversed_attention_levels = list(reversed(attention_levels))
- reversed_num_res_blocks = list(reversed(num_res_blocks))
- block_out_ch = reversed_block_out_channels[0]
- for i in range(len(reversed_block_out_channels)):
- block_in_ch = block_out_ch
- block_out_ch = reversed_block_out_channels[i]
- is_final_block = i == len(num_channels) - 1
-
- for _ in range(reversed_num_res_blocks[i]):
- blocks.append(
- ResBlock(
- spatial_dims=spatial_dims,
- in_channels=block_in_ch,
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- out_channels=block_out_ch,
- )
- )
- block_in_ch = block_out_ch
-
- if reversed_attention_levels[i]:
- blocks.append(
- AttentionBlock(
- spatial_dims=spatial_dims,
- num_channels=block_in_ch,
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- use_flash_attention=use_flash_attention,
- )
- )
-
- if not is_final_block:
- blocks.append(
- Upsample(spatial_dims=spatial_dims, in_channels=block_in_ch, use_convtranspose=use_convtranspose)
- )
-
- blocks.append(nn.GroupNorm(num_groups=norm_num_groups, num_channels=block_in_ch, eps=norm_eps, affine=True))
- blocks.append(
- Convolution(
- spatial_dims=spatial_dims,
- in_channels=block_in_ch,
- out_channels=out_channels,
- strides=1,
- kernel_size=3,
- padding=1,
- conv_only=True,
- )
- )
-
- self.blocks = nn.ModuleList(blocks)
-
- def forward(self, x: torch.Tensor) -> torch.Tensor:
- for block in self.blocks:
- x = block(x)
- return x
-
-
-class AutoencoderKL(nn.Module):
- """
- Autoencoder model with KL-regularized latent space based on
- Rombach et al. "High-Resolution Image Synthesis with Latent Diffusion Models" https://arxiv.org/abs/2112.10752
- and Pinaya et al. "Brain Imaging Generation with Latent Diffusion Models" https://arxiv.org/abs/2209.07162
-
- Args:
- spatial_dims: number of spatial dimensions (1D, 2D, 3D).
- in_channels: number of input channels.
- out_channels: number of output channels.
- num_res_blocks: number of residual blocks (see ResBlock) per level.
- num_channels: sequence of block output channels.
- attention_levels: sequence of levels to add attention.
- latent_channels: latent embedding dimension.
- norm_num_groups: number of groups for the GroupNorm layers, num_channels must be divisible by this number.
- norm_eps: epsilon for the normalization.
- with_encoder_nonlocal_attn: if True use non-local attention block in the encoder.
- with_decoder_nonlocal_attn: if True use non-local attention block in the decoder.
- use_flash_attention: if True, use flash attention for a memory efficient attention mechanism.
- use_checkpointing: if True, use activation checkpointing to save memory.
- use_convtranspose: if True, use ConvTranspose to upsample feature maps in decoder.
- """
-
- def __init__(
- self,
- spatial_dims: int,
- in_channels: int = 1,
- out_channels: int = 1,
- num_res_blocks: Sequence[int] | int = (2, 2, 2, 2),
- num_channels: Sequence[int] = (32, 64, 64, 64),
- attention_levels: Sequence[bool] = (False, False, True, True),
- latent_channels: int = 3,
- norm_num_groups: int = 32,
- norm_eps: float = 1e-6,
- with_encoder_nonlocal_attn: bool = True,
- with_decoder_nonlocal_attn: bool = True,
- use_flash_attention: bool = False,
- use_checkpointing: bool = False,
- use_convtranspose: bool = False,
- ) -> None:
- super().__init__()
-
- # All number of channels should be multiple of num_groups
- if any((out_channel % norm_num_groups) != 0 for out_channel in num_channels):
- raise ValueError("AutoencoderKL expects all num_channels being multiple of norm_num_groups")
-
- if len(num_channels) != len(attention_levels):
- raise ValueError("AutoencoderKL expects num_channels being same size of attention_levels")
-
- if isinstance(num_res_blocks, int):
- num_res_blocks = ensure_tuple_rep(num_res_blocks, len(num_channels))
-
- if len(num_res_blocks) != len(num_channels):
- raise ValueError(
- "`num_res_blocks` should be a single integer or a tuple of integers with the same length as "
- "`num_channels`."
- )
-
- if use_flash_attention is True and not torch.cuda.is_available():
- raise ValueError(
- "torch.cuda.is_available() should be True but is False. Flash attention is only available for GPU."
- )
-
- self.encoder = Encoder(
- spatial_dims=spatial_dims,
- in_channels=in_channels,
- num_channels=num_channels,
- out_channels=latent_channels,
- num_res_blocks=num_res_blocks,
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- attention_levels=attention_levels,
- with_nonlocal_attn=with_encoder_nonlocal_attn,
- use_flash_attention=use_flash_attention,
- )
- self.decoder = Decoder(
- spatial_dims=spatial_dims,
- num_channels=num_channels,
- in_channels=latent_channels,
- out_channels=out_channels,
- num_res_blocks=num_res_blocks,
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- attention_levels=attention_levels,
- with_nonlocal_attn=with_decoder_nonlocal_attn,
- use_flash_attention=use_flash_attention,
- use_convtranspose=use_convtranspose,
- )
- self.quant_conv_mu = Convolution(
- spatial_dims=spatial_dims,
- in_channels=latent_channels,
- out_channels=latent_channels,
- strides=1,
- kernel_size=1,
- padding=0,
- conv_only=True,
- )
- self.quant_conv_log_sigma = Convolution(
- spatial_dims=spatial_dims,
- in_channels=latent_channels,
- out_channels=latent_channels,
- strides=1,
- kernel_size=1,
- padding=0,
- conv_only=True,
- )
- self.post_quant_conv = Convolution(
- spatial_dims=spatial_dims,
- in_channels=latent_channels,
- out_channels=latent_channels,
- strides=1,
- kernel_size=1,
- padding=0,
- conv_only=True,
- )
- self.latent_channels = latent_channels
- self.use_checkpointing = use_checkpointing
-
- def encode(self, x: torch.Tensor) -> tuple[torch.Tensor, torch.Tensor]:
- """
- Forwards an image through the spatial encoder, obtaining the latent mean and sigma representations.
-
- Args:
- x: BxCx[SPATIAL DIMS] tensor
-
- """
- if self.use_checkpointing:
- h = torch.utils.checkpoint.checkpoint(self.encoder, x, use_reentrant=False)
- else:
- h = self.encoder(x)
-
- z_mu = self.quant_conv_mu(h)
- z_log_var = self.quant_conv_log_sigma(h)
- z_log_var = torch.clamp(z_log_var, -30.0, 20.0)
- z_sigma = torch.exp(z_log_var / 2)
-
- return z_mu, z_sigma
-
- def sampling(self, z_mu: torch.Tensor, z_sigma: torch.Tensor) -> torch.Tensor:
- """
- From the mean and sigma representations resulting of encoding an image through the latent space,
- obtains a noise sample resulting from sampling gaussian noise, multiplying by the variance (sigma) and
- adding the mean.
-
- Args:
- z_mu: Bx[Z_CHANNELS]x[LATENT SPACE SIZE] mean vector obtained by the encoder when you encode an image
- z_sigma: Bx[Z_CHANNELS]x[LATENT SPACE SIZE] variance vector obtained by the encoder when you encode an image
-
- Returns:
- sample of shape Bx[Z_CHANNELS]x[LATENT SPACE SIZE]
- """
- eps = torch.randn_like(z_sigma)
- z_vae = z_mu + eps * z_sigma
- return z_vae
-
- def reconstruct(self, x: torch.Tensor) -> torch.Tensor:
- """
- Encodes and decodes an input image.
-
- Args:
- x: BxCx[SPATIAL DIMENSIONS] tensor.
-
- Returns:
- reconstructed image, of the same shape as input
- """
- z_mu, _ = self.encode(x)
- reconstruction = self.decode(z_mu)
- return reconstruction
-
- def decode(self, z: torch.Tensor) -> torch.Tensor:
- """
- Based on a latent space sample, forwards it through the Decoder.
-
- Args:
- z: Bx[Z_CHANNELS]x[LATENT SPACE SHAPE]
-
- Returns:
- decoded image tensor
- """
- z = self.post_quant_conv(z)
- if self.use_checkpointing:
- dec = torch.utils.checkpoint.checkpoint(self.decoder, z, use_reentrant=False)
- else:
- dec = self.decoder(z)
- return dec
-
- def forward(self, x: torch.Tensor) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]:
- z_mu, z_sigma = self.encode(x)
- z = self.sampling(z_mu, z_sigma)
- reconstruction = self.decode(z)
- return reconstruction, z_mu, z_sigma
-
- def encode_stage_2_inputs(self, x: torch.Tensor) -> torch.Tensor:
- z_mu, z_sigma = self.encode(x)
- z = self.sampling(z_mu, z_sigma)
- return z
-
- def decode_stage_2_outputs(self, z: torch.Tensor) -> torch.Tensor:
- image = self.decode(z)
- return image
diff --git a/generative/networks/nets/controlnet.py b/generative/networks/nets/controlnet.py
deleted file mode 100644
index 4eb78802..00000000
--- a/generative/networks/nets/controlnet.py
+++ /dev/null
@@ -1,416 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# =========================================================================
-# Adapted from https://github.com/huggingface/diffusers
-# which has the following license:
-# https://github.com/huggingface/diffusers/blob/main/LICENSE
-#
-# Copyright 2022 UC Berkeley Team and The HuggingFace Team. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# =========================================================================
-
-from __future__ import annotations
-
-from collections.abc import Sequence
-
-import torch
-import torch.nn.functional as F
-from monai.networks.blocks import Convolution
-from monai.utils import ensure_tuple_rep
-from torch import nn
-
-from generative.networks.nets.diffusion_model_unet import get_down_block, get_mid_block, get_timestep_embedding
-
-
-class ControlNetConditioningEmbedding(nn.Module):
- """
- Network to encode the conditioning into a latent space.
- """
-
- def __init__(
- self, spatial_dims: int, in_channels: int, out_channels: int, num_channels: Sequence[int] = (16, 32, 96, 256)
- ):
- super().__init__()
-
- self.conv_in = Convolution(
- spatial_dims=spatial_dims,
- in_channels=in_channels,
- out_channels=num_channels[0],
- strides=1,
- kernel_size=3,
- padding=1,
- conv_only=True,
- )
-
- self.blocks = nn.ModuleList([])
-
- for i in range(len(num_channels) - 1):
- channel_in = num_channels[i]
- channel_out = num_channels[i + 1]
- self.blocks.append(
- Convolution(
- spatial_dims=spatial_dims,
- in_channels=channel_in,
- out_channels=channel_in,
- strides=1,
- kernel_size=3,
- padding=1,
- conv_only=True,
- )
- )
-
- self.blocks.append(
- Convolution(
- spatial_dims=spatial_dims,
- in_channels=channel_in,
- out_channels=channel_out,
- strides=2,
- kernel_size=3,
- padding=1,
- conv_only=True,
- )
- )
-
- self.conv_out = zero_module(
- Convolution(
- spatial_dims=spatial_dims,
- in_channels=num_channels[-1],
- out_channels=out_channels,
- strides=1,
- kernel_size=3,
- padding=1,
- conv_only=True,
- )
- )
-
- def forward(self, conditioning):
- embedding = self.conv_in(conditioning)
- embedding = F.silu(embedding)
-
- for block in self.blocks:
- embedding = block(embedding)
- embedding = F.silu(embedding)
-
- embedding = self.conv_out(embedding)
-
- return embedding
-
-
-def zero_module(module):
- for p in module.parameters():
- nn.init.zeros_(p)
- return module
-
-
-class ControlNet(nn.Module):
- """
- Control network for diffusion models based on Zhang and Agrawala "Adding Conditional Control to Text-to-Image
- Diffusion Models" (https://arxiv.org/abs/2302.05543)
-
- Args:
- spatial_dims: number of spatial dimensions.
- in_channels: number of input channels.
- num_res_blocks: number of residual blocks (see ResnetBlock) per level.
- num_channels: tuple of block output channels.
- attention_levels: list of levels to add attention.
- norm_num_groups: number of groups for the normalization.
- norm_eps: epsilon for the normalization.
- resblock_updown: if True use residual blocks for up/downsampling.
- num_head_channels: number of channels in each attention head.
- with_conditioning: if True add spatial transformers to perform conditioning.
- transformer_num_layers: number of layers of Transformer blocks to use.
- cross_attention_dim: number of context dimensions to use.
- num_class_embeds: if specified (as an int), then this model will be class-conditional with `num_class_embeds`
- classes.
- upcast_attention: if True, upcast attention operations to full precision.
- use_flash_attention: if True, use flash attention for a memory efficient attention mechanism.
- conditioning_embedding_in_channels: number of input channels for the conditioning embedding.
- conditioning_embedding_num_channels: number of channels for the blocks in the conditioning embedding.
- """
-
- def __init__(
- self,
- spatial_dims: int,
- in_channels: int,
- num_res_blocks: Sequence[int] | int = (2, 2, 2, 2),
- num_channels: Sequence[int] = (32, 64, 64, 64),
- attention_levels: Sequence[bool] = (False, False, True, True),
- norm_num_groups: int = 32,
- norm_eps: float = 1e-6,
- resblock_updown: bool = False,
- num_head_channels: int | Sequence[int] = 8,
- with_conditioning: bool = False,
- transformer_num_layers: int = 1,
- cross_attention_dim: int | None = None,
- num_class_embeds: int | None = None,
- upcast_attention: bool = False,
- use_flash_attention: bool = False,
- conditioning_embedding_in_channels: int = 1,
- conditioning_embedding_num_channels: Sequence[int] | None = (16, 32, 96, 256),
- ) -> None:
- super().__init__()
- if with_conditioning is True and cross_attention_dim is None:
- raise ValueError(
- "DiffusionModelUNet expects dimension of the cross-attention conditioning (cross_attention_dim) "
- "when using with_conditioning."
- )
- if cross_attention_dim is not None and with_conditioning is False:
- raise ValueError(
- "DiffusionModelUNet expects with_conditioning=True when specifying the cross_attention_dim."
- )
-
- # All number of channels should be multiple of num_groups
- if any((out_channel % norm_num_groups) != 0 for out_channel in num_channels):
- raise ValueError("DiffusionModelUNet expects all num_channels being multiple of norm_num_groups")
-
- if len(num_channels) != len(attention_levels):
- raise ValueError("DiffusionModelUNet expects num_channels being same size of attention_levels")
-
- if isinstance(num_head_channels, int):
- num_head_channels = ensure_tuple_rep(num_head_channels, len(attention_levels))
-
- if len(num_head_channels) != len(attention_levels):
- raise ValueError(
- "num_head_channels should have the same length as attention_levels. For the i levels without attention,"
- " i.e. `attention_level[i]=False`, the num_head_channels[i] will be ignored."
- )
-
- if isinstance(num_res_blocks, int):
- num_res_blocks = ensure_tuple_rep(num_res_blocks, len(num_channels))
-
- if len(num_res_blocks) != len(num_channels):
- raise ValueError(
- "`num_res_blocks` should be a single integer or a tuple of integers with the same length as "
- "`num_channels`."
- )
-
- if use_flash_attention is True and not torch.cuda.is_available():
- raise ValueError(
- "torch.cuda.is_available() should be True but is False. Flash attention is only available for GPU."
- )
-
- self.in_channels = in_channels
- self.block_out_channels = num_channels
- self.num_res_blocks = num_res_blocks
- self.attention_levels = attention_levels
- self.num_head_channels = num_head_channels
- self.with_conditioning = with_conditioning
-
- # input
- self.conv_in = Convolution(
- spatial_dims=spatial_dims,
- in_channels=in_channels,
- out_channels=num_channels[0],
- strides=1,
- kernel_size=3,
- padding=1,
- conv_only=True,
- )
-
- # time
- time_embed_dim = num_channels[0] * 4
- self.time_embed = nn.Sequential(
- nn.Linear(num_channels[0], time_embed_dim), nn.SiLU(), nn.Linear(time_embed_dim, time_embed_dim)
- )
-
- # class embedding
- self.num_class_embeds = num_class_embeds
- if num_class_embeds is not None:
- self.class_embedding = nn.Embedding(num_class_embeds, time_embed_dim)
-
- # control net conditioning embedding
- self.controlnet_cond_embedding = ControlNetConditioningEmbedding(
- spatial_dims=spatial_dims,
- in_channels=conditioning_embedding_in_channels,
- num_channels=conditioning_embedding_num_channels,
- out_channels=num_channels[0],
- )
-
- # down
- self.down_blocks = nn.ModuleList([])
- self.controlnet_down_blocks = nn.ModuleList([])
- output_channel = num_channels[0]
-
- controlnet_block = Convolution(
- spatial_dims=spatial_dims,
- in_channels=output_channel,
- out_channels=output_channel,
- strides=1,
- kernel_size=1,
- padding=0,
- conv_only=True,
- )
- controlnet_block = zero_module(controlnet_block.conv)
- self.controlnet_down_blocks.append(controlnet_block)
-
- for i in range(len(num_channels)):
- input_channel = output_channel
- output_channel = num_channels[i]
- is_final_block = i == len(num_channels) - 1
-
- down_block = get_down_block(
- spatial_dims=spatial_dims,
- in_channels=input_channel,
- out_channels=output_channel,
- temb_channels=time_embed_dim,
- num_res_blocks=num_res_blocks[i],
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- add_downsample=not is_final_block,
- resblock_updown=resblock_updown,
- with_attn=(attention_levels[i] and not with_conditioning),
- with_cross_attn=(attention_levels[i] and with_conditioning),
- num_head_channels=num_head_channels[i],
- transformer_num_layers=transformer_num_layers,
- cross_attention_dim=cross_attention_dim,
- upcast_attention=upcast_attention,
- use_flash_attention=use_flash_attention,
- )
-
- self.down_blocks.append(down_block)
-
- for _ in range(num_res_blocks[i]):
- controlnet_block = Convolution(
- spatial_dims=spatial_dims,
- in_channels=output_channel,
- out_channels=output_channel,
- strides=1,
- kernel_size=1,
- padding=0,
- conv_only=True,
- )
- controlnet_block = zero_module(controlnet_block)
- self.controlnet_down_blocks.append(controlnet_block)
- #
- if not is_final_block:
- controlnet_block = Convolution(
- spatial_dims=spatial_dims,
- in_channels=output_channel,
- out_channels=output_channel,
- strides=1,
- kernel_size=1,
- padding=0,
- conv_only=True,
- )
- controlnet_block = zero_module(controlnet_block)
- self.controlnet_down_blocks.append(controlnet_block)
-
- # mid
- mid_block_channel = num_channels[-1]
-
- self.middle_block = get_mid_block(
- spatial_dims=spatial_dims,
- in_channels=mid_block_channel,
- temb_channels=time_embed_dim,
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- with_conditioning=with_conditioning,
- num_head_channels=num_head_channels[-1],
- transformer_num_layers=transformer_num_layers,
- cross_attention_dim=cross_attention_dim,
- upcast_attention=upcast_attention,
- use_flash_attention=use_flash_attention,
- )
-
- controlnet_block = Convolution(
- spatial_dims=spatial_dims,
- in_channels=output_channel,
- out_channels=output_channel,
- strides=1,
- kernel_size=1,
- padding=0,
- conv_only=True,
- )
- controlnet_block = zero_module(controlnet_block)
- self.controlnet_mid_block = controlnet_block
-
- def forward(
- self,
- x: torch.Tensor,
- timesteps: torch.Tensor,
- controlnet_cond: torch.Tensor,
- conditioning_scale: float = 1.0,
- context: torch.Tensor | None = None,
- class_labels: torch.Tensor | None = None,
- ) -> tuple[tuple[torch.Tensor], torch.Tensor]:
- """
- Args:
- x: input tensor (N, C, SpatialDims).
- timesteps: timestep tensor (N,).
- controlnet_cond: controlnet conditioning tensor (N, C, SpatialDims).
- conditioning_scale: conditioning scale.
- context: context tensor (N, 1, ContextDim).
- class_labels: context tensor (N, ).
- """
- # 1. time
- t_emb = get_timestep_embedding(timesteps, self.block_out_channels[0])
-
- # timesteps does not contain any weights and will always return f32 tensors
- # but time_embedding might actually be running in fp16. so we need to cast here.
- # there might be better ways to encapsulate this.
- t_emb = t_emb.to(dtype=x.dtype)
- emb = self.time_embed(t_emb)
-
- # 2. class
- if self.num_class_embeds is not None:
- if class_labels is None:
- raise ValueError("class_labels should be provided when num_class_embeds > 0")
- class_emb = self.class_embedding(class_labels)
- class_emb = class_emb.to(dtype=x.dtype)
- emb = emb + class_emb
-
- # 3. initial convolution
- h = self.conv_in(x)
-
- controlnet_cond = self.controlnet_cond_embedding(controlnet_cond)
-
- h += controlnet_cond
-
- # 4. down
- if context is not None and self.with_conditioning is False:
- raise ValueError("model should have with_conditioning = True if context is provided")
- down_block_res_samples: list[torch.Tensor] = [h]
- for downsample_block in self.down_blocks:
- h, res_samples = downsample_block(hidden_states=h, temb=emb, context=context)
- for residual in res_samples:
- down_block_res_samples.append(residual)
-
- # 5. mid
- h = self.middle_block(hidden_states=h, temb=emb, context=context)
-
- # 6. Control net blocks
- controlnet_down_block_res_samples = ()
-
- for down_block_res_sample, controlnet_block in zip(down_block_res_samples, self.controlnet_down_blocks):
- down_block_res_sample = controlnet_block(down_block_res_sample)
- controlnet_down_block_res_samples += (down_block_res_sample,)
-
- down_block_res_samples = controlnet_down_block_res_samples
-
- mid_block_res_sample = self.controlnet_mid_block(h)
-
- # 6. scaling
- down_block_res_samples = [h * conditioning_scale for h in down_block_res_samples]
- mid_block_res_sample *= conditioning_scale
-
- return down_block_res_samples, mid_block_res_sample
diff --git a/generative/networks/nets/diffusion_model_unet.py b/generative/networks/nets/diffusion_model_unet.py
deleted file mode 100644
index c69e9732..00000000
--- a/generative/networks/nets/diffusion_model_unet.py
+++ /dev/null
@@ -1,2095 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# =========================================================================
-# Adapted from https://github.com/huggingface/diffusers
-# which has the following license:
-# https://github.com/huggingface/diffusers/blob/main/LICENSE
-#
-# Copyright 2022 UC Berkeley Team and The HuggingFace Team. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# =========================================================================
-
-from __future__ import annotations
-
-import importlib.util
-import math
-from collections.abc import Sequence
-
-import torch
-import torch.nn.functional as F
-from monai.networks.blocks import Convolution, MLPBlock
-from monai.networks.layers.factories import Pool
-from monai.utils import ensure_tuple_rep
-from torch import nn
-
-# To install xformers, use pip install xformers==0.0.16rc401
-if importlib.util.find_spec("xformers") is not None:
- import xformers
- import xformers.ops
-
- has_xformers = True
-else:
- xformers = None
- has_xformers = False
-
-
-# TODO: Use MONAI's optional_import
-# from monai.utils import optional_import
-# xformers, has_xformers = optional_import("xformers.ops", name="xformers")
-
-__all__ = ["DiffusionModelUNet"]
-
-
-def zero_module(module: nn.Module) -> nn.Module:
- """
- Zero out the parameters of a module and return it.
- """
- for p in module.parameters():
- p.detach().zero_()
- return module
-
-
-class CrossAttention(nn.Module):
- """
- A cross attention layer.
-
- Args:
- query_dim: number of channels in the query.
- cross_attention_dim: number of channels in the context.
- num_attention_heads: number of heads to use for multi-head attention.
- num_head_channels: number of channels in each head.
- dropout: dropout probability to use.
- upcast_attention: if True, upcast attention operations to full precision.
- use_flash_attention: if True, use flash attention for a memory efficient attention mechanism.
- """
-
- def __init__(
- self,
- query_dim: int,
- cross_attention_dim: int | None = None,
- num_attention_heads: int = 8,
- num_head_channels: int = 64,
- dropout: float = 0.0,
- upcast_attention: bool = False,
- use_flash_attention: bool = False,
- ) -> None:
- super().__init__()
- self.use_flash_attention = use_flash_attention
- inner_dim = num_head_channels * num_attention_heads
- cross_attention_dim = cross_attention_dim if cross_attention_dim is not None else query_dim
-
- self.scale = 1 / math.sqrt(num_head_channels)
- self.num_heads = num_attention_heads
-
- self.upcast_attention = upcast_attention
-
- self.to_q = nn.Linear(query_dim, inner_dim, bias=False)
- self.to_k = nn.Linear(cross_attention_dim, inner_dim, bias=False)
- self.to_v = nn.Linear(cross_attention_dim, inner_dim, bias=False)
-
- self.to_out = nn.Sequential(nn.Linear(inner_dim, query_dim), nn.Dropout(dropout))
-
- def reshape_heads_to_batch_dim(self, x: torch.Tensor) -> torch.Tensor:
- """
- Divide hidden state dimension to the multiple attention heads and reshape their input as instances in the batch.
- """
- batch_size, seq_len, dim = x.shape
- x = x.reshape(batch_size, seq_len, self.num_heads, dim // self.num_heads)
- x = x.permute(0, 2, 1, 3).reshape(batch_size * self.num_heads, seq_len, dim // self.num_heads)
- return x
-
- def reshape_batch_dim_to_heads(self, x: torch.Tensor) -> torch.Tensor:
- """Combine the output of the attention heads back into the hidden state dimension."""
- batch_size, seq_len, dim = x.shape
- x = x.reshape(batch_size // self.num_heads, self.num_heads, seq_len, dim)
- x = x.permute(0, 2, 1, 3).reshape(batch_size // self.num_heads, seq_len, dim * self.num_heads)
- return x
-
- def _memory_efficient_attention_xformers(
- self, query: torch.Tensor, key: torch.Tensor, value: torch.Tensor
- ) -> torch.Tensor:
- query = query.contiguous()
- key = key.contiguous()
- value = value.contiguous()
- x = xformers.ops.memory_efficient_attention(query, key, value, attn_bias=None)
- return x
-
- def _attention(self, query: torch.Tensor, key: torch.Tensor, value: torch.Tensor) -> torch.Tensor:
- dtype = query.dtype
- if self.upcast_attention:
- query = query.float()
- key = key.float()
-
- attention_scores = torch.baddbmm(
- torch.empty(query.shape[0], query.shape[1], key.shape[1], dtype=query.dtype, device=query.device),
- query,
- key.transpose(-1, -2),
- beta=0,
- alpha=self.scale,
- )
- attention_probs = attention_scores.softmax(dim=-1)
- attention_probs = attention_probs.to(dtype=dtype)
-
- x = torch.bmm(attention_probs, value)
- return x
-
- def forward(self, x: torch.Tensor, context: torch.Tensor | None = None) -> torch.Tensor:
- query = self.to_q(x)
- context = context if context is not None else x
- key = self.to_k(context)
- value = self.to_v(context)
-
- # Multi-Head Attention
- query = self.reshape_heads_to_batch_dim(query)
- key = self.reshape_heads_to_batch_dim(key)
- value = self.reshape_heads_to_batch_dim(value)
-
- if self.use_flash_attention:
- x = self._memory_efficient_attention_xformers(query, key, value)
- else:
- x = self._attention(query, key, value)
-
- x = self.reshape_batch_dim_to_heads(x)
- x = x.to(query.dtype)
-
- return self.to_out(x)
-
-
-class BasicTransformerBlock(nn.Module):
- """
- A basic Transformer block.
-
- Args:
- num_channels: number of channels in the input and output.
- num_attention_heads: number of heads to use for multi-head attention.
- num_head_channels: number of channels in each attention head.
- dropout: dropout probability to use.
- cross_attention_dim: size of the context vector for cross attention.
- upcast_attention: if True, upcast attention operations to full precision.
- use_flash_attention: if True, use flash attention for a memory efficient attention mechanism.
- """
-
- def __init__(
- self,
- num_channels: int,
- num_attention_heads: int,
- num_head_channels: int,
- dropout: float = 0.0,
- cross_attention_dim: int | None = None,
- upcast_attention: bool = False,
- use_flash_attention: bool = False,
- ) -> None:
- super().__init__()
- self.attn1 = CrossAttention(
- query_dim=num_channels,
- num_attention_heads=num_attention_heads,
- num_head_channels=num_head_channels,
- dropout=dropout,
- upcast_attention=upcast_attention,
- use_flash_attention=use_flash_attention,
- ) # is a self-attention
- self.ff = MLPBlock(hidden_size=num_channels, mlp_dim=num_channels * 4, act="GEGLU", dropout_rate=dropout)
- self.attn2 = CrossAttention(
- query_dim=num_channels,
- cross_attention_dim=cross_attention_dim,
- num_attention_heads=num_attention_heads,
- num_head_channels=num_head_channels,
- dropout=dropout,
- upcast_attention=upcast_attention,
- use_flash_attention=use_flash_attention,
- ) # is a self-attention if context is None
- self.norm1 = nn.LayerNorm(num_channels)
- self.norm2 = nn.LayerNorm(num_channels)
- self.norm3 = nn.LayerNorm(num_channels)
-
- def forward(self, x: torch.Tensor, context: torch.Tensor | None = None) -> torch.Tensor:
- # 1. Self-Attention
- x = self.attn1(self.norm1(x)) + x
-
- # 2. Cross-Attention
- x = self.attn2(self.norm2(x), context=context) + x
-
- # 3. Feed-forward
- x = self.ff(self.norm3(x)) + x
- return x
-
-
-class SpatialTransformer(nn.Module):
- """
- Transformer block for image-like data. First, project the input (aka embedding) and reshape to b, t, d. Then apply
- standard transformer action. Finally, reshape to image.
-
- Args:
- spatial_dims: number of spatial dimensions.
- in_channels: number of channels in the input and output.
- num_attention_heads: number of heads to use for multi-head attention.
- num_head_channels: number of channels in each attention head.
- num_layers: number of layers of Transformer blocks to use.
- dropout: dropout probability to use.
- norm_num_groups: number of groups for the normalization.
- norm_eps: epsilon for the normalization.
- cross_attention_dim: number of context dimensions to use.
- upcast_attention: if True, upcast attention operations to full precision.
- use_flash_attention: if True, use flash attention for a memory efficient attention mechanism.
- """
-
- def __init__(
- self,
- spatial_dims: int,
- in_channels: int,
- num_attention_heads: int,
- num_head_channels: int,
- num_layers: int = 1,
- dropout: float = 0.0,
- norm_num_groups: int = 32,
- norm_eps: float = 1e-6,
- cross_attention_dim: int | None = None,
- upcast_attention: bool = False,
- use_flash_attention: bool = False,
- ) -> None:
- super().__init__()
- self.spatial_dims = spatial_dims
- self.in_channels = in_channels
- inner_dim = num_attention_heads * num_head_channels
-
- self.norm = nn.GroupNorm(num_groups=norm_num_groups, num_channels=in_channels, eps=norm_eps, affine=True)
-
- self.proj_in = Convolution(
- spatial_dims=spatial_dims,
- in_channels=in_channels,
- out_channels=inner_dim,
- strides=1,
- kernel_size=1,
- padding=0,
- conv_only=True,
- )
-
- self.transformer_blocks = nn.ModuleList(
- [
- BasicTransformerBlock(
- num_channels=inner_dim,
- num_attention_heads=num_attention_heads,
- num_head_channels=num_head_channels,
- dropout=dropout,
- cross_attention_dim=cross_attention_dim,
- upcast_attention=upcast_attention,
- use_flash_attention=use_flash_attention,
- )
- for _ in range(num_layers)
- ]
- )
-
- self.proj_out = zero_module(
- Convolution(
- spatial_dims=spatial_dims,
- in_channels=inner_dim,
- out_channels=in_channels,
- strides=1,
- kernel_size=1,
- padding=0,
- conv_only=True,
- )
- )
-
- def forward(self, x: torch.Tensor, context: torch.Tensor | None = None) -> torch.Tensor:
- # note: if no context is given, cross-attention defaults to self-attention
- batch = channel = height = width = depth = -1
- if self.spatial_dims == 2:
- batch, channel, height, width = x.shape
- if self.spatial_dims == 3:
- batch, channel, height, width, depth = x.shape
-
- residual = x
- x = self.norm(x)
- x = self.proj_in(x)
-
- inner_dim = x.shape[1]
-
- if self.spatial_dims == 2:
- x = x.permute(0, 2, 3, 1).reshape(batch, height * width, inner_dim)
- if self.spatial_dims == 3:
- x = x.permute(0, 2, 3, 4, 1).reshape(batch, height * width * depth, inner_dim)
-
- for block in self.transformer_blocks:
- x = block(x, context=context)
-
- if self.spatial_dims == 2:
- x = x.reshape(batch, height, width, inner_dim).permute(0, 3, 1, 2).contiguous()
- if self.spatial_dims == 3:
- x = x.reshape(batch, height, width, depth, inner_dim).permute(0, 4, 1, 2, 3).contiguous()
-
- x = self.proj_out(x)
- return x + residual
-
-
-class AttentionBlock(nn.Module):
- """
- An attention block that allows spatial positions to attend to each other. Uses three q, k, v linear layers to
- compute attention.
-
- Args:
- spatial_dims: number of spatial dimensions.
- num_channels: number of input channels.
- num_head_channels: number of channels in each attention head.
- norm_num_groups: number of groups involved for the group normalisation layer. Ensure that your number of
- channels is divisible by this number.
- norm_eps: epsilon value to use for the normalisation.
- use_flash_attention: if True, use flash attention for a memory efficient attention mechanism.
- """
-
- def __init__(
- self,
- spatial_dims: int,
- num_channels: int,
- num_head_channels: int | None = None,
- norm_num_groups: int = 32,
- norm_eps: float = 1e-6,
- use_flash_attention: bool = False,
- ) -> None:
- super().__init__()
- self.use_flash_attention = use_flash_attention
- self.spatial_dims = spatial_dims
- self.num_channels = num_channels
-
- self.num_heads = num_channels // num_head_channels if num_head_channels is not None else 1
- self.scale = 1 / math.sqrt(num_channels / self.num_heads)
-
- self.norm = nn.GroupNorm(num_groups=norm_num_groups, num_channels=num_channels, eps=norm_eps, affine=True)
-
- self.to_q = nn.Linear(num_channels, num_channels)
- self.to_k = nn.Linear(num_channels, num_channels)
- self.to_v = nn.Linear(num_channels, num_channels)
-
- self.proj_attn = nn.Linear(num_channels, num_channels)
-
- def reshape_heads_to_batch_dim(self, x: torch.Tensor) -> torch.Tensor:
- batch_size, seq_len, dim = x.shape
- x = x.reshape(batch_size, seq_len, self.num_heads, dim // self.num_heads)
- x = x.permute(0, 2, 1, 3).reshape(batch_size * self.num_heads, seq_len, dim // self.num_heads)
- return x
-
- def reshape_batch_dim_to_heads(self, x: torch.Tensor) -> torch.Tensor:
- batch_size, seq_len, dim = x.shape
- x = x.reshape(batch_size // self.num_heads, self.num_heads, seq_len, dim)
- x = x.permute(0, 2, 1, 3).reshape(batch_size // self.num_heads, seq_len, dim * self.num_heads)
- return x
-
- def _memory_efficient_attention_xformers(
- self, query: torch.Tensor, key: torch.Tensor, value: torch.Tensor
- ) -> torch.Tensor:
- query = query.contiguous()
- key = key.contiguous()
- value = value.contiguous()
- x = xformers.ops.memory_efficient_attention(query, key, value, attn_bias=None)
- return x
-
- def _attention(self, query: torch.Tensor, key: torch.Tensor, value: torch.Tensor) -> torch.Tensor:
- attention_scores = torch.baddbmm(
- torch.empty(query.shape[0], query.shape[1], key.shape[1], dtype=query.dtype, device=query.device),
- query,
- key.transpose(-1, -2),
- beta=0,
- alpha=self.scale,
- )
- attention_probs = attention_scores.softmax(dim=-1)
- x = torch.bmm(attention_probs, value)
- return x
-
- def forward(self, x: torch.Tensor) -> torch.Tensor:
- residual = x
-
- batch = channel = height = width = depth = -1
- if self.spatial_dims == 2:
- batch, channel, height, width = x.shape
- if self.spatial_dims == 3:
- batch, channel, height, width, depth = x.shape
-
- # norm
- x = self.norm(x)
-
- if self.spatial_dims == 2:
- x = x.view(batch, channel, height * width).transpose(1, 2)
- if self.spatial_dims == 3:
- x = x.view(batch, channel, height * width * depth).transpose(1, 2)
-
- # proj to q, k, v
- query = self.to_q(x)
- key = self.to_k(x)
- value = self.to_v(x)
-
- # Multi-Head Attention
- query = self.reshape_heads_to_batch_dim(query)
- key = self.reshape_heads_to_batch_dim(key)
- value = self.reshape_heads_to_batch_dim(value)
-
- if self.use_flash_attention:
- x = self._memory_efficient_attention_xformers(query, key, value)
- else:
- x = self._attention(query, key, value)
-
- x = self.reshape_batch_dim_to_heads(x)
- x = x.to(query.dtype)
-
- if self.spatial_dims == 2:
- x = x.transpose(-1, -2).reshape(batch, channel, height, width)
- if self.spatial_dims == 3:
- x = x.transpose(-1, -2).reshape(batch, channel, height, width, depth)
-
- return x + residual
-
-
-def get_timestep_embedding(timesteps: torch.Tensor, embedding_dim: int, max_period: int = 10000) -> torch.Tensor:
- """
- Create sinusoidal timestep embeddings following the implementation in Ho et al. "Denoising Diffusion Probabilistic
- Models" https://arxiv.org/abs/2006.11239.
-
- Args:
- timesteps: a 1-D Tensor of N indices, one per batch element.
- embedding_dim: the dimension of the output.
- max_period: controls the minimum frequency of the embeddings.
- """
- if timesteps.ndim != 1:
- raise ValueError("Timesteps should be a 1d-array")
-
- half_dim = embedding_dim // 2
- exponent = -math.log(max_period) * torch.arange(start=0, end=half_dim, dtype=torch.float32, device=timesteps.device)
- freqs = torch.exp(exponent / half_dim)
-
- args = timesteps[:, None].float() * freqs[None, :]
- embedding = torch.cat([torch.cos(args), torch.sin(args)], dim=-1)
-
- # zero pad
- if embedding_dim % 2 == 1:
- embedding = torch.nn.functional.pad(embedding, (0, 1, 0, 0))
-
- return embedding
-
-
-class Downsample(nn.Module):
- """
- Downsampling layer.
-
- Args:
- spatial_dims: number of spatial dimensions.
- num_channels: number of input channels.
- use_conv: if True uses Convolution instead of Pool average to perform downsampling. In case that use_conv is
- False, the number of output channels must be the same as the number of input channels.
- out_channels: number of output channels.
- padding: controls the amount of implicit zero-paddings on both sides for padding number of points
- for each dimension.
- """
-
- def __init__(
- self, spatial_dims: int, num_channels: int, use_conv: bool, out_channels: int | None = None, padding: int = 1
- ) -> None:
- super().__init__()
- self.num_channels = num_channels
- self.out_channels = out_channels or num_channels
- self.use_conv = use_conv
- if use_conv:
- self.op = Convolution(
- spatial_dims=spatial_dims,
- in_channels=self.num_channels,
- out_channels=self.out_channels,
- strides=2,
- kernel_size=3,
- padding=padding,
- conv_only=True,
- )
- else:
- if self.num_channels != self.out_channels:
- raise ValueError("num_channels and out_channels must be equal when use_conv=False")
- self.op = Pool[Pool.AVG, spatial_dims](kernel_size=2, stride=2)
-
- def forward(self, x: torch.Tensor, emb: torch.Tensor | None = None) -> torch.Tensor:
- del emb
- if x.shape[1] != self.num_channels:
- raise ValueError(
- f"Input number of channels ({x.shape[1]}) is not equal to expected number of channels "
- f"({self.num_channels})"
- )
- return self.op(x)
-
-
-class Upsample(nn.Module):
- """
- Upsampling layer with an optional convolution.
-
- Args:
- spatial_dims: number of spatial dimensions.
- num_channels: number of input channels.
- use_conv: if True uses Convolution instead of Pool average to perform downsampling.
- out_channels: number of output channels.
- padding: controls the amount of implicit zero-paddings on both sides for padding number of points for each
- dimension.
- """
-
- def __init__(
- self, spatial_dims: int, num_channels: int, use_conv: bool, out_channels: int | None = None, padding: int = 1
- ) -> None:
- super().__init__()
- self.num_channels = num_channels
- self.out_channels = out_channels or num_channels
- self.use_conv = use_conv
- if use_conv:
- self.conv = Convolution(
- spatial_dims=spatial_dims,
- in_channels=self.num_channels,
- out_channels=self.out_channels,
- strides=1,
- kernel_size=3,
- padding=padding,
- conv_only=True,
- )
- else:
- self.conv = None
-
- def forward(self, x: torch.Tensor, emb: torch.Tensor | None = None) -> torch.Tensor:
- del emb
- if x.shape[1] != self.num_channels:
- raise ValueError("Input channels should be equal to num_channels")
-
- # Cast to float32 to as 'upsample_nearest2d_out_frame' op does not support bfloat16
- # https://github.com/pytorch/pytorch/issues/86679
- dtype = x.dtype
- if dtype == torch.bfloat16:
- x = x.to(torch.float32)
-
- x = F.interpolate(x, scale_factor=2.0, mode="nearest")
-
- # If the input is bfloat16, we cast back to bfloat16
- if dtype == torch.bfloat16:
- x = x.to(dtype)
-
- if self.use_conv:
- x = self.conv(x)
- return x
-
-
-class ResnetBlock(nn.Module):
- """
- Residual block with timestep conditioning.
-
- Args:
- spatial_dims: The number of spatial dimensions.
- in_channels: number of input channels.
- temb_channels: number of timestep embedding channels.
- out_channels: number of output channels.
- up: if True, performs upsampling.
- down: if True, performs downsampling.
- norm_num_groups: number of groups for the group normalization.
- norm_eps: epsilon for the group normalization.
- """
-
- def __init__(
- self,
- spatial_dims: int,
- in_channels: int,
- temb_channels: int,
- out_channels: int | None = None,
- up: bool = False,
- down: bool = False,
- norm_num_groups: int = 32,
- norm_eps: float = 1e-6,
- ) -> None:
- super().__init__()
- self.spatial_dims = spatial_dims
- self.channels = in_channels
- self.emb_channels = temb_channels
- self.out_channels = out_channels or in_channels
- self.up = up
- self.down = down
-
- self.norm1 = nn.GroupNorm(num_groups=norm_num_groups, num_channels=in_channels, eps=norm_eps, affine=True)
- self.nonlinearity = nn.SiLU()
- self.conv1 = Convolution(
- spatial_dims=spatial_dims,
- in_channels=in_channels,
- out_channels=self.out_channels,
- strides=1,
- kernel_size=3,
- padding=1,
- conv_only=True,
- )
-
- self.upsample = self.downsample = None
- if self.up:
- self.upsample = Upsample(spatial_dims, in_channels, use_conv=False)
- elif down:
- self.downsample = Downsample(spatial_dims, in_channels, use_conv=False)
-
- self.time_emb_proj = nn.Linear(temb_channels, self.out_channels)
-
- self.norm2 = nn.GroupNorm(num_groups=norm_num_groups, num_channels=self.out_channels, eps=norm_eps, affine=True)
- self.conv2 = zero_module(
- Convolution(
- spatial_dims=spatial_dims,
- in_channels=self.out_channels,
- out_channels=self.out_channels,
- strides=1,
- kernel_size=3,
- padding=1,
- conv_only=True,
- )
- )
-
- if self.out_channels == in_channels:
- self.skip_connection = nn.Identity()
- else:
- self.skip_connection = Convolution(
- spatial_dims=spatial_dims,
- in_channels=in_channels,
- out_channels=self.out_channels,
- strides=1,
- kernel_size=1,
- padding=0,
- conv_only=True,
- )
-
- def forward(self, x: torch.Tensor, emb: torch.Tensor) -> torch.Tensor:
- h = x
- h = self.norm1(h)
- h = self.nonlinearity(h)
-
- if self.upsample is not None:
- if h.shape[0] >= 64:
- x = x.contiguous()
- h = h.contiguous()
- x = self.upsample(x)
- h = self.upsample(h)
- elif self.downsample is not None:
- x = self.downsample(x)
- h = self.downsample(h)
-
- h = self.conv1(h)
-
- if self.spatial_dims == 2:
- temb = self.time_emb_proj(self.nonlinearity(emb))[:, :, None, None]
- else:
- temb = self.time_emb_proj(self.nonlinearity(emb))[:, :, None, None, None]
- h = h + temb
-
- h = self.norm2(h)
- h = self.nonlinearity(h)
- h = self.conv2(h)
-
- return self.skip_connection(x) + h
-
-
-class DownBlock(nn.Module):
- """
- Unet's down block containing resnet and downsamplers blocks.
-
- Args:
- spatial_dims: The number of spatial dimensions.
- in_channels: number of input channels.
- out_channels: number of output channels.
- temb_channels: number of timestep embedding channels.
- num_res_blocks: number of residual blocks.
- norm_num_groups: number of groups for the group normalization.
- norm_eps: epsilon for the group normalization.
- add_downsample: if True add downsample block.
- resblock_updown: if True use residual blocks for downsampling.
- downsample_padding: padding used in the downsampling block.
- """
-
- def __init__(
- self,
- spatial_dims: int,
- in_channels: int,
- out_channels: int,
- temb_channels: int,
- num_res_blocks: int = 1,
- norm_num_groups: int = 32,
- norm_eps: float = 1e-6,
- add_downsample: bool = True,
- resblock_updown: bool = False,
- downsample_padding: int = 1,
- ) -> None:
- super().__init__()
- self.resblock_updown = resblock_updown
-
- resnets = []
-
- for i in range(num_res_blocks):
- in_channels = in_channels if i == 0 else out_channels
- resnets.append(
- ResnetBlock(
- spatial_dims=spatial_dims,
- in_channels=in_channels,
- out_channels=out_channels,
- temb_channels=temb_channels,
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- )
- )
-
- self.resnets = nn.ModuleList(resnets)
-
- if add_downsample:
- if resblock_updown:
- self.downsampler = ResnetBlock(
- spatial_dims=spatial_dims,
- in_channels=out_channels,
- out_channels=out_channels,
- temb_channels=temb_channels,
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- down=True,
- )
- else:
- self.downsampler = Downsample(
- spatial_dims=spatial_dims,
- num_channels=out_channels,
- use_conv=True,
- out_channels=out_channels,
- padding=downsample_padding,
- )
- else:
- self.downsampler = None
-
- def forward(
- self, hidden_states: torch.Tensor, temb: torch.Tensor, context: torch.Tensor | None = None
- ) -> tuple[torch.Tensor, list[torch.Tensor]]:
- del context
- output_states = []
-
- for resnet in self.resnets:
- hidden_states = resnet(hidden_states, temb)
- output_states.append(hidden_states)
-
- if self.downsampler is not None:
- hidden_states = self.downsampler(hidden_states, temb)
- output_states.append(hidden_states)
-
- return hidden_states, output_states
-
-
-class AttnDownBlock(nn.Module):
- """
- Unet's down block containing resnet, downsamplers and self-attention blocks.
-
- Args:
- spatial_dims: The number of spatial dimensions.
- in_channels: number of input channels.
- out_channels: number of output channels.
- temb_channels: number of timestep embedding channels.
- num_res_blocks: number of residual blocks.
- norm_num_groups: number of groups for the group normalization.
- norm_eps: epsilon for the group normalization.
- add_downsample: if True add downsample block.
- resblock_updown: if True use residual blocks for downsampling.
- downsample_padding: padding used in the downsampling block.
- num_head_channels: number of channels in each attention head.
- use_flash_attention: if True, use flash attention for a memory efficient attention mechanism.
- """
-
- def __init__(
- self,
- spatial_dims: int,
- in_channels: int,
- out_channels: int,
- temb_channels: int,
- num_res_blocks: int = 1,
- norm_num_groups: int = 32,
- norm_eps: float = 1e-6,
- add_downsample: bool = True,
- resblock_updown: bool = False,
- downsample_padding: int = 1,
- num_head_channels: int = 1,
- use_flash_attention: bool = False,
- ) -> None:
- super().__init__()
- self.resblock_updown = resblock_updown
-
- resnets = []
- attentions = []
-
- for i in range(num_res_blocks):
- in_channels = in_channels if i == 0 else out_channels
- resnets.append(
- ResnetBlock(
- spatial_dims=spatial_dims,
- in_channels=in_channels,
- out_channels=out_channels,
- temb_channels=temb_channels,
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- )
- )
- attentions.append(
- AttentionBlock(
- spatial_dims=spatial_dims,
- num_channels=out_channels,
- num_head_channels=num_head_channels,
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- use_flash_attention=use_flash_attention,
- )
- )
-
- self.attentions = nn.ModuleList(attentions)
- self.resnets = nn.ModuleList(resnets)
-
- if add_downsample:
- if resblock_updown:
- self.downsampler = ResnetBlock(
- spatial_dims=spatial_dims,
- in_channels=out_channels,
- out_channels=out_channels,
- temb_channels=temb_channels,
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- down=True,
- )
- else:
- self.downsampler = Downsample(
- spatial_dims=spatial_dims,
- num_channels=out_channels,
- use_conv=True,
- out_channels=out_channels,
- padding=downsample_padding,
- )
- else:
- self.downsampler = None
-
- def forward(
- self, hidden_states: torch.Tensor, temb: torch.Tensor, context: torch.Tensor | None = None
- ) -> tuple[torch.Tensor, list[torch.Tensor]]:
- del context
- output_states = []
-
- for resnet, attn in zip(self.resnets, self.attentions):
- hidden_states = resnet(hidden_states, temb)
- hidden_states = attn(hidden_states)
- output_states.append(hidden_states)
-
- if self.downsampler is not None:
- hidden_states = self.downsampler(hidden_states, temb)
- output_states.append(hidden_states)
-
- return hidden_states, output_states
-
-
-class CrossAttnDownBlock(nn.Module):
- """
- Unet's down block containing resnet, downsamplers and cross-attention blocks.
-
- Args:
- spatial_dims: number of spatial dimensions.
- in_channels: number of input channels.
- out_channels: number of output channels.
- temb_channels: number of timestep embedding channels.
- num_res_blocks: number of residual blocks.
- norm_num_groups: number of groups for the group normalization.
- norm_eps: epsilon for the group normalization.
- add_downsample: if True add downsample block.
- resblock_updown: if True use residual blocks for downsampling.
- downsample_padding: padding used in the downsampling block.
- num_head_channels: number of channels in each attention head.
- transformer_num_layers: number of layers of Transformer blocks to use.
- cross_attention_dim: number of context dimensions to use.
- upcast_attention: if True, upcast attention operations to full precision.
- use_flash_attention: if True, use flash attention for a memory efficient attention mechanism.
- """
-
- def __init__(
- self,
- spatial_dims: int,
- in_channels: int,
- out_channels: int,
- temb_channels: int,
- num_res_blocks: int = 1,
- norm_num_groups: int = 32,
- norm_eps: float = 1e-6,
- add_downsample: bool = True,
- resblock_updown: bool = False,
- downsample_padding: int = 1,
- num_head_channels: int = 1,
- transformer_num_layers: int = 1,
- cross_attention_dim: int | None = None,
- upcast_attention: bool = False,
- use_flash_attention: bool = False,
- ) -> None:
- super().__init__()
- self.resblock_updown = resblock_updown
-
- resnets = []
- attentions = []
-
- for i in range(num_res_blocks):
- in_channels = in_channels if i == 0 else out_channels
- resnets.append(
- ResnetBlock(
- spatial_dims=spatial_dims,
- in_channels=in_channels,
- out_channels=out_channels,
- temb_channels=temb_channels,
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- )
- )
-
- attentions.append(
- SpatialTransformer(
- spatial_dims=spatial_dims,
- in_channels=out_channels,
- num_attention_heads=out_channels // num_head_channels,
- num_head_channels=num_head_channels,
- num_layers=transformer_num_layers,
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- cross_attention_dim=cross_attention_dim,
- upcast_attention=upcast_attention,
- use_flash_attention=use_flash_attention,
- )
- )
-
- self.attentions = nn.ModuleList(attentions)
- self.resnets = nn.ModuleList(resnets)
-
- if add_downsample:
- if resblock_updown:
- self.downsampler = ResnetBlock(
- spatial_dims=spatial_dims,
- in_channels=out_channels,
- out_channels=out_channels,
- temb_channels=temb_channels,
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- down=True,
- )
- else:
- self.downsampler = Downsample(
- spatial_dims=spatial_dims,
- num_channels=out_channels,
- use_conv=True,
- out_channels=out_channels,
- padding=downsample_padding,
- )
- else:
- self.downsampler = None
-
- def forward(
- self, hidden_states: torch.Tensor, temb: torch.Tensor, context: torch.Tensor | None = None
- ) -> tuple[torch.Tensor, list[torch.Tensor]]:
- output_states = []
-
- for resnet, attn in zip(self.resnets, self.attentions):
- hidden_states = resnet(hidden_states, temb)
- hidden_states = attn(hidden_states, context=context)
- output_states.append(hidden_states)
-
- if self.downsampler is not None:
- hidden_states = self.downsampler(hidden_states, temb)
- output_states.append(hidden_states)
-
- return hidden_states, output_states
-
-
-class AttnMidBlock(nn.Module):
- """
- Unet's mid block containing resnet and self-attention blocks.
-
- Args:
- spatial_dims: The number of spatial dimensions.
- in_channels: number of input channels.
- temb_channels: number of timestep embedding channels.
- norm_num_groups: number of groups for the group normalization.
- norm_eps: epsilon for the group normalization.
- num_head_channels: number of channels in each attention head.
- use_flash_attention: if True, use flash attention for a memory efficient attention mechanism.
- """
-
- def __init__(
- self,
- spatial_dims: int,
- in_channels: int,
- temb_channels: int,
- norm_num_groups: int = 32,
- norm_eps: float = 1e-6,
- num_head_channels: int = 1,
- use_flash_attention: bool = False,
- ) -> None:
- super().__init__()
- self.attention = None
-
- self.resnet_1 = ResnetBlock(
- spatial_dims=spatial_dims,
- in_channels=in_channels,
- out_channels=in_channels,
- temb_channels=temb_channels,
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- )
- self.attention = AttentionBlock(
- spatial_dims=spatial_dims,
- num_channels=in_channels,
- num_head_channels=num_head_channels,
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- use_flash_attention=use_flash_attention,
- )
-
- self.resnet_2 = ResnetBlock(
- spatial_dims=spatial_dims,
- in_channels=in_channels,
- out_channels=in_channels,
- temb_channels=temb_channels,
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- )
-
- def forward(
- self, hidden_states: torch.Tensor, temb: torch.Tensor, context: torch.Tensor | None = None
- ) -> torch.Tensor:
- del context
- hidden_states = self.resnet_1(hidden_states, temb)
- hidden_states = self.attention(hidden_states)
- hidden_states = self.resnet_2(hidden_states, temb)
-
- return hidden_states
-
-
-class CrossAttnMidBlock(nn.Module):
- """
- Unet's mid block containing resnet and cross-attention blocks.
-
- Args:
- spatial_dims: The number of spatial dimensions.
- in_channels: number of input channels.
- temb_channels: number of timestep embedding channels
- norm_num_groups: number of groups for the group normalization.
- norm_eps: epsilon for the group normalization.
- num_head_channels: number of channels in each attention head.
- transformer_num_layers: number of layers of Transformer blocks to use.
- cross_attention_dim: number of context dimensions to use.
- upcast_attention: if True, upcast attention operations to full precision.
- use_flash_attention: if True, use flash attention for a memory efficient attention mechanism.
- """
-
- def __init__(
- self,
- spatial_dims: int,
- in_channels: int,
- temb_channels: int,
- norm_num_groups: int = 32,
- norm_eps: float = 1e-6,
- num_head_channels: int = 1,
- transformer_num_layers: int = 1,
- cross_attention_dim: int | None = None,
- upcast_attention: bool = False,
- use_flash_attention: bool = False,
- ) -> None:
- super().__init__()
- self.attention = None
-
- self.resnet_1 = ResnetBlock(
- spatial_dims=spatial_dims,
- in_channels=in_channels,
- out_channels=in_channels,
- temb_channels=temb_channels,
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- )
- self.attention = SpatialTransformer(
- spatial_dims=spatial_dims,
- in_channels=in_channels,
- num_attention_heads=in_channels // num_head_channels,
- num_head_channels=num_head_channels,
- num_layers=transformer_num_layers,
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- cross_attention_dim=cross_attention_dim,
- upcast_attention=upcast_attention,
- use_flash_attention=use_flash_attention,
- )
- self.resnet_2 = ResnetBlock(
- spatial_dims=spatial_dims,
- in_channels=in_channels,
- out_channels=in_channels,
- temb_channels=temb_channels,
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- )
-
- def forward(
- self, hidden_states: torch.Tensor, temb: torch.Tensor, context: torch.Tensor | None = None
- ) -> torch.Tensor:
- hidden_states = self.resnet_1(hidden_states, temb)
- hidden_states = self.attention(hidden_states, context=context)
- hidden_states = self.resnet_2(hidden_states, temb)
-
- return hidden_states
-
-
-class UpBlock(nn.Module):
- """
- Unet's up block containing resnet and upsamplers blocks.
-
- Args:
- spatial_dims: The number of spatial dimensions.
- in_channels: number of input channels.
- prev_output_channel: number of channels from residual connection.
- out_channels: number of output channels.
- temb_channels: number of timestep embedding channels.
- num_res_blocks: number of residual blocks.
- norm_num_groups: number of groups for the group normalization.
- norm_eps: epsilon for the group normalization.
- add_upsample: if True add downsample block.
- resblock_updown: if True use residual blocks for upsampling.
- """
-
- def __init__(
- self,
- spatial_dims: int,
- in_channels: int,
- prev_output_channel: int,
- out_channels: int,
- temb_channels: int,
- num_res_blocks: int = 1,
- norm_num_groups: int = 32,
- norm_eps: float = 1e-6,
- add_upsample: bool = True,
- resblock_updown: bool = False,
- ) -> None:
- super().__init__()
- self.resblock_updown = resblock_updown
- resnets = []
-
- for i in range(num_res_blocks):
- res_skip_channels = in_channels if (i == num_res_blocks - 1) else out_channels
- resnet_in_channels = prev_output_channel if i == 0 else out_channels
-
- resnets.append(
- ResnetBlock(
- spatial_dims=spatial_dims,
- in_channels=resnet_in_channels + res_skip_channels,
- out_channels=out_channels,
- temb_channels=temb_channels,
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- )
- )
-
- self.resnets = nn.ModuleList(resnets)
-
- if add_upsample:
- if resblock_updown:
- self.upsampler = ResnetBlock(
- spatial_dims=spatial_dims,
- in_channels=out_channels,
- out_channels=out_channels,
- temb_channels=temb_channels,
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- up=True,
- )
- else:
- self.upsampler = Upsample(
- spatial_dims=spatial_dims, num_channels=out_channels, use_conv=True, out_channels=out_channels
- )
- else:
- self.upsampler = None
-
- def forward(
- self,
- hidden_states: torch.Tensor,
- res_hidden_states_list: list[torch.Tensor],
- temb: torch.Tensor,
- context: torch.Tensor | None = None,
- ) -> torch.Tensor:
- del context
- for resnet in self.resnets:
- # pop res hidden states
- res_hidden_states = res_hidden_states_list[-1]
- res_hidden_states_list = res_hidden_states_list[:-1]
- hidden_states = torch.cat([hidden_states, res_hidden_states], dim=1)
-
- hidden_states = resnet(hidden_states, temb)
-
- if self.upsampler is not None:
- hidden_states = self.upsampler(hidden_states, temb)
-
- return hidden_states
-
-
-class AttnUpBlock(nn.Module):
- """
- Unet's up block containing resnet, upsamplers, and self-attention blocks.
-
- Args:
- spatial_dims: The number of spatial dimensions.
- in_channels: number of input channels.
- prev_output_channel: number of channels from residual connection.
- out_channels: number of output channels.
- temb_channels: number of timestep embedding channels.
- num_res_blocks: number of residual blocks.
- norm_num_groups: number of groups for the group normalization.
- norm_eps: epsilon for the group normalization.
- add_upsample: if True add downsample block.
- resblock_updown: if True use residual blocks for upsampling.
- num_head_channels: number of channels in each attention head.
- use_flash_attention: if True, use flash attention for a memory efficient attention mechanism.
- """
-
- def __init__(
- self,
- spatial_dims: int,
- in_channels: int,
- prev_output_channel: int,
- out_channels: int,
- temb_channels: int,
- num_res_blocks: int = 1,
- norm_num_groups: int = 32,
- norm_eps: float = 1e-6,
- add_upsample: bool = True,
- resblock_updown: bool = False,
- num_head_channels: int = 1,
- use_flash_attention: bool = False,
- ) -> None:
- super().__init__()
- self.resblock_updown = resblock_updown
-
- resnets = []
- attentions = []
-
- for i in range(num_res_blocks):
- res_skip_channels = in_channels if (i == num_res_blocks - 1) else out_channels
- resnet_in_channels = prev_output_channel if i == 0 else out_channels
-
- resnets.append(
- ResnetBlock(
- spatial_dims=spatial_dims,
- in_channels=resnet_in_channels + res_skip_channels,
- out_channels=out_channels,
- temb_channels=temb_channels,
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- )
- )
- attentions.append(
- AttentionBlock(
- spatial_dims=spatial_dims,
- num_channels=out_channels,
- num_head_channels=num_head_channels,
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- use_flash_attention=use_flash_attention,
- )
- )
-
- self.resnets = nn.ModuleList(resnets)
- self.attentions = nn.ModuleList(attentions)
-
- if add_upsample:
- if resblock_updown:
- self.upsampler = ResnetBlock(
- spatial_dims=spatial_dims,
- in_channels=out_channels,
- out_channels=out_channels,
- temb_channels=temb_channels,
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- up=True,
- )
- else:
- self.upsampler = Upsample(
- spatial_dims=spatial_dims, num_channels=out_channels, use_conv=True, out_channels=out_channels
- )
- else:
- self.upsampler = None
-
- def forward(
- self,
- hidden_states: torch.Tensor,
- res_hidden_states_list: list[torch.Tensor],
- temb: torch.Tensor,
- context: torch.Tensor | None = None,
- ) -> torch.Tensor:
- del context
- for resnet, attn in zip(self.resnets, self.attentions):
- # pop res hidden states
- res_hidden_states = res_hidden_states_list[-1]
- res_hidden_states_list = res_hidden_states_list[:-1]
- hidden_states = torch.cat([hidden_states, res_hidden_states], dim=1)
-
- hidden_states = resnet(hidden_states, temb)
- hidden_states = attn(hidden_states)
-
- if self.upsampler is not None:
- hidden_states = self.upsampler(hidden_states, temb)
-
- return hidden_states
-
-
-class CrossAttnUpBlock(nn.Module):
- """
- Unet's up block containing resnet, upsamplers, and self-attention blocks.
-
- Args:
- spatial_dims: The number of spatial dimensions.
- in_channels: number of input channels.
- prev_output_channel: number of channels from residual connection.
- out_channels: number of output channels.
- temb_channels: number of timestep embedding channels.
- num_res_blocks: number of residual blocks.
- norm_num_groups: number of groups for the group normalization.
- norm_eps: epsilon for the group normalization.
- add_upsample: if True add downsample block.
- resblock_updown: if True use residual blocks for upsampling.
- num_head_channels: number of channels in each attention head.
- transformer_num_layers: number of layers of Transformer blocks to use.
- cross_attention_dim: number of context dimensions to use.
- upcast_attention: if True, upcast attention operations to full precision.
- use_flash_attention: if True, use flash attention for a memory efficient attention mechanism.
- """
-
- def __init__(
- self,
- spatial_dims: int,
- in_channels: int,
- prev_output_channel: int,
- out_channels: int,
- temb_channels: int,
- num_res_blocks: int = 1,
- norm_num_groups: int = 32,
- norm_eps: float = 1e-6,
- add_upsample: bool = True,
- resblock_updown: bool = False,
- num_head_channels: int = 1,
- transformer_num_layers: int = 1,
- cross_attention_dim: int | None = None,
- upcast_attention: bool = False,
- use_flash_attention: bool = False,
- ) -> None:
- super().__init__()
- self.resblock_updown = resblock_updown
-
- resnets = []
- attentions = []
-
- for i in range(num_res_blocks):
- res_skip_channels = in_channels if (i == num_res_blocks - 1) else out_channels
- resnet_in_channels = prev_output_channel if i == 0 else out_channels
-
- resnets.append(
- ResnetBlock(
- spatial_dims=spatial_dims,
- in_channels=resnet_in_channels + res_skip_channels,
- out_channels=out_channels,
- temb_channels=temb_channels,
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- )
- )
- attentions.append(
- SpatialTransformer(
- spatial_dims=spatial_dims,
- in_channels=out_channels,
- num_attention_heads=out_channels // num_head_channels,
- num_head_channels=num_head_channels,
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- num_layers=transformer_num_layers,
- cross_attention_dim=cross_attention_dim,
- upcast_attention=upcast_attention,
- use_flash_attention=use_flash_attention,
- )
- )
-
- self.attentions = nn.ModuleList(attentions)
- self.resnets = nn.ModuleList(resnets)
-
- if add_upsample:
- if resblock_updown:
- self.upsampler = ResnetBlock(
- spatial_dims=spatial_dims,
- in_channels=out_channels,
- out_channels=out_channels,
- temb_channels=temb_channels,
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- up=True,
- )
- else:
- self.upsampler = Upsample(
- spatial_dims=spatial_dims, num_channels=out_channels, use_conv=True, out_channels=out_channels
- )
- else:
- self.upsampler = None
-
- def forward(
- self,
- hidden_states: torch.Tensor,
- res_hidden_states_list: list[torch.Tensor],
- temb: torch.Tensor,
- context: torch.Tensor | None = None,
- ) -> torch.Tensor:
- for resnet, attn in zip(self.resnets, self.attentions):
- # pop res hidden states
- res_hidden_states = res_hidden_states_list[-1]
- res_hidden_states_list = res_hidden_states_list[:-1]
- hidden_states = torch.cat([hidden_states, res_hidden_states], dim=1)
-
- hidden_states = resnet(hidden_states, temb)
- hidden_states = attn(hidden_states, context=context)
-
- if self.upsampler is not None:
- hidden_states = self.upsampler(hidden_states, temb)
-
- return hidden_states
-
-
-def get_down_block(
- spatial_dims: int,
- in_channels: int,
- out_channels: int,
- temb_channels: int,
- num_res_blocks: int,
- norm_num_groups: int,
- norm_eps: float,
- add_downsample: bool,
- resblock_updown: bool,
- with_attn: bool,
- with_cross_attn: bool,
- num_head_channels: int,
- transformer_num_layers: int,
- cross_attention_dim: int | None,
- upcast_attention: bool = False,
- use_flash_attention: bool = False,
-) -> nn.Module:
- if with_attn:
- return AttnDownBlock(
- spatial_dims=spatial_dims,
- in_channels=in_channels,
- out_channels=out_channels,
- temb_channels=temb_channels,
- num_res_blocks=num_res_blocks,
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- add_downsample=add_downsample,
- resblock_updown=resblock_updown,
- num_head_channels=num_head_channels,
- use_flash_attention=use_flash_attention,
- )
- elif with_cross_attn:
- return CrossAttnDownBlock(
- spatial_dims=spatial_dims,
- in_channels=in_channels,
- out_channels=out_channels,
- temb_channels=temb_channels,
- num_res_blocks=num_res_blocks,
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- add_downsample=add_downsample,
- resblock_updown=resblock_updown,
- num_head_channels=num_head_channels,
- transformer_num_layers=transformer_num_layers,
- cross_attention_dim=cross_attention_dim,
- upcast_attention=upcast_attention,
- use_flash_attention=use_flash_attention,
- )
- else:
- return DownBlock(
- spatial_dims=spatial_dims,
- in_channels=in_channels,
- out_channels=out_channels,
- temb_channels=temb_channels,
- num_res_blocks=num_res_blocks,
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- add_downsample=add_downsample,
- resblock_updown=resblock_updown,
- )
-
-
-def get_mid_block(
- spatial_dims: int,
- in_channels: int,
- temb_channels: int,
- norm_num_groups: int,
- norm_eps: float,
- with_conditioning: bool,
- num_head_channels: int,
- transformer_num_layers: int,
- cross_attention_dim: int | None,
- upcast_attention: bool = False,
- use_flash_attention: bool = False,
-) -> nn.Module:
- if with_conditioning:
- return CrossAttnMidBlock(
- spatial_dims=spatial_dims,
- in_channels=in_channels,
- temb_channels=temb_channels,
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- num_head_channels=num_head_channels,
- transformer_num_layers=transformer_num_layers,
- cross_attention_dim=cross_attention_dim,
- upcast_attention=upcast_attention,
- use_flash_attention=use_flash_attention,
- )
- else:
- return AttnMidBlock(
- spatial_dims=spatial_dims,
- in_channels=in_channels,
- temb_channels=temb_channels,
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- num_head_channels=num_head_channels,
- use_flash_attention=use_flash_attention,
- )
-
-
-def get_up_block(
- spatial_dims: int,
- in_channels: int,
- prev_output_channel: int,
- out_channels: int,
- temb_channels: int,
- num_res_blocks: int,
- norm_num_groups: int,
- norm_eps: float,
- add_upsample: bool,
- resblock_updown: bool,
- with_attn: bool,
- with_cross_attn: bool,
- num_head_channels: int,
- transformer_num_layers: int,
- cross_attention_dim: int | None,
- upcast_attention: bool = False,
- use_flash_attention: bool = False,
-) -> nn.Module:
- if with_attn:
- return AttnUpBlock(
- spatial_dims=spatial_dims,
- in_channels=in_channels,
- prev_output_channel=prev_output_channel,
- out_channels=out_channels,
- temb_channels=temb_channels,
- num_res_blocks=num_res_blocks,
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- add_upsample=add_upsample,
- resblock_updown=resblock_updown,
- num_head_channels=num_head_channels,
- use_flash_attention=use_flash_attention,
- )
- elif with_cross_attn:
- return CrossAttnUpBlock(
- spatial_dims=spatial_dims,
- in_channels=in_channels,
- prev_output_channel=prev_output_channel,
- out_channels=out_channels,
- temb_channels=temb_channels,
- num_res_blocks=num_res_blocks,
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- add_upsample=add_upsample,
- resblock_updown=resblock_updown,
- num_head_channels=num_head_channels,
- transformer_num_layers=transformer_num_layers,
- cross_attention_dim=cross_attention_dim,
- upcast_attention=upcast_attention,
- use_flash_attention=use_flash_attention,
- )
- else:
- return UpBlock(
- spatial_dims=spatial_dims,
- in_channels=in_channels,
- prev_output_channel=prev_output_channel,
- out_channels=out_channels,
- temb_channels=temb_channels,
- num_res_blocks=num_res_blocks,
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- add_upsample=add_upsample,
- resblock_updown=resblock_updown,
- )
-
-
-class DiffusionModelUNet(nn.Module):
- """
- Unet network with timestep embedding and attention mechanisms for conditioning based on
- Rombach et al. "High-Resolution Image Synthesis with Latent Diffusion Models" https://arxiv.org/abs/2112.10752
- and Pinaya et al. "Brain Imaging Generation with Latent Diffusion Models" https://arxiv.org/abs/2209.07162
-
- Args:
- spatial_dims: number of spatial dimensions.
- in_channels: number of input channels.
- out_channels: number of output channels.
- num_res_blocks: number of residual blocks (see ResnetBlock) per level.
- num_channels: tuple of block output channels.
- attention_levels: list of levels to add attention.
- norm_num_groups: number of groups for the normalization.
- norm_eps: epsilon for the normalization.
- resblock_updown: if True use residual blocks for up/downsampling.
- num_head_channels: number of channels in each attention head.
- with_conditioning: if True add spatial transformers to perform conditioning.
- transformer_num_layers: number of layers of Transformer blocks to use.
- cross_attention_dim: number of context dimensions to use.
- num_class_embeds: if specified (as an int), then this model will be class-conditional with `num_class_embeds`
- classes.
- upcast_attention: if True, upcast attention operations to full precision.
- use_flash_attention: if True, use flash attention for a memory efficient attention mechanism.
- """
-
- def __init__(
- self,
- spatial_dims: int,
- in_channels: int,
- out_channels: int,
- num_res_blocks: Sequence[int] | int = (2, 2, 2, 2),
- num_channels: Sequence[int] = (32, 64, 64, 64),
- attention_levels: Sequence[bool] = (False, False, True, True),
- norm_num_groups: int = 32,
- norm_eps: float = 1e-6,
- resblock_updown: bool = False,
- num_head_channels: int | Sequence[int] = 8,
- with_conditioning: bool = False,
- transformer_num_layers: int = 1,
- cross_attention_dim: int | None = None,
- num_class_embeds: int | None = None,
- upcast_attention: bool = False,
- use_flash_attention: bool = False,
- ) -> None:
- super().__init__()
- if with_conditioning is True and cross_attention_dim is None:
- raise ValueError(
- "DiffusionModelUNet expects dimension of the cross-attention conditioning (cross_attention_dim) "
- "when using with_conditioning."
- )
- if cross_attention_dim is not None and with_conditioning is False:
- raise ValueError(
- "DiffusionModelUNet expects with_conditioning=True when specifying the cross_attention_dim."
- )
-
- # All number of channels should be multiple of num_groups
- if any((out_channel % norm_num_groups) != 0 for out_channel in num_channels):
- raise ValueError("DiffusionModelUNet expects all num_channels being multiple of norm_num_groups")
-
- if len(num_channels) != len(attention_levels):
- raise ValueError("DiffusionModelUNet expects num_channels being same size of attention_levels")
-
- if isinstance(num_head_channels, int):
- num_head_channels = ensure_tuple_rep(num_head_channels, len(attention_levels))
-
- if len(num_head_channels) != len(attention_levels):
- raise ValueError(
- "num_head_channels should have the same length as attention_levels. For the i levels without attention,"
- " i.e. `attention_level[i]=False`, the num_head_channels[i] will be ignored."
- )
-
- if isinstance(num_res_blocks, int):
- num_res_blocks = ensure_tuple_rep(num_res_blocks, len(num_channels))
-
- if len(num_res_blocks) != len(num_channels):
- raise ValueError(
- "`num_res_blocks` should be a single integer or a tuple of integers with the same length as "
- "`num_channels`."
- )
-
- if use_flash_attention and not has_xformers:
- raise ValueError("use_flash_attention is True but xformers is not installed.")
-
- if use_flash_attention is True and not torch.cuda.is_available():
- raise ValueError(
- "torch.cuda.is_available() should be True but is False. Flash attention is only available for GPU."
- )
-
- self.in_channels = in_channels
- self.block_out_channels = num_channels
- self.out_channels = out_channels
- self.num_res_blocks = num_res_blocks
- self.attention_levels = attention_levels
- self.num_head_channels = num_head_channels
- self.with_conditioning = with_conditioning
-
- # input
- self.conv_in = Convolution(
- spatial_dims=spatial_dims,
- in_channels=in_channels,
- out_channels=num_channels[0],
- strides=1,
- kernel_size=3,
- padding=1,
- conv_only=True,
- )
-
- # time
- time_embed_dim = num_channels[0] * 4
- self.time_embed = nn.Sequential(
- nn.Linear(num_channels[0], time_embed_dim), nn.SiLU(), nn.Linear(time_embed_dim, time_embed_dim)
- )
-
- # class embedding
- self.num_class_embeds = num_class_embeds
- if num_class_embeds is not None:
- self.class_embedding = nn.Embedding(num_class_embeds, time_embed_dim)
-
- # down
- self.down_blocks = nn.ModuleList([])
- output_channel = num_channels[0]
- for i in range(len(num_channels)):
- input_channel = output_channel
- output_channel = num_channels[i]
- is_final_block = i == len(num_channels) - 1
-
- down_block = get_down_block(
- spatial_dims=spatial_dims,
- in_channels=input_channel,
- out_channels=output_channel,
- temb_channels=time_embed_dim,
- num_res_blocks=num_res_blocks[i],
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- add_downsample=not is_final_block,
- resblock_updown=resblock_updown,
- with_attn=(attention_levels[i] and not with_conditioning),
- with_cross_attn=(attention_levels[i] and with_conditioning),
- num_head_channels=num_head_channels[i],
- transformer_num_layers=transformer_num_layers,
- cross_attention_dim=cross_attention_dim,
- upcast_attention=upcast_attention,
- use_flash_attention=use_flash_attention,
- )
-
- self.down_blocks.append(down_block)
-
- # mid
- self.middle_block = get_mid_block(
- spatial_dims=spatial_dims,
- in_channels=num_channels[-1],
- temb_channels=time_embed_dim,
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- with_conditioning=with_conditioning,
- num_head_channels=num_head_channels[-1],
- transformer_num_layers=transformer_num_layers,
- cross_attention_dim=cross_attention_dim,
- upcast_attention=upcast_attention,
- use_flash_attention=use_flash_attention,
- )
-
- # up
- self.up_blocks = nn.ModuleList([])
- reversed_block_out_channels = list(reversed(num_channels))
- reversed_num_res_blocks = list(reversed(num_res_blocks))
- reversed_attention_levels = list(reversed(attention_levels))
- reversed_num_head_channels = list(reversed(num_head_channels))
- output_channel = reversed_block_out_channels[0]
- for i in range(len(reversed_block_out_channels)):
- prev_output_channel = output_channel
- output_channel = reversed_block_out_channels[i]
- input_channel = reversed_block_out_channels[min(i + 1, len(num_channels) - 1)]
-
- is_final_block = i == len(num_channels) - 1
-
- up_block = get_up_block(
- spatial_dims=spatial_dims,
- in_channels=input_channel,
- prev_output_channel=prev_output_channel,
- out_channels=output_channel,
- temb_channels=time_embed_dim,
- num_res_blocks=reversed_num_res_blocks[i] + 1,
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- add_upsample=not is_final_block,
- resblock_updown=resblock_updown,
- with_attn=(reversed_attention_levels[i] and not with_conditioning),
- with_cross_attn=(reversed_attention_levels[i] and with_conditioning),
- num_head_channels=reversed_num_head_channels[i],
- transformer_num_layers=transformer_num_layers,
- cross_attention_dim=cross_attention_dim,
- upcast_attention=upcast_attention,
- use_flash_attention=use_flash_attention,
- )
-
- self.up_blocks.append(up_block)
-
- # out
- self.out = nn.Sequential(
- nn.GroupNorm(num_groups=norm_num_groups, num_channels=num_channels[0], eps=norm_eps, affine=True),
- nn.SiLU(),
- zero_module(
- Convolution(
- spatial_dims=spatial_dims,
- in_channels=num_channels[0],
- out_channels=out_channels,
- strides=1,
- kernel_size=3,
- padding=1,
- conv_only=True,
- )
- ),
- )
-
- def forward(
- self,
- x: torch.Tensor,
- timesteps: torch.Tensor,
- context: torch.Tensor | None = None,
- class_labels: torch.Tensor | None = None,
- down_block_additional_residuals: tuple[torch.Tensor] | None = None,
- mid_block_additional_residual: torch.Tensor | None = None,
- ) -> torch.Tensor:
- """
- Args:
- x: input tensor (N, C, SpatialDims).
- timesteps: timestep tensor (N,).
- context: context tensor (N, 1, ContextDim).
- class_labels: context tensor (N, ).
- down_block_additional_residuals: additional residual tensors for down blocks (N, C, FeatureMapsDims).
- mid_block_additional_residual: additional residual tensor for mid block (N, C, FeatureMapsDims).
- """
- # 1. time
- t_emb = get_timestep_embedding(timesteps, self.block_out_channels[0])
-
- # timesteps does not contain any weights and will always return f32 tensors
- # but time_embedding might actually be running in fp16. so we need to cast here.
- # there might be better ways to encapsulate this.
- t_emb = t_emb.to(dtype=x.dtype)
- emb = self.time_embed(t_emb)
-
- # 2. class
- if self.num_class_embeds is not None:
- if class_labels is None:
- raise ValueError("class_labels should be provided when num_class_embeds > 0")
- class_emb = self.class_embedding(class_labels)
- class_emb = class_emb.to(dtype=x.dtype)
- emb = emb + class_emb
-
- # 3. initial convolution
- h = self.conv_in(x)
-
- # 4. down
- if context is not None and self.with_conditioning is False:
- raise ValueError("model should have with_conditioning = True if context is provided")
- down_block_res_samples: list[torch.Tensor] = [h]
- for downsample_block in self.down_blocks:
- h, res_samples = downsample_block(hidden_states=h, temb=emb, context=context)
- for residual in res_samples:
- down_block_res_samples.append(residual)
-
- # Additional residual conections for Controlnets
- if down_block_additional_residuals is not None:
- new_down_block_res_samples = ()
- for down_block_res_sample, down_block_additional_residual in zip(
- down_block_res_samples, down_block_additional_residuals
- ):
- down_block_res_sample = down_block_res_sample + down_block_additional_residual
- new_down_block_res_samples += (down_block_res_sample,)
-
- down_block_res_samples = new_down_block_res_samples
-
- # 5. mid
- h = self.middle_block(hidden_states=h, temb=emb, context=context)
-
- # Additional residual conections for Controlnets
- if mid_block_additional_residual is not None:
- h = h + mid_block_additional_residual
-
- # 6. up
- for upsample_block in self.up_blocks:
- res_samples = down_block_res_samples[-len(upsample_block.resnets) :]
- down_block_res_samples = down_block_res_samples[: -len(upsample_block.resnets)]
- h = upsample_block(hidden_states=h, res_hidden_states_list=res_samples, temb=emb, context=context)
-
- # 7. output block
- h = self.out(h)
-
- return h
-
-
-class DiffusionModelEncoder(nn.Module):
- """
- Classification Network based on the Encoder of the Diffusion Model, followed by fully connected layers. This network is based on
- Wolleb et al. "Diffusion Models for Medical Anomaly Detection" (https://arxiv.org/abs/2203.04306).
-
- Args:
- spatial_dims: number of spatial dimensions.
- in_channels: number of input channels.
- out_channels: number of output channels.
- num_res_blocks: number of residual blocks (see ResnetBlock) per level.
- num_channels: tuple of block output channels.
- attention_levels: list of levels to add attention.
- norm_num_groups: number of groups for the normalization.
- norm_eps: epsilon for the normalization.
- resblock_updown: if True use residual blocks for downsampling.
- num_head_channels: number of channels in each attention head.
- with_conditioning: if True add spatial transformers to perform conditioning.
- transformer_num_layers: number of layers of Transformer blocks to use.
- cross_attention_dim: number of context dimensions to use.
- num_class_embeds: if specified (as an int), then this model will be class-conditional with `num_class_embeds` classes.
- upcast_attention: if True, upcast attention operations to full precision.
- """
-
- def __init__(
- self,
- spatial_dims: int,
- in_channels: int,
- out_channels: int,
- num_res_blocks: Sequence[int] | int = (2, 2, 2, 2),
- num_channels: Sequence[int] = (32, 64, 64, 64),
- attention_levels: Sequence[bool] = (False, False, True, True),
- norm_num_groups: int = 32,
- norm_eps: float = 1e-6,
- resblock_updown: bool = False,
- num_head_channels: int | Sequence[int] = 8,
- with_conditioning: bool = False,
- transformer_num_layers: int = 1,
- cross_attention_dim: int | None = None,
- num_class_embeds: int | None = None,
- upcast_attention: bool = False,
- ) -> None:
- super().__init__()
- if with_conditioning is True and cross_attention_dim is None:
- raise ValueError(
- "DiffusionModelEncoder expects dimension of the cross-attention conditioning (cross_attention_dim) "
- "when using with_conditioning."
- )
- if cross_attention_dim is not None and with_conditioning is False:
- raise ValueError(
- "DiffusionModelEncoder expects with_conditioning=True when specifying the cross_attention_dim."
- )
-
- # All number of channels should be multiple of num_groups
- if any((out_channel % norm_num_groups) != 0 for out_channel in num_channels):
- raise ValueError("DiffusionModelEncoder expects all num_channels being multiple of norm_num_groups")
- if len(num_channels) != len(attention_levels):
- raise ValueError("DiffusionModelEncoder expects num_channels being same size of attention_levels")
-
- if isinstance(num_head_channels, int):
- num_head_channels = ensure_tuple_rep(num_head_channels, len(attention_levels))
-
- if len(num_head_channels) != len(attention_levels):
- raise ValueError(
- "num_head_channels should have the same length as attention_levels. For the i levels without attention,"
- " i.e. `attention_level[i]=False`, the num_head_channels[i] will be ignored."
- )
-
- self.in_channels = in_channels
- self.block_out_channels = num_channels
- self.out_channels = out_channels
- self.num_res_blocks = num_res_blocks
- self.attention_levels = attention_levels
- self.num_head_channels = num_head_channels
- self.with_conditioning = with_conditioning
-
- # input
- self.conv_in = Convolution(
- spatial_dims=spatial_dims,
- in_channels=in_channels,
- out_channels=num_channels[0],
- strides=1,
- kernel_size=3,
- padding=1,
- conv_only=True,
- )
-
- # time
- time_embed_dim = num_channels[0] * 4
- self.time_embed = nn.Sequential(
- nn.Linear(num_channels[0], time_embed_dim), nn.SiLU(), nn.Linear(time_embed_dim, time_embed_dim)
- )
-
- # class embedding
- self.num_class_embeds = num_class_embeds
- if num_class_embeds is not None:
- self.class_embedding = nn.Embedding(num_class_embeds, time_embed_dim)
-
- # down
- self.down_blocks = nn.ModuleList([])
- output_channel = num_channels[0]
- for i in range(len(num_channels)):
- input_channel = output_channel
- output_channel = num_channels[i]
- is_final_block = i == len(num_channels) # - 1
-
- down_block = get_down_block(
- spatial_dims=spatial_dims,
- in_channels=input_channel,
- out_channels=output_channel,
- temb_channels=time_embed_dim,
- num_res_blocks=num_res_blocks[i],
- norm_num_groups=norm_num_groups,
- norm_eps=norm_eps,
- add_downsample=not is_final_block,
- resblock_updown=resblock_updown,
- with_attn=(attention_levels[i] and not with_conditioning),
- with_cross_attn=(attention_levels[i] and with_conditioning),
- num_head_channels=num_head_channels[i],
- transformer_num_layers=transformer_num_layers,
- cross_attention_dim=cross_attention_dim,
- upcast_attention=upcast_attention,
- )
-
- self.down_blocks.append(down_block)
-
- self.out = nn.Sequential(nn.Linear(4096, 512), nn.ReLU(), nn.Dropout(0.1), nn.Linear(512, self.out_channels))
-
- def forward(
- self,
- x: torch.Tensor,
- timesteps: torch.Tensor,
- context: torch.Tensor | None = None,
- class_labels: torch.Tensor | None = None,
- ) -> torch.Tensor:
- """
- Args:
- x: input tensor (N, C, SpatialDims).
- timesteps: timestep tensor (N,).
- context: context tensor (N, 1, ContextDim).
- class_labels: context tensor (N, ).
- """
- # 1. time
- t_emb = get_timestep_embedding(timesteps, self.block_out_channels[0])
-
- # timesteps does not contain any weights and will always return f32 tensors
- # but time_embedding might actually be running in fp16. so we need to cast here.
- # there might be better ways to encapsulate this.
- t_emb = t_emb.to(dtype=x.dtype)
- emb = self.time_embed(t_emb)
-
- # 2. class
- if self.num_class_embeds is not None:
- if class_labels is None:
- raise ValueError("class_labels should be provided when num_class_embeds > 0")
- class_emb = self.class_embedding(class_labels)
- class_emb = class_emb.to(dtype=x.dtype)
- emb = emb + class_emb
-
- # 3. initial convolution
- h = self.conv_in(x)
-
- # 4. down
- if context is not None and self.with_conditioning is False:
- raise ValueError("model should have with_conditioning = True if context is provided")
- for downsample_block in self.down_blocks:
- h, _ = downsample_block(hidden_states=h, temb=emb, context=context)
-
- h = h.reshape(h.shape[0], -1)
- output = self.out(h)
-
- return output
diff --git a/generative/networks/nets/patchgan_discriminator.py b/generative/networks/nets/patchgan_discriminator.py
deleted file mode 100644
index bf09b743..00000000
--- a/generative/networks/nets/patchgan_discriminator.py
+++ /dev/null
@@ -1,254 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-from collections.abc import Sequence
-
-import torch
-import torch.nn as nn
-from monai.networks.blocks import Convolution
-from monai.networks.layers import Act
-
-
-class MultiScalePatchDiscriminator(nn.Sequential):
- """
- Multi-scale Patch-GAN discriminator based on Pix2PixHD:
- High-Resolution Image Synthesis and Semantic Manipulation with Conditional GANs
- Ting-Chun Wang1, Ming-Yu Liu1, Jun-Yan Zhu2, Andrew Tao1, Jan Kautz1, Bryan Catanzaro (1)
- (1) NVIDIA Corporation, 2UC Berkeley
- In CVPR 2018.
- Multi-Scale discriminator made up of several Patch-GAN discriminators, that process the images
- up to different spatial scales.
-
- Args:
- num_d: number of discriminators
- num_layers_d: number of Convolution layers (Conv + activation + normalisation + [dropout]) in each
- of the discriminators. In each layer, the number of channels are doubled and the spatial size is
- divided by 2.
- spatial_dims: number of spatial dimensions (1D, 2D etc.)
- num_channels: number of filters in the first convolutional layer (double of the value is taken from then on)
- in_channels: number of input channels
- out_channels: number of output channels in each discriminator
- kernel_size: kernel size of the convolution layers
- activation: activation layer type
- norm: normalisation type
- bias: introduction of layer bias
- dropout: proportion of dropout applied, defaults to 0.
- minimum_size_im: minimum spatial size of the input image. Introduced to make sure the architecture
- requested isn't going to downsample the input image beyond value of 1.
- last_conv_kernel_size: kernel size of the last convolutional layer.
- """
-
- def __init__(
- self,
- num_d: int,
- num_layers_d: int,
- spatial_dims: int,
- num_channels: int,
- in_channels: int,
- out_channels: int = 1,
- kernel_size: int = 4,
- activation: str | tuple = (Act.LEAKYRELU, {"negative_slope": 0.2}),
- norm: str | tuple = "BATCH",
- bias: bool = False,
- dropout: float | tuple = 0.0,
- minimum_size_im: int = 256,
- last_conv_kernel_size: int = 1,
- ) -> None:
- super().__init__()
- self.num_d = num_d
- self.num_layers_d = num_layers_d
- self.num_channels = num_channels
- self.padding = tuple([int((kernel_size - 1) / 2)] * spatial_dims)
- for i_ in range(self.num_d):
- num_layers_d_i = self.num_layers_d * (i_ + 1)
- output_size = float(minimum_size_im) / (2**num_layers_d_i)
- if output_size < 1:
- raise AssertionError(
- "Your image size is too small to take in up to %d discriminators with num_layers = %d."
- "Please reduce num_layers, reduce num_D or enter bigger images." % (i_, num_layers_d_i)
- )
- subnet_d = PatchDiscriminator(
- spatial_dims=spatial_dims,
- num_channels=self.num_channels,
- in_channels=in_channels,
- out_channels=out_channels,
- num_layers_d=num_layers_d_i,
- kernel_size=kernel_size,
- activation=activation,
- norm=norm,
- bias=bias,
- padding=self.padding,
- dropout=dropout,
- last_conv_kernel_size=last_conv_kernel_size,
- )
-
- self.add_module("discriminator_%d" % i_, subnet_d)
-
- def forward(self, i: torch.Tensor) -> tuple[list[torch.Tensor], list[list[torch.Tensor]]]:
- """
-
- Args:
- i: Input tensor
- Returns:
- list of outputs and another list of lists with the intermediate features
- of each discriminator.
- """
-
- out: list[torch.Tensor] = []
- intermediate_features: list[list[torch.Tensor]] = []
- for disc in self.children():
- out_d: list[torch.Tensor] = disc(i)
- out.append(out_d[-1])
- intermediate_features.append(out_d[:-1])
-
- return out, intermediate_features
-
-
-class PatchDiscriminator(nn.Sequential):
- """
- Patch-GAN discriminator based on Pix2PixHD:
- High-Resolution Image Synthesis and Semantic Manipulation with Conditional GANs
- Ting-Chun Wang1, Ming-Yu Liu1, Jun-Yan Zhu2, Andrew Tao1, Jan Kautz1, Bryan Catanzaro (1)
- (1) NVIDIA Corporation, 2UC Berkeley
- In CVPR 2018.
-
- Args:
- spatial_dims: number of spatial dimensions (1D, 2D etc.)
- num_channels: number of filters in the first convolutional layer (double of the value is taken from then on)
- in_channels: number of input channels
- out_channels: number of output channels in each discriminator
- num_layers_d: number of Convolution layers (Conv + activation + normalisation + [dropout]) in each
- of the discriminators. In each layer, the number of channels are doubled and the spatial size is
- divided by 2.
- kernel_size: kernel size of the convolution layers
- activation: activation layer type
- norm: normalisation type
- bias: introduction of layer bias
- padding: padding to be applied to the convolutional layers
- dropout: proportion of dropout applied, defaults to 0.
- last_conv_kernel_size: kernel size of the last convolutional layer.
- """
-
- def __init__(
- self,
- spatial_dims: int,
- num_channels: int,
- in_channels: int,
- out_channels: int = 1,
- num_layers_d: int = 3,
- kernel_size: int = 4,
- activation: str | tuple = (Act.LEAKYRELU, {"negative_slope": 0.2}),
- norm: str | tuple = "BATCH",
- bias: bool = False,
- padding: int | Sequence[int] = 1,
- dropout: float | tuple = 0.0,
- last_conv_kernel_size: int | None = None,
- ) -> None:
- super().__init__()
- self.num_layers_d = num_layers_d
- self.num_channels = num_channels
- if last_conv_kernel_size is None:
- last_conv_kernel_size = kernel_size
-
- self.add_module(
- "initial_conv",
- Convolution(
- spatial_dims=spatial_dims,
- kernel_size=kernel_size,
- in_channels=in_channels,
- out_channels=num_channels,
- act=activation,
- bias=True,
- norm=None,
- dropout=dropout,
- padding=padding,
- strides=2,
- ),
- )
-
- input_channels = num_channels
- output_channels = num_channels * 2
-
- # Initial Layer
- for l_ in range(self.num_layers_d):
- if l_ == self.num_layers_d - 1:
- stride = 1
- else:
- stride = 2
- layer = Convolution(
- spatial_dims=spatial_dims,
- kernel_size=kernel_size,
- in_channels=input_channels,
- out_channels=output_channels,
- act=activation,
- bias=bias,
- norm=norm,
- dropout=dropout,
- padding=padding,
- strides=stride,
- )
- self.add_module("%d" % l_, layer)
- input_channels = output_channels
- output_channels = output_channels * 2
-
- # Final layer
- self.add_module(
- "final_conv",
- Convolution(
- spatial_dims=spatial_dims,
- kernel_size=last_conv_kernel_size,
- in_channels=input_channels,
- out_channels=out_channels,
- bias=True,
- conv_only=True,
- padding=int((last_conv_kernel_size - 1) / 2),
- dropout=0.0,
- strides=1,
- ),
- )
-
- self.apply(self.initialise_weights)
-
- def forward(self, x: torch.Tensor) -> list[torch.Tensor]:
- """
-
- Args:
- x: input tensor
- feature-matching loss (regulariser loss) on the discriminators as well (see Pix2Pix paper).
- Returns:
- list of intermediate features, with the last element being the output.
- """
- out = [x]
- for submodel in self.children():
- intermediate_output = submodel(out[-1])
- out.append(intermediate_output)
-
- return out[1:]
-
- def initialise_weights(self, m: nn.Module) -> None:
- """
- Initialise weights of Convolution and BatchNorm layers.
-
- Args:
- m: instance of torch.nn.module (or of class inheriting torch.nn.module)
- """
- classname = m.__class__.__name__
- if classname.find("Conv2d") != -1:
- nn.init.normal_(m.weight.data, 0.0, 0.02)
- elif classname.find("Conv3d") != -1:
- nn.init.normal_(m.weight.data, 0.0, 0.02)
- elif classname.find("Conv1d") != -1:
- nn.init.normal_(m.weight.data, 0.0, 0.02)
- elif classname.find("BatchNorm") != -1:
- nn.init.normal_(m.weight.data, 1.0, 0.02)
- nn.init.constant_(m.bias.data, 0)
diff --git a/generative/networks/nets/spade_network.py b/generative/networks/nets/spade_network.py
deleted file mode 100644
index 8d4808ab..00000000
--- a/generative/networks/nets/spade_network.py
+++ /dev/null
@@ -1,424 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-from typing import Sequence
-
-import numpy as np
-import torch
-import torch.nn as nn
-import torch.nn.functional as F
-from monai.networks.blocks import Convolution
-from monai.networks.layers import Act
-from monai.utils.enums import StrEnum
-
-from generative.networks.blocks.spade_norm import SPADE
-
-class KLDLoss(nn.Module):
- """
- Computes the Kullback-Leibler divergence between a normal distribution with mean mu and variance logvar and
- one with mean 0 and variance 1.
- """
- def forward(self, mu, logvar):
- return -0.5 * torch.sum(1 + logvar - mu.pow(2) - logvar.exp())
-
-class UpsamplingModes(StrEnum):
- bicubic = "bicubic"
- nearest = "nearest"
- bilinear = "bilinear"
-
-
-class SPADE_ResNetBlock(nn.Module):
- """
- Creates a Residual Block with SPADE normalisation.
-
- Args:
- spatial_dims: number of spatial dimensions
- in_channels: number of input channels
- out_channels: number of output channels
- label_nc: number of semantic channels that will be taken into account in SPADE normalisation blocks
- spade_intermediate_channels: number of intermediate channels in the middle conv. layers in SPADE normalisation blocks
- norm: base normalisation type used on top of SPADE
- kernel_size: convolutional kernel size
- """
-
- def __init__(
- self,
- spatial_dims: int,
- in_channels: int,
- out_channels: int,
- label_nc: int,
- spade_intermediate_channels: int = 128,
- norm: str | tuple = "INSTANCE",
- kernel_size: int = 3,
- ):
-
- super().__init__()
- self.in_channels = in_channels
- self.out_channels = out_channels
- self.int_channels = min(self.in_channels, self.out_channels)
- self.learned_shortcut = self.in_channels != self.out_channels
- self.conv_0 = Convolution(
- spatial_dims=spatial_dims, in_channels=self.in_channels, out_channels=self.int_channels, act=None, norm=None
- )
- self.conv_1 = Convolution(
- spatial_dims=spatial_dims,
- in_channels=self.int_channels,
- out_channels=self.out_channels,
- act=None,
- norm=None,
- )
- self.activation = nn.LeakyReLU(0.2, False)
- self.norm_0 = SPADE(
- label_nc=label_nc,
- norm_nc=self.in_channels,
- kernel_size=kernel_size,
- spatial_dims=spatial_dims,
- hidden_channels=spade_intermediate_channels,
- norm=norm,
- )
- self.norm_1 = SPADE(
- label_nc=label_nc,
- norm_nc=self.int_channels,
- kernel_size=kernel_size,
- spatial_dims=spatial_dims,
- hidden_channels=spade_intermediate_channels,
- norm=norm,
- )
-
- if self.learned_shortcut:
- self.conv_s = Convolution(
- spatial_dims=spatial_dims,
- in_channels=self.in_channels,
- out_channels=self.out_channels,
- act=None,
- norm=None,
- kernel_size=1,
- )
- self.norm_s = SPADE(
- label_nc=label_nc,
- norm_nc=self.in_channels,
- kernel_size=kernel_size,
- spatial_dims=spatial_dims,
- hidden_channels=spade_intermediate_channels,
- norm=norm,
- )
-
- def forward(self, x, seg):
- x_s = self.shortcut(x, seg)
- dx = self.conv_0(self.activation(self.norm_0(x, seg)))
- dx = self.conv_1(self.activation(self.norm_1(dx, seg)))
- out = x_s + dx
- return out
-
- def shortcut(self, x, seg):
- if self.learned_shortcut:
- x_s = self.conv_s(self.norm_s(x, seg))
- else:
- x_s = x
- return x_s
-
-
-class SPADE_Encoder(nn.Module):
- """
- Encoding branch of a VAE compatible with a SPADE-like generator
-
- Args:
- spatial_dims: number of spatial dimensions
- in_channels: number of input channels
- z_dim: latent space dimension of the VAE containing the image sytle information
- num_channels: number of output after each downsampling block
- input_shape: spatial input shape of the tensor, necessary to do the reshaping after the linear layers
- of the autoencoder (HxWx[D])
- kernel_size: convolutional kernel size
- norm: normalisation layer type
- act: activation type
- """
-
- def __init__(
- self,
- spatial_dims: int,
- in_channels: int,
- z_dim: int,
- num_channels: Sequence[int],
- input_shape: Sequence[int],
- kernel_size: int = 3,
- norm: str | tuple = "INSTANCE",
- act: str | tuple = (Act.LEAKYRELU, {"negative_slope": 0.2}),
- ):
-
- super().__init__()
- self.in_channels = in_channels
- self.z_dim = z_dim
- self.num_channels = num_channels
- if len(input_shape) != spatial_dims:
- raise ValueError("Length of parameter input shape must match spatial_dims; got %s" % (input_shape))
- for s_ind, s_ in enumerate(input_shape):
- if s_ / (2 ** len(num_channels)) != s_ // (2 ** len(num_channels)):
- raise ValueError(
- "Each dimension of your input must be divisible by 2 ** (autoencoder depth)."
- "The shape in position %d, %d is not divisible by %d. " % (s_ind, s_, len(num_channels))
- )
- self.input_shape = input_shape
- self.latent_spatial_shape = [s_ // (2 ** len(self.num_channels)) for s_ in self.input_shape]
- blocks = []
- ch_init = self.in_channels
- for ch_ind, ch_value in enumerate(num_channels):
- blocks.append(
- Convolution(
- spatial_dims=spatial_dims,
- in_channels=ch_init,
- out_channels=ch_value,
- strides=2,
- kernel_size=kernel_size,
- norm=norm,
- act=act,
- )
- )
- ch_init = ch_value
-
- self.blocks = nn.ModuleList(blocks)
- self.fc_mu = nn.Linear(
- in_features=np.prod(self.latent_spatial_shape) * self.num_channels[-1], out_features=self.z_dim
- )
- self.fc_var = nn.Linear(
- in_features=np.prod(self.latent_spatial_shape) * self.num_channels[-1], out_features=self.z_dim
- )
-
- def forward(self, x):
- for block in self.blocks:
- x = block(x)
- x = x.view(x.size(0), -1)
- mu = self.fc_mu(x)
- logvar = self.fc_var(x)
- return mu, logvar
-
- def encode(self, x):
- for block in self.blocks:
- x = block(x)
- x = x.view(x.size(0), -1)
- mu = self.fc_mu(x)
- logvar = self.fc_var(x)
- return self.reparameterize(mu, logvar)
-
- def reparameterize(self, mu, logvar):
-
- std = torch.exp(0.5 * logvar)
- eps = torch.randn_like(std)
- return eps.mul(std) + mu
-
-
-class SPADE_Decoder(nn.Module):
- """
- Decoder branch of a SPADE-like generator. It can be used independently, without an encoding branch,
- behaving like a GAN, or coupled to a SPADE encoder.
-
- Args:
- label_nc: number of semantic labels
- spatial_dims: number of spatial dimensions
- out_channels: number of output channels
- label_nc: number of semantic channels used for the SPADE normalisation blocks
- input_shape: spatial input shape of the tensor, necessary to do the reshaping after the linear layers
- num_channels: number of output after each downsampling block
- z_dim: latent space dimension of the VAE containing the image sytle information (None if encoder is not used)
- is_gan: whether the decoder is going to be coupled to an autoencoder or not (true: not, false: yes)
- spade_intermediate_channels: number of channels in the intermediate layers of the SPADE normalisation blocks
- norm: base normalisation type
- act: activation layer type
- last_act: activation layer type for the last layer of the network (can differ from previous)
- kernel_size: convolutional kernel size
- upsampling_mode: upsampling mode (nearest, bilinear etc.)
- """
-
- def __init__(
- self,
- spatial_dims: int,
- out_channels: int,
- label_nc: int,
- input_shape: Sequence[int],
- num_channels: Sequence[int],
- z_dim: int | None = None,
- is_gan: bool = False,
- spade_intermediate_channels: int = 128,
- norm: str | tuple = "INSTANCE",
- act: str | tuple | None = (Act.LEAKYRELU, {"negative_slope": 0.2}),
- last_act: str | tuple | None = (Act.LEAKYRELU, {"negative_slope": 0.2}),
- kernel_size: int = 3,
- upsampling_mode: str = UpsamplingModes.nearest.value,
- ):
-
- super().__init__()
- self.is_gan = is_gan
- self.out_channels = out_channels
- self.label_nc = label_nc
- self.num_channels = num_channels
- if len(input_shape) != spatial_dims:
- raise ValueError("Length of parameter input shape must match spatial_dims; got %s" % (input_shape))
- for s_ind, s_ in enumerate(input_shape):
- if s_ / (2 ** len(num_channels)) != s_ // (2 ** len(num_channels)):
- raise ValueError(
- "Each dimension of your input must be divisible by 2 ** (autoencoder depth)."
- "The shape in position %d, %d is not divisible by %d. " % (s_ind, s_, len(num_channels))
- )
- self.latent_spatial_shape = [s_ // (2 ** len(self.num_channels)) for s_ in input_shape]
-
- if self.is_gan:
- self.fc = nn.Linear(label_nc, np.prod(self.latent_spatial_shape) * num_channels[0])
- else:
- self.fc = nn.Linear(z_dim, np.prod(self.latent_spatial_shape) * num_channels[0])
-
- blocks = []
- num_channels.append(self.out_channels)
- self.upsampling = torch.nn.Upsample(scale_factor=2, mode=upsampling_mode)
- for ch_ind, ch_value in enumerate(num_channels[:-1]):
- blocks.append(
- SPADE_ResNetBlock(
- spatial_dims=spatial_dims,
- in_channels=ch_value,
- out_channels=num_channels[ch_ind + 1],
- label_nc=label_nc,
- spade_intermediate_channels=spade_intermediate_channels,
- norm=norm,
- kernel_size=kernel_size,
- )
- )
-
- self.blocks = torch.nn.ModuleList(blocks)
- self.last_conv = Convolution(
- spatial_dims=spatial_dims,
- in_channels=num_channels[-1],
- out_channels=out_channels,
- padding=(kernel_size - 1) // 2,
- kernel_size=kernel_size,
- norm=None,
- act=last_act,
- )
-
- def forward(self, seg, z: torch.Tensor = None):
- if self.is_gan:
- x = F.interpolate(seg, size=tuple(self.latent_spatial_shape))
- x = self.fc(x)
- else:
- if z is None:
- z = torch.randn(seg.size(0), self.opt.z_dim, dtype=torch.float32, device=seg.get_device())
- x = self.fc(z)
- x = x.view(*[-1, self.num_channels[0]] + self.latent_spatial_shape)
-
- for res_block in self.blocks:
- x = res_block(x, seg)
- x = self.upsampling(x)
-
- x = self.last_conv(x)
- return x
-
-
-class SPADE_Net(nn.Module):
-
- """
- SPADE Network, implemented based on the code by Park, T et al. in "Semantic Image Synthesis with Spatially-Adaptive Normalization"
- (https://github.com/NVlabs/SPADE)
-
- Args:
- spatial_dims: number of spatial dimensions
- in_channels: number of input channels
- out_channels: number of output channels
- label_nc: number of semantic channels used for the SPADE normalisation blocks
- input_shape: spatial input shape of the tensor, necessary to do the reshaping after the linear layers
- num_channels: number of output after each downsampling block
- z_dim: latent space dimension of the VAE containing the image sytle information (None if encoder is not used)
- is_vae: whether the decoder is going to be coupled to an autoencoder (true) or not (false)
- spade_intermediate_channels: number of channels in the intermediate layers of the SPADE normalisation blocks
- norm: base normalisation type
- act: activation layer type
- last_act: activation layer type for the last layer of the network (can differ from previous)
- kernel_size: convolutional kernel size
- upsampling_mode: upsampling mode (nearest, bilinear etc.)
- """
-
- def __init__(
- self,
- spatial_dims: int,
- in_channels: int,
- out_channels: int,
- label_nc: int,
- input_shape: Sequence[int],
- num_channels: Sequence[int],
- z_dim: int | None = None,
- is_vae: bool = True,
- spade_intermediate_channels: int = 128,
- norm: str | tuple = "INSTANCE",
- act: str | tuple | None = (Act.LEAKYRELU, {"negative_slope": 0.2}),
- last_act: str | tuple | None = (Act.LEAKYRELU, {"negative_slope": 0.2}),
- kernel_size: int = 3,
- upsampling_mode: str = UpsamplingModes.nearest.value,
- ):
-
- super().__init__()
- self.is_vae = is_vae
- if self.is_vae and z_dim is None:
- ValueError("The latent space dimension mapped by parameter z_dim cannot be None is is_vae is True.")
-
- self.in_channels = in_channels
- self.out_channels = out_channels
- self.num_channels = num_channels
- self.label_nc = label_nc
- self.input_shape = input_shape
- self.kld_loss = KLDLoss()
-
- if self.is_vae:
- self.encoder = SPADE_Encoder(
- spatial_dims=spatial_dims,
- in_channels=in_channels,
- z_dim=z_dim,
- num_channels=num_channels,
- input_shape=input_shape,
- kernel_size=kernel_size,
- norm=norm,
- act=act,
- )
-
- decoder_channels = num_channels
- decoder_channels.reverse()
-
- self.decoder = SPADE_Decoder(
- spatial_dims=spatial_dims,
- out_channels=out_channels,
- label_nc=label_nc,
- input_shape=input_shape,
- num_channels=decoder_channels,
- z_dim=z_dim,
- is_gan=not is_vae,
- spade_intermediate_channels=spade_intermediate_channels,
- norm=norm,
- act=act,
- last_act=last_act,
- kernel_size=kernel_size,
- upsampling_mode=upsampling_mode,
- )
-
- def forward(self, seg: torch.Tensor, x: torch.Tensor | None = None):
- z = None
- if self.is_vae:
- z_mu, z_logvar = self.encoder(x)
- z = self.encoder.reparameterize(z_mu, z_logvar)
- kld_loss = self.kld_loss(z_mu, z_logvar)
- return self.decoder(seg, z), kld_loss
- else:
- return (self.decoder(seg, z),)
-
- def encode(self, x: torch.Tensor):
-
- return self.encoder.encode(x)
-
- def decode(self, seg: torch.Tensor, z: torch.Tensor | None = None):
-
- return self.decoder(seg, z)
diff --git a/generative/networks/nets/transformer.py b/generative/networks/nets/transformer.py
deleted file mode 100644
index dc961cc6..00000000
--- a/generative/networks/nets/transformer.py
+++ /dev/null
@@ -1,106 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-import torch
-import torch.nn as nn
-
-from generative.networks.blocks.transformerblock import TransformerBlock
-
-__all__ = ["DecoderOnlyTransformer"]
-
-
-class AbsolutePositionalEmbedding(nn.Module):
- """Absolute positional embedding.
-
- Args:
- max_seq_len: Maximum sequence length.
- embedding_dim: Dimensionality of the embedding.
- """
-
- def __init__(self, max_seq_len: int, embedding_dim: int) -> None:
- super().__init__()
- self.max_seq_len = max_seq_len
- self.embedding_dim = embedding_dim
- self.embedding = nn.Embedding(max_seq_len, embedding_dim)
-
- def forward(self, x: torch.Tensor) -> torch.Tensor:
- batch_size, seq_len = x.size()
- positions = torch.arange(seq_len, device=x.device).repeat(batch_size, 1)
- return self.embedding(positions)
-
-
-class DecoderOnlyTransformer(nn.Module):
- """Decoder-only (Autoregressive) Transformer model.
-
- Args:
- num_tokens: Number of tokens in the vocabulary.
- max_seq_len: Maximum sequence length.
- attn_layers_dim: Dimensionality of the attention layers.
- attn_layers_depth: Number of attention layers.
- attn_layers_heads: Number of attention heads.
- with_cross_attention: Whether to use cross attention for conditioning.
- embedding_dropout_rate: Dropout rate for the embedding.
- use_flash_attention: if True, use flash attention for a memory efficient attention mechanism.
- """
-
- def __init__(
- self,
- num_tokens: int,
- max_seq_len: int,
- attn_layers_dim: int,
- attn_layers_depth: int,
- attn_layers_heads: int,
- with_cross_attention: bool = False,
- embedding_dropout_rate: float = 0.0,
- use_flash_attention: bool = False,
- ) -> None:
- super().__init__()
- self.num_tokens = num_tokens
- self.max_seq_len = max_seq_len
- self.attn_layers_dim = attn_layers_dim
- self.attn_layers_depth = attn_layers_depth
- self.attn_layers_heads = attn_layers_heads
- self.with_cross_attention = with_cross_attention
-
- self.token_embeddings = nn.Embedding(num_tokens, attn_layers_dim)
- self.position_embeddings = AbsolutePositionalEmbedding(max_seq_len=max_seq_len, embedding_dim=attn_layers_dim)
- self.embedding_dropout = nn.Dropout(embedding_dropout_rate)
-
- self.blocks = nn.ModuleList(
- [
- TransformerBlock(
- hidden_size=attn_layers_dim,
- mlp_dim=attn_layers_dim * 4,
- num_heads=attn_layers_heads,
- dropout_rate=0.0,
- qkv_bias=False,
- causal=True,
- sequence_length=max_seq_len,
- with_cross_attention=with_cross_attention,
- use_flash_attention=use_flash_attention,
- )
- for _ in range(attn_layers_depth)
- ]
- )
-
- self.to_logits = nn.Linear(attn_layers_dim, num_tokens)
-
- def forward(self, x: torch.Tensor, context: torch.Tensor | None = None) -> torch.Tensor:
- tok_emb = self.token_embeddings(x)
- pos_emb = self.position_embeddings(x)
- x = self.embedding_dropout(tok_emb + pos_emb)
-
- for block in self.blocks:
- x = block(x, context=context)
-
- return self.to_logits(x)
diff --git a/generative/networks/nets/vqvae.py b/generative/networks/nets/vqvae.py
deleted file mode 100644
index 74173067..00000000
--- a/generative/networks/nets/vqvae.py
+++ /dev/null
@@ -1,453 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-from collections.abc import Sequence
-
-import torch
-import torch.nn as nn
-from monai.networks.blocks import Convolution
-from monai.networks.layers import Act
-from monai.utils import ensure_tuple_rep
-
-from generative.networks.layers.vector_quantizer import EMAQuantizer, VectorQuantizer
-
-__all__ = ["VQVAE"]
-
-
-class VQVAEResidualUnit(nn.Module):
- """
- Implementation of the ResidualLayer used in the VQVAE network as originally used in Morphology-preserving
- Autoregressive 3D Generative Modelling of the Brain by Tudosiu et al. (https://arxiv.org/pdf/2209.03177.pdf) and
- the original implementation that can be found at
- https://github.com/AmigoLab/SynthAnatomy/blob/main/src/networks/vqvae/baseline.py#L150.
-
- Args:
- spatial_dims: number of spatial spatial_dims of the input data.
- num_channels: number of input channels.
- num_res_channels: number of channels in the residual layers.
- act: activation type and arguments. Defaults to RELU.
- dropout: dropout ratio. Defaults to no dropout.
- bias: whether to have a bias term. Defaults to True.
- """
-
- def __init__(
- self,
- spatial_dims: int,
- num_channels: int,
- num_res_channels: int,
- act: tuple | str | None = Act.RELU,
- dropout: float = 0.0,
- bias: bool = True,
- ) -> None:
- super().__init__()
-
- self.spatial_dims = spatial_dims
- self.num_channels = num_channels
- self.num_res_channels = num_res_channels
- self.act = act
- self.dropout = dropout
- self.bias = bias
-
- self.conv1 = Convolution(
- spatial_dims=self.spatial_dims,
- in_channels=self.num_channels,
- out_channels=self.num_res_channels,
- adn_ordering="DA",
- act=self.act,
- dropout=self.dropout,
- bias=self.bias,
- )
-
- self.conv2 = Convolution(
- spatial_dims=self.spatial_dims,
- in_channels=self.num_res_channels,
- out_channels=self.num_channels,
- bias=self.bias,
- conv_only=True,
- )
-
- def forward(self, x):
- return torch.nn.functional.relu(x + self.conv2(self.conv1(x)), True)
-
-
-class Encoder(nn.Module):
- """
- Encoder module for VQ-VAE.
-
- Args:
- spatial_dims: number of spatial spatial_dims.
- in_channels: number of input channels.
- out_channels: number of channels in the latent space (embedding_dim).
- num_channels: number of channels at each level.
- num_res_layers: number of sequential residual layers at each level.
- num_res_channels: number of channels in the residual layers at each level.
- downsample_parameters: A Tuple of Tuples for defining the downsampling convolutions. Each Tuple should hold the
- following information stride (int), kernel_size (int), dilation (int) and padding (int).
- dropout: dropout ratio.
- act: activation type and arguments.
- """
-
- def __init__(
- self,
- spatial_dims: int,
- in_channels: int,
- out_channels: int,
- num_channels: Sequence[int],
- num_res_layers: int,
- num_res_channels: Sequence[int],
- downsample_parameters: Sequence[Sequence[int, int, int, int], ...],
- dropout: float,
- act: tuple | str | None,
- ) -> None:
- super().__init__()
- self.spatial_dims = spatial_dims
- self.in_channels = in_channels
- self.out_channels = out_channels
- self.num_channels = num_channels
- self.num_res_layers = num_res_layers
- self.num_res_channels = num_res_channels
- self.downsample_parameters = downsample_parameters
- self.dropout = dropout
- self.act = act
-
- blocks = []
-
- for i in range(len(self.num_channels)):
- blocks.append(
- Convolution(
- spatial_dims=self.spatial_dims,
- in_channels=self.in_channels if i == 0 else self.num_channels[i - 1],
- out_channels=self.num_channels[i],
- strides=self.downsample_parameters[i][0],
- kernel_size=self.downsample_parameters[i][1],
- adn_ordering="DA",
- act=self.act,
- dropout=None if i == 0 else self.dropout,
- dropout_dim=1,
- dilation=self.downsample_parameters[i][2],
- padding=self.downsample_parameters[i][3],
- )
- )
-
- for _ in range(self.num_res_layers):
- blocks.append(
- VQVAEResidualUnit(
- spatial_dims=self.spatial_dims,
- num_channels=self.num_channels[i],
- num_res_channels=self.num_res_channels[i],
- act=self.act,
- dropout=self.dropout,
- )
- )
-
- blocks.append(
- Convolution(
- spatial_dims=self.spatial_dims,
- in_channels=self.num_channels[len(self.num_channels) - 1],
- out_channels=self.out_channels,
- strides=1,
- kernel_size=3,
- padding=1,
- conv_only=True,
- )
- )
-
- self.blocks = nn.ModuleList(blocks)
-
- def forward(self, x: torch.Tensor) -> torch.Tensor:
- for block in self.blocks:
- x = block(x)
- return x
-
-
-class Decoder(nn.Module):
- """
- Decoder module for VQ-VAE.
-
- Args:
- spatial_dims: number of spatial spatial_dims.
- in_channels: number of channels in the latent space (embedding_dim).
- out_channels: number of output channels.
- num_channels: number of channels at each level.
- num_res_layers: number of sequential residual layers at each level.
- num_res_channels: number of channels in the residual layers at each level.
- upsample_parameters: A Tuple of Tuples for defining the upsampling convolutions. Each Tuple should hold the
- following information stride (int), kernel_size (int), dilation (int), padding (int), output_padding (int).
- dropout: dropout ratio.
- act: activation type and arguments.
- output_act: activation type and arguments for the output.
- """
-
- def __init__(
- self,
- spatial_dims: int,
- in_channels: int,
- out_channels: int,
- num_channels: Sequence[int],
- num_res_layers: int,
- num_res_channels: Sequence[int],
- upsample_parameters: Sequence[Sequence[int, int, int, int], ...],
- dropout: float,
- act: tuple | str | None,
- output_act: tuple | str | None,
- ) -> None:
- super().__init__()
- self.spatial_dims = spatial_dims
- self.in_channels = in_channels
- self.out_channels = out_channels
- self.num_channels = num_channels
- self.num_res_layers = num_res_layers
- self.num_res_channels = num_res_channels
- self.upsample_parameters = upsample_parameters
- self.dropout = dropout
- self.act = act
- self.output_act = output_act
-
- reversed_num_channels = list(reversed(self.num_channels))
-
- blocks = []
- blocks.append(
- Convolution(
- spatial_dims=self.spatial_dims,
- in_channels=self.in_channels,
- out_channels=reversed_num_channels[0],
- strides=1,
- kernel_size=3,
- padding=1,
- conv_only=True,
- )
- )
-
- reversed_num_res_channels = list(reversed(self.num_res_channels))
- for i in range(len(self.num_channels)):
- for _ in range(self.num_res_layers):
- blocks.append(
- VQVAEResidualUnit(
- spatial_dims=self.spatial_dims,
- num_channels=reversed_num_channels[i],
- num_res_channels=reversed_num_res_channels[i],
- act=self.act,
- dropout=self.dropout,
- )
- )
-
- blocks.append(
- Convolution(
- spatial_dims=self.spatial_dims,
- in_channels=reversed_num_channels[i],
- out_channels=self.out_channels if i == len(self.num_channels) - 1 else reversed_num_channels[i + 1],
- strides=self.upsample_parameters[i][0],
- kernel_size=self.upsample_parameters[i][1],
- adn_ordering="DA",
- act=self.act,
- dropout=self.dropout if i != len(self.num_channels) - 1 else None,
- norm=None,
- dilation=self.upsample_parameters[i][2],
- conv_only=i == len(self.num_channels) - 1,
- is_transposed=True,
- padding=self.upsample_parameters[i][3],
- output_padding=self.upsample_parameters[i][4],
- )
- )
-
- if self.output_act:
- blocks.append(Act[self.output_act]())
-
- self.blocks = nn.ModuleList(blocks)
-
- def forward(self, x: torch.Tensor) -> torch.Tensor:
- for block in self.blocks:
- x = block(x)
- return x
-
-
-class VQVAE(nn.Module):
- """
- Vector-Quantised Variational Autoencoder (VQ-VAE) used in Morphology-preserving Autoregressive 3D Generative
- Modelling of the Brain by Tudosiu et al. (https://arxiv.org/pdf/2209.03177.pdf) and the original implementation
- that can be found at https://github.com/AmigoLab/SynthAnatomy/blob/main/src/networks/vqvae/baseline.py#L163/
-
- Args:
- spatial_dims: number of spatial spatial_dims.
- in_channels: number of input channels.
- out_channels: number of output channels.
- downsample_parameters: A Tuple of Tuples for defining the downsampling convolutions. Each Tuple should hold the
- following information stride (int), kernel_size (int), dilation (int) and padding (int).
- upsample_parameters: A Tuple of Tuples for defining the upsampling convolutions. Each Tuple should hold the
- following information stride (int), kernel_size (int), dilation (int), padding (int), output_padding (int).
- num_res_layers: number of sequential residual layers at each level.
- num_channels: number of channels at each level.
- num_res_channels: number of channels in the residual layers at each level.
- num_embeddings: VectorQuantization number of atomic elements in the codebook.
- embedding_dim: VectorQuantization number of channels of the input and atomic elements.
- commitment_cost: VectorQuantization commitment_cost.
- decay: VectorQuantization decay.
- epsilon: VectorQuantization epsilon.
- act: activation type and arguments.
- dropout: dropout ratio.
- output_act: activation type and arguments for the output.
- ddp_sync: whether to synchronize the codebook across processes.
- use_checkpointing if True, use activation checkpointing to save memory.
- """
-
- def __init__(
- self,
- spatial_dims: int,
- in_channels: int,
- out_channels: int,
- num_channels: Sequence[int] | int = (96, 96, 192),
- num_res_layers: int = 3,
- num_res_channels: Sequence[int] | int = (96, 96, 192),
- downsample_parameters: Sequence[Sequence[int, int, int, int], ...]
- | Sequence[int, int, int, int] = ((2, 4, 1, 1), (2, 4, 1, 1), (2, 4, 1, 1)),
- upsample_parameters: Sequence[Sequence[int, int, int, int, int], ...]
- | Sequence[int, int, int, int] = ((2, 4, 1, 1, 0), (2, 4, 1, 1, 0), (2, 4, 1, 1, 0)),
- num_embeddings: int = 32,
- embedding_dim: int = 64,
- embedding_init: str = "normal",
- commitment_cost: float = 0.25,
- decay: float = 0.5,
- epsilon: float = 1e-5,
- dropout: float = 0.0,
- act: tuple | str | None = Act.RELU,
- output_act: tuple | str | None = None,
- ddp_sync: bool = True,
- use_checkpointing: bool = False,
- ):
- super().__init__()
-
- self.in_channels = in_channels
- self.out_channels = out_channels
- self.spatial_dims = spatial_dims
- self.num_channels = num_channels
- self.num_embeddings = num_embeddings
- self.embedding_dim = embedding_dim
- self.use_checkpointing = use_checkpointing
-
- if isinstance(num_res_channels, int):
- num_res_channels = ensure_tuple_rep(num_res_channels, len(num_channels))
-
- if len(num_res_channels) != len(num_channels):
- raise ValueError(
- "`num_res_channels` should be a single integer or a tuple of integers with the same length as "
- "`num_channels`."
- )
-
- if not all(isinstance(values, (int, Sequence)) for values in downsample_parameters):
- raise ValueError("`downsample_parameters` should be a single tuple of integer or a tuple of tuples.")
-
- if not all(isinstance(values, (int, Sequence)) for values in upsample_parameters):
- raise ValueError("`upsample_parameters` should be a single tuple of integer or a tuple of tuples.")
-
- if all(isinstance(values, int) for values in upsample_parameters):
- upsample_parameters = (upsample_parameters,) * len(num_channels)
-
- if all(isinstance(values, int) for values in downsample_parameters):
- downsample_parameters = (downsample_parameters,) * len(num_channels)
-
- for parameter in downsample_parameters:
- if len(parameter) != 4:
- raise ValueError("`downsample_parameters` should be a tuple of tuples with 4 integers.")
-
- for parameter in upsample_parameters:
- if len(parameter) != 5:
- raise ValueError("`upsample_parameters` should be a tuple of tuples with 5 integers.")
-
- if len(downsample_parameters) != len(num_channels):
- raise ValueError(
- "`downsample_parameters` should be a tuple of tuples with the same length as `num_channels`."
- )
-
- if len(upsample_parameters) != len(num_channels):
- raise ValueError(
- "`upsample_parameters` should be a tuple of tuples with the same length as `num_channels`."
- )
-
- self.num_res_layers = num_res_layers
- self.num_res_channels = num_res_channels
-
- self.encoder = Encoder(
- spatial_dims=spatial_dims,
- in_channels=in_channels,
- out_channels=embedding_dim,
- num_channels=num_channels,
- num_res_layers=num_res_layers,
- num_res_channels=num_res_channels,
- downsample_parameters=downsample_parameters,
- dropout=dropout,
- act=act,
- )
-
- self.decoder = Decoder(
- spatial_dims=spatial_dims,
- in_channels=embedding_dim,
- out_channels=out_channels,
- num_channels=num_channels,
- num_res_layers=num_res_layers,
- num_res_channels=num_res_channels,
- upsample_parameters=upsample_parameters,
- dropout=dropout,
- act=act,
- output_act=output_act,
- )
-
- self.quantizer = VectorQuantizer(
- quantizer=EMAQuantizer(
- spatial_dims=spatial_dims,
- num_embeddings=num_embeddings,
- embedding_dim=embedding_dim,
- commitment_cost=commitment_cost,
- decay=decay,
- epsilon=epsilon,
- embedding_init=embedding_init,
- ddp_sync=ddp_sync,
- )
- )
-
- def encode(self, images: torch.Tensor) -> torch.Tensor:
- if self.use_checkpointing:
- return torch.utils.checkpoint.checkpoint(self.encoder, images, use_reentrant=False)
- else:
- return self.encoder(images)
-
- def quantize(self, encodings: torch.Tensor) -> tuple[torch.Tensor, torch.Tensor]:
- x_loss, x = self.quantizer(encodings)
- return x, x_loss
-
- def decode(self, quantizations: torch.Tensor) -> torch.Tensor:
- if self.use_checkpointing:
- return torch.utils.checkpoint.checkpoint(self.decoder, quantizations, use_reentrant=False)
- else:
- return self.decoder(quantizations)
-
- def index_quantize(self, images: torch.Tensor) -> torch.Tensor:
- return self.quantizer.quantize(self.encode(images=images))
-
- def decode_samples(self, embedding_indices: torch.Tensor) -> torch.Tensor:
- return self.decode(self.quantizer.embed(embedding_indices))
-
- def forward(self, images: torch.Tensor) -> tuple[torch.Tensor, torch.Tensor]:
- quantizations, quantization_losses = self.quantize(self.encode(images))
- reconstruction = self.decode(quantizations)
-
- return reconstruction, quantization_losses
-
- def encode_stage_2_inputs(self, x: torch.Tensor) -> torch.Tensor:
- z = self.encode(x)
- e, _ = self.quantize(z)
- return e
-
- def decode_stage_2_outputs(self, z: torch.Tensor) -> torch.Tensor:
- e, _ = self.quantize(z)
- image = self.decode(e)
- return image
diff --git a/generative/networks/schedulers/__init__.py b/generative/networks/schedulers/__init__.py
deleted file mode 100644
index 29e9020d..00000000
--- a/generative/networks/schedulers/__init__.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-from .ddim import DDIMScheduler
-from .ddpm import DDPMScheduler
-from .pndm import PNDMScheduler
-from .scheduler import NoiseSchedules, Scheduler
diff --git a/generative/networks/schedulers/ddim.py b/generative/networks/schedulers/ddim.py
deleted file mode 100644
index 7c3de648..00000000
--- a/generative/networks/schedulers/ddim.py
+++ /dev/null
@@ -1,282 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# =========================================================================
-# Adapted from https://github.com/huggingface/diffusers
-# which has the following license:
-# https://github.com/huggingface/diffusers/blob/main/LICENSE
-#
-# Copyright 2022 UC Berkeley Team and The HuggingFace Team. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# =========================================================================
-
-from __future__ import annotations
-
-import numpy as np
-import torch
-from monai.utils import StrEnum
-
-from .scheduler import Scheduler
-
-
-class DDIMPredictionType(StrEnum):
- """
- Set of valid prediction type names for the DDIM scheduler's `prediction_type` argument.
-
- epsilon: predicting the noise of the diffusion process
- sample: directly predicting the noisy sample
- v_prediction: velocity prediction, see section 2.4 https://imagen.research.google/video/paper.pdf
- """
-
- EPSILON = "epsilon"
- SAMPLE = "sample"
- V_PREDICTION = "v_prediction"
-
-
-class DDIMScheduler(Scheduler):
- """
- Denoising diffusion implicit models is a scheduler that extends the denoising procedure introduced in denoising
- diffusion probabilistic models (DDPMs) with non-Markovian guidance. Based on: Song et al. "Denoising Diffusion
- Implicit Models" https://arxiv.org/abs/2010.02502
-
- Args:
- num_train_timesteps: number of diffusion steps used to train the model.
- schedule: member of NoiseSchedules, name of noise schedule function in component store
- clip_sample: option to clip predicted sample between -1 and 1 for numerical stability.
- set_alpha_to_one: each diffusion step uses the value of alphas product at that step and at the previous one.
- For the final step there is no previous alpha. When this option is `True` the previous alpha product is
- fixed to `1`, otherwise it uses the value of alpha at step 0.
- steps_offset: an offset added to the inference steps. You can use a combination of `steps_offset=1` and
- `set_alpha_to_one=False`, to make the last step use step 0 for the previous alpha product, as done in
- stable diffusion.
- prediction_type: member of DDPMPredictionType
- schedule_args: arguments to pass to the schedule function
-
- """
-
- def __init__(
- self,
- num_train_timesteps: int = 1000,
- schedule: str = "linear_beta",
- clip_sample: bool = True,
- set_alpha_to_one: bool = True,
- steps_offset: int = 0,
- prediction_type: str = DDIMPredictionType.EPSILON,
- **schedule_args,
- ) -> None:
- super().__init__(num_train_timesteps, schedule, **schedule_args)
-
- if prediction_type not in DDIMPredictionType.__members__.values():
- raise ValueError("Argument `prediction_type` must be a member of DDIMPredictionType")
-
- self.prediction_type = prediction_type
-
- # At every step in ddim, we are looking into the previous alphas_cumprod
- # For the final step, there is no previous alphas_cumprod because we are already at 0
- # `set_alpha_to_one` decides whether we set this parameter simply to one or
- # whether we use the final alpha of the "non-previous" one.
- self.final_alpha_cumprod = torch.tensor(1.0) if set_alpha_to_one else self.alphas_cumprod[0]
-
- # standard deviation of the initial noise distribution
- self.init_noise_sigma = 1.0
-
- self.timesteps = torch.from_numpy(np.arange(0, self.num_train_timesteps)[::-1].astype(np.int64))
-
- self.clip_sample = clip_sample
- self.steps_offset = steps_offset
-
- # default the number of inference timesteps to the number of train steps
- self.set_timesteps(self.num_train_timesteps)
-
- def set_timesteps(self, num_inference_steps: int, device: str | torch.device | None = None) -> None:
- """
- Sets the discrete timesteps used for the diffusion chain. Supporting function to be run before inference.
-
- Args:
- num_inference_steps: number of diffusion steps used when generating samples with a pre-trained model.
- device: target device to put the data.
- """
- if num_inference_steps > self.num_train_timesteps:
- raise ValueError(
- f"`num_inference_steps`: {num_inference_steps} cannot be larger than `self.num_train_timesteps`:"
- f" {self.num_train_timesteps} as the unet model trained with this scheduler can only handle"
- f" maximal {self.num_train_timesteps} timesteps."
- )
-
- self.num_inference_steps = num_inference_steps
- step_ratio = self.num_train_timesteps // self.num_inference_steps
- # creates integer timesteps by multiplying by ratio
- # casting to int to avoid issues when num_inference_step is power of 3
- timesteps = (np.arange(0, num_inference_steps) * step_ratio).round()[::-1].copy().astype(np.int64)
- self.timesteps = torch.from_numpy(timesteps).to(device)
- self.timesteps += self.steps_offset
-
- def _get_variance(self, timestep: int, prev_timestep: torch.Tensor) -> torch.Tensor:
- alpha_prod_t = self.alphas_cumprod[timestep]
- alpha_prod_t_prev = self.alphas_cumprod[prev_timestep] if prev_timestep >= 0 else self.final_alpha_cumprod
- beta_prod_t = 1 - alpha_prod_t
- beta_prod_t_prev = 1 - alpha_prod_t_prev
-
- variance = (beta_prod_t_prev / beta_prod_t) * (1 - alpha_prod_t / alpha_prod_t_prev)
-
- return variance
-
- def step(
- self,
- model_output: torch.Tensor,
- timestep: int,
- sample: torch.Tensor,
- eta: float = 0.0,
- generator: torch.Generator | None = None,
- ) -> tuple[torch.Tensor, torch.Tensor]:
- """
- Predict the sample at the previous timestep by reversing the SDE. Core function to propagate the diffusion
- process from the learned model outputs (most often the predicted noise).
-
- Args:
- model_output: direct output from learned diffusion model.
- timestep: current discrete timestep in the diffusion chain.
- sample: current instance of sample being created by diffusion process.
- eta: weight of noise for added noise in diffusion step.
- predict_epsilon: flag to use when model predicts the samples directly instead of the noise, epsilon.
- generator: random number generator.
-
- Returns:
- pred_prev_sample: Predicted previous sample
- pred_original_sample: Predicted original sample
- """
- # See formulas (12) and (16) of DDIM paper https://arxiv.org/pdf/2010.02502.pdf
- # Ideally, read DDIM paper in-detail understanding
-
- # Notation ( ->
- # - model_output -> e_theta(x_t, t)
- # - pred_original_sample -> f_theta(x_t, t) or x_0
- # - std_dev_t -> sigma_t
- # - eta -> η
- # - pred_sample_direction -> "direction pointing to x_t"
- # - pred_prev_sample -> "x_t-1"
-
- # 1. get previous step value (=t-1)
- prev_timestep = timestep - self.num_train_timesteps // self.num_inference_steps
-
- # 2. compute alphas, betas
- alpha_prod_t = self.alphas_cumprod[timestep]
- alpha_prod_t_prev = self.alphas_cumprod[prev_timestep] if prev_timestep >= 0 else self.final_alpha_cumprod
-
- beta_prod_t = 1 - alpha_prod_t
-
- # 3. compute predicted original sample from predicted noise also called
- # "predicted x_0" of formula (12) from https://arxiv.org/pdf/2010.02502.pdf
- if self.prediction_type == DDIMPredictionType.EPSILON:
- pred_original_sample = (sample - (beta_prod_t**0.5) * model_output) / (alpha_prod_t**0.5)
- pred_epsilon = model_output
- elif self.prediction_type == DDIMPredictionType.SAMPLE:
- pred_original_sample = model_output
- pred_epsilon = (sample - (alpha_prod_t**0.5) * pred_original_sample) / (beta_prod_t**0.5)
- elif self.prediction_type == DDIMPredictionType.V_PREDICTION:
- pred_original_sample = (alpha_prod_t**0.5) * sample - (beta_prod_t**0.5) * model_output
- pred_epsilon = (alpha_prod_t**0.5) * model_output + (beta_prod_t**0.5) * sample
-
- # 4. Clip "predicted x_0"
- if self.clip_sample:
- pred_original_sample = torch.clamp(pred_original_sample, -1, 1)
-
- # 5. compute variance: "sigma_t(η)" -> see formula (16)
- # σ_t = sqrt((1 − α_t−1)/(1 − α_t)) * sqrt(1 − α_t/α_t−1)
- variance = self._get_variance(timestep, prev_timestep)
- std_dev_t = eta * variance**0.5
-
- # 6. compute "direction pointing to x_t" of formula (12) from https://arxiv.org/pdf/2010.02502.pdf
- pred_sample_direction = (1 - alpha_prod_t_prev - std_dev_t**2) ** 0.5 * pred_epsilon
-
- # 7. compute x_t-1 without "random noise" of formula (12) from https://arxiv.org/pdf/2010.02502.pdf
- pred_prev_sample = alpha_prod_t_prev**0.5 * pred_original_sample + pred_sample_direction
-
- if eta > 0:
- # randn_like does not support generator https://github.com/pytorch/pytorch/issues/27072
- device = model_output.device if torch.is_tensor(model_output) else "cpu"
- noise = torch.randn(model_output.shape, dtype=model_output.dtype, generator=generator).to(device)
- variance = self._get_variance(timestep, prev_timestep) ** 0.5 * eta * noise
-
- pred_prev_sample = pred_prev_sample + variance
-
- return pred_prev_sample, pred_original_sample
-
- def reversed_step(
- self, model_output: torch.Tensor, timestep: int, sample: torch.Tensor
- ) -> tuple[torch.Tensor, torch.Tensor]:
- """
- Predict the sample at the next timestep by reversing the SDE. Core function to propagate the diffusion
- process from the learned model outputs (most often the predicted noise).
-
- Args:
- model_output: direct output from learned diffusion model.
- timestep: current discrete timestep in the diffusion chain.
- sample: current instance of sample being created by diffusion process.
-
- Returns:
- pred_prev_sample: Predicted previous sample
- pred_original_sample: Predicted original sample
- """
- # See Appendix F at https://arxiv.org/pdf/2105.05233.pdf, or Equation (6) in https://arxiv.org/pdf/2203.04306.pdf
-
- # Notation ( ->
- # - model_output -> e_theta(x_t, t)
- # - pred_original_sample -> f_theta(x_t, t) or x_0
- # - std_dev_t -> sigma_t
- # - eta -> η
- # - pred_sample_direction -> "direction pointing to x_t"
- # - pred_post_sample -> "x_t+1"
-
- # 1. get previous step value (=t+1)
- prev_timestep = timestep + self.num_train_timesteps // self.num_inference_steps
-
- # 2. compute alphas, betas at timestep t+1
- alpha_prod_t = self.alphas_cumprod[timestep]
- alpha_prod_t_prev = self.alphas_cumprod[prev_timestep] if prev_timestep >= 0 else self.final_alpha_cumprod
-
- beta_prod_t = 1 - alpha_prod_t
-
- # 3. compute predicted original sample from predicted noise also called
- # "predicted x_0" of formula (12) from https://arxiv.org/pdf/2010.02502.pdf
-
- if self.prediction_type == DDIMPredictionType.EPSILON:
- pred_original_sample = (sample - beta_prod_t ** (0.5) * model_output) / alpha_prod_t ** (0.5)
- pred_epsilon = model_output
- elif self.prediction_type == DDIMPredictionType.SAMPLE:
- pred_original_sample = model_output
- pred_epsilon = (sample - alpha_prod_t ** (0.5) * pred_original_sample) / beta_prod_t ** (0.5)
- elif self.prediction_type == DDIMPredictionType.V_PREDICTION:
- pred_original_sample = (alpha_prod_t**0.5) * sample - (beta_prod_t**0.5) * model_output
- pred_epsilon = (alpha_prod_t**0.5) * model_output + (beta_prod_t**0.5) * sample
-
- # 4. Clip "predicted x_0"
- if self.clip_sample:
- pred_original_sample = torch.clamp(pred_original_sample, -1, 1)
-
- # 5. compute "direction pointing to x_t" of formula (12) from https://arxiv.org/pdf/2010.02502.pdf
- pred_sample_direction = (1 - alpha_prod_t_prev) ** (0.5) * pred_epsilon
-
- # 6. compute x_t+1 without "random noise" of formula (12) from https://arxiv.org/pdf/2010.02502.pdf
- pred_post_sample = alpha_prod_t_prev ** (0.5) * pred_original_sample + pred_sample_direction
-
- return pred_post_sample, pred_original_sample
diff --git a/generative/networks/schedulers/ddpm.py b/generative/networks/schedulers/ddpm.py
deleted file mode 100644
index e543502c..00000000
--- a/generative/networks/schedulers/ddpm.py
+++ /dev/null
@@ -1,242 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# =========================================================================
-# Adapted from https://github.com/huggingface/diffusers
-# which has the following license:
-# https://github.com/huggingface/diffusers/blob/main/LICENSE
-#
-# Copyright 2022 UC Berkeley Team and The HuggingFace Team. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# =========================================================================
-
-from __future__ import annotations
-
-import numpy as np
-import torch
-from monai.utils import StrEnum
-
-from .scheduler import Scheduler
-
-
-class DDPMVarianceType(StrEnum):
- """
- Valid names for DDPM Scheduler's `variance_type` argument. Options to clip the variance used when adding noise
- to the denoised sample.
- """
-
- FIXED_SMALL = "fixed_small"
- FIXED_LARGE = "fixed_large"
- LEARNED = "learned"
- LEARNED_RANGE = "learned_range"
-
-
-class DDPMPredictionType(StrEnum):
- """
- Set of valid prediction type names for the DDPM scheduler's `prediction_type` argument.
-
- epsilon: predicting the noise of the diffusion process
- sample: directly predicting the noisy sample
- v_prediction: velocity prediction, see section 2.4 https://imagen.research.google/video/paper.pdf
- """
-
- EPSILON = "epsilon"
- SAMPLE = "sample"
- V_PREDICTION = "v_prediction"
-
-
-class DDPMScheduler(Scheduler):
- """
- Denoising diffusion probabilistic models (DDPMs) explores the connections between denoising score matching and
- Langevin dynamics sampling. Based on: Ho et al., "Denoising Diffusion Probabilistic Models"
- https://arxiv.org/abs/2006.11239
-
- Args:
- num_train_timesteps: number of diffusion steps used to train the model.
- schedule: member of NoiseSchedules, name of noise schedule function in component store
- variance_type: member of DDPMVarianceType
- clip_sample: option to clip predicted sample between -1 and 1 for numerical stability.
- prediction_type: member of DDPMPredictionType
- schedule_args: arguments to pass to the schedule function
- """
-
- def __init__(
- self,
- num_train_timesteps: int = 1000,
- schedule: str = "linear_beta",
- variance_type: str = DDPMVarianceType.FIXED_SMALL,
- clip_sample: bool = True,
- prediction_type: str = DDPMPredictionType.EPSILON,
- **schedule_args,
- ) -> None:
- super().__init__(num_train_timesteps, schedule, **schedule_args)
-
- if variance_type not in DDPMVarianceType.__members__.values():
- raise ValueError("Argument `variance_type` must be a member of `DDPMVarianceType`")
-
- if prediction_type not in DDPMPredictionType.__members__.values():
- raise ValueError("Argument `prediction_type` must be a member of `DDPMPredictionType`")
-
- self.clip_sample = clip_sample
- self.variance_type = variance_type
- self.prediction_type = prediction_type
-
- def set_timesteps(self, num_inference_steps: int, device: str | torch.device | None = None) -> None:
- """
- Sets the discrete timesteps used for the diffusion chain. Supporting function to be run before inference.
-
- Args:
- num_inference_steps: number of diffusion steps used when generating samples with a pre-trained model.
- device: target device to put the data.
- """
- if num_inference_steps > self.num_train_timesteps:
- raise ValueError(
- f"`num_inference_steps`: {num_inference_steps} cannot be larger than `self.num_train_timesteps`:"
- f" {self.num_train_timesteps} as the unet model trained with this scheduler can only handle"
- f" maximal {self.num_train_timesteps} timesteps."
- )
-
- self.num_inference_steps = num_inference_steps
- step_ratio = self.num_train_timesteps // self.num_inference_steps
- # creates integer timesteps by multiplying by ratio
- # casting to int to avoid issues when num_inference_step is power of 3
- timesteps = (np.arange(0, num_inference_steps) * step_ratio).round()[::-1].astype(np.int64)
- self.timesteps = torch.from_numpy(timesteps).to(device)
-
- def _get_mean(self, timestep: int, x_0: torch.Tensor, x_t: torch.Tensor) -> torch.Tensor:
- """
- Compute the mean of the posterior at timestep t.
-
- Args:
- timestep: current timestep.
- x0: the noise-free input.
- x_t: the input noised to timestep t.
-
- Returns:
- Returns the mean
- """
- # these attributes are used for calculating the posterior, q(x_{t-1}|x_t,x_0),
- # (see formula (5-7) from https://arxiv.org/pdf/2006.11239.pdf)
- alpha_t = self.alphas[timestep]
- alpha_prod_t = self.alphas_cumprod[timestep]
- alpha_prod_t_prev = self.alphas_cumprod[timestep - 1] if timestep > 0 else self.one
-
- x_0_coefficient = alpha_prod_t_prev.sqrt() * self.betas[timestep] / (1 - alpha_prod_t)
- x_t_coefficient = alpha_t.sqrt() * (1 - alpha_prod_t_prev) / (1 - alpha_prod_t)
-
- mean = x_0_coefficient * x_0 + x_t_coefficient * x_t
-
- return mean
-
- def _get_variance(self, timestep: int, predicted_variance: torch.Tensor | None = None) -> torch.Tensor:
- """
- Compute the variance of the posterior at timestep t.
-
- Args:
- timestep: current timestep.
- predicted_variance: variance predicted by the model.
-
- Returns:
- Returns the variance
- """
- alpha_prod_t = self.alphas_cumprod[timestep]
- alpha_prod_t_prev = self.alphas_cumprod[timestep - 1] if timestep > 0 else self.one
-
- # For t > 0, compute predicted variance βt (see formula (6) and (7) from https://arxiv.org/pdf/2006.11239.pdf)
- # and sample from it to get previous sample
- # x_{t-1} ~ N(pred_prev_sample, variance) == add variance to pred_sample
- variance = (1 - alpha_prod_t_prev) / (1 - alpha_prod_t) * self.betas[timestep]
- # hacks - were probably added for training stability
- if self.variance_type == DDPMVarianceType.FIXED_SMALL:
- variance = torch.clamp(variance, min=1e-20)
- elif self.variance_type == DDPMVarianceType.FIXED_LARGE:
- variance = self.betas[timestep]
- elif self.variance_type == DDPMVarianceType.LEARNED:
- return predicted_variance
- elif self.variance_type == DDPMVarianceType.LEARNED_RANGE:
- min_log = variance
- max_log = self.betas[timestep]
- frac = (predicted_variance + 1) / 2
- variance = frac * max_log + (1 - frac) * min_log
-
- return variance
-
- def step(
- self, model_output: torch.Tensor, timestep: int, sample: torch.Tensor, generator: torch.Generator | None = None
- ) -> tuple[torch.Tensor, torch.Tensor]:
- """
- Predict the sample at the previous timestep by reversing the SDE. Core function to propagate the diffusion
- process from the learned model outputs (most often the predicted noise).
-
- Args:
- model_output: direct output from learned diffusion model.
- timestep: current discrete timestep in the diffusion chain.
- sample: current instance of sample being created by diffusion process.
- generator: random number generator.
-
- Returns:
- pred_prev_sample: Predicted previous sample
- """
- if model_output.shape[1] == sample.shape[1] * 2 and self.variance_type in ["learned", "learned_range"]:
- model_output, predicted_variance = torch.split(model_output, sample.shape[1], dim=1)
- else:
- predicted_variance = None
-
- # 1. compute alphas, betas
- alpha_prod_t = self.alphas_cumprod[timestep]
- alpha_prod_t_prev = self.alphas_cumprod[timestep - 1] if timestep > 0 else self.one
- beta_prod_t = 1 - alpha_prod_t
- beta_prod_t_prev = 1 - alpha_prod_t_prev
-
- # 2. compute predicted original sample from predicted noise also called
- # "predicted x_0" of formula (15) from https://arxiv.org/pdf/2006.11239.pdf
- if self.prediction_type == DDPMPredictionType.EPSILON:
- pred_original_sample = (sample - beta_prod_t ** (0.5) * model_output) / alpha_prod_t ** (0.5)
- elif self.prediction_type == DDPMPredictionType.SAMPLE:
- pred_original_sample = model_output
- elif self.prediction_type == DDPMPredictionType.V_PREDICTION:
- pred_original_sample = (alpha_prod_t**0.5) * sample - (beta_prod_t**0.5) * model_output
-
- # 3. Clip "predicted x_0"
- if self.clip_sample:
- pred_original_sample = torch.clamp(pred_original_sample, -1, 1)
-
- # 4. Compute coefficients for pred_original_sample x_0 and current sample x_t
- # See formula (7) from https://arxiv.org/pdf/2006.11239.pdf
- pred_original_sample_coeff = (alpha_prod_t_prev ** (0.5) * self.betas[timestep]) / beta_prod_t
- current_sample_coeff = self.alphas[timestep] ** (0.5) * beta_prod_t_prev / beta_prod_t
-
- # 5. Compute predicted previous sample µ_t
- # See formula (7) from https://arxiv.org/pdf/2006.11239.pdf
- pred_prev_sample = pred_original_sample_coeff * pred_original_sample + current_sample_coeff * sample
-
- # 6. Add noise
- variance = 0
- if timestep > 0:
- noise = torch.randn(
- model_output.size(), dtype=model_output.dtype, layout=model_output.layout, generator=generator
- ).to(model_output.device)
- variance = (self._get_variance(timestep, predicted_variance=predicted_variance) ** 0.5) * noise
-
- pred_prev_sample = pred_prev_sample + variance
-
- return pred_prev_sample, pred_original_sample
diff --git a/generative/networks/schedulers/pndm.py b/generative/networks/schedulers/pndm.py
deleted file mode 100644
index b729315f..00000000
--- a/generative/networks/schedulers/pndm.py
+++ /dev/null
@@ -1,317 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# =========================================================================
-# Adapted from https://github.com/huggingface/diffusers
-# which has the following license:
-# https://github.com/huggingface/diffusers/blob/main/LICENSE
-#
-# Copyright 2022 UC Berkeley Team and The HuggingFace Team. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# =========================================================================
-
-from __future__ import annotations
-
-from typing import Any
-
-import numpy as np
-import torch
-from monai.utils import StrEnum
-
-from .scheduler import Scheduler
-
-
-class PNDMPredictionType(StrEnum):
- """
- Set of valid prediction type names for the PNDM scheduler's `prediction_type` argument.
-
- epsilon: predicting the noise of the diffusion process
- v_prediction: velocity prediction, see section 2.4 https://imagen.research.google/video/paper.pdf
- """
-
- EPSILON = "epsilon"
- V_PREDICTION = "v_prediction"
-
-
-class PNDMScheduler(Scheduler):
- """
- Pseudo numerical methods for diffusion models (PNDM) proposes using more advanced ODE integration techniques,
- namely Runge-Kutta method and a linear multi-step method. Based on: Liu et al.,
- "Pseudo Numerical Methods for Diffusion Models on Manifolds" https://arxiv.org/abs/2202.09778
-
- Args:
- num_train_timesteps: number of diffusion steps used to train the model.
- schedule: member of NoiseSchedules, name of noise schedule function in component store
- skip_prk_steps:
- allows the scheduler to skip the Runge-Kutta steps that are defined in the original paper as being required
- before plms step.
- set_alpha_to_one:
- each diffusion step uses the value of alphas product at that step and at the previous one. For the final
- step there is no previous alpha. When this option is `True` the previous alpha product is fixed to `1`,
- otherwise it uses the value of alpha at step 0.
- prediction_type: member of DDPMPredictionType
- steps_offset:
- an offset added to the inference steps. You can use a combination of `offset=1` and
- `set_alpha_to_one=False`, to make the last step use step 0 for the previous alpha product, as done in
- stable diffusion.
- schedule_args: arguments to pass to the schedule function
- """
-
- def __init__(
- self,
- num_train_timesteps: int = 1000,
- schedule: str = "linear_beta",
- skip_prk_steps: bool = False,
- set_alpha_to_one: bool = False,
- prediction_type: str = PNDMPredictionType.EPSILON,
- steps_offset: int = 0,
- **schedule_args,
- ) -> None:
- super().__init__(num_train_timesteps, schedule, **schedule_args)
-
- if prediction_type not in PNDMPredictionType.__members__.values():
- raise ValueError("Argument `prediction_type` must be a member of PNDMPredictionType")
-
- self.prediction_type = prediction_type
-
- self.final_alpha_cumprod = torch.tensor(1.0) if set_alpha_to_one else self.alphas_cumprod[0]
-
- # standard deviation of the initial noise distribution
- self.init_noise_sigma = 1.0
-
- # For now we only support F-PNDM, i.e. the runge-kutta method
- # For more information on the algorithm please take a look at the paper: https://arxiv.org/pdf/2202.09778.pdf
- # mainly at formula (9), (12), (13) and the Algorithm 2.
- self.pndm_order = 4
-
- self.skip_prk_steps = skip_prk_steps
- self.steps_offset = steps_offset
-
- # running values
- self.cur_model_output = 0
- self.counter = 0
- self.cur_sample = None
- self.ets = []
-
- # default the number of inference timesteps to the number of train steps
- self.set_timesteps(num_train_timesteps)
-
- def set_timesteps(self, num_inference_steps: int, device: str | torch.device | None = None) -> None:
- """
- Sets the discrete timesteps used for the diffusion chain. Supporting function to be run before inference.
-
- Args:
- num_inference_steps: number of diffusion steps used when generating samples with a pre-trained model.
- device: target device to put the data.
- """
- if num_inference_steps > self.num_train_timesteps:
- raise ValueError(
- f"`num_inference_steps`: {num_inference_steps} cannot be larger than `self.num_train_timesteps`:"
- f" {self.num_train_timesteps} as the unet model trained with this scheduler can only handle"
- f" maximal {self.num_train_timesteps} timesteps."
- )
-
- self.num_inference_steps = num_inference_steps
- step_ratio = self.num_train_timesteps // self.num_inference_steps
- # creates integer timesteps by multiplying by ratio
- # casting to int to avoid issues when num_inference_step is power of 3
- self._timesteps = (np.arange(0, num_inference_steps) * step_ratio).round().astype(np.int64)
- self._timesteps += self.steps_offset
-
- if self.skip_prk_steps:
- # for some models like stable diffusion the prk steps can/should be skipped to
- # produce better results. When using PNDM with `self.skip_prk_steps` the implementation
- # is based on crowsonkb's PLMS sampler implementation: https://github.com/CompVis/latent-diffusion/pull/51
- self.prk_timesteps = np.array([])
- self.plms_timesteps = self._timesteps[::-1]
-
- else:
- prk_timesteps = np.array(self._timesteps[-self.pndm_order :]).repeat(2) + np.tile(
- np.array([0, self.num_train_timesteps // num_inference_steps // 2]), self.pndm_order
- )
- self.prk_timesteps = (prk_timesteps[:-1].repeat(2)[1:-1])[::-1].copy()
- self.plms_timesteps = self._timesteps[:-3][
- ::-1
- ].copy() # we copy to avoid having negative strides which are not supported by torch.from_numpy
-
- timesteps = np.concatenate([self.prk_timesteps, self.plms_timesteps]).astype(np.int64)
- self.timesteps = torch.from_numpy(timesteps).to(device)
- # update num_inference_steps - necessary if we use prk steps
- self.num_inference_steps = len(self.timesteps)
-
- self.ets = []
- self.counter = 0
-
- def step(
- self, model_output: torch.FloatTensor, timestep: int, sample: torch.FloatTensor
- ) -> tuple[torch.Tensor, Any]:
- """
- Predict the sample at the previous timestep by reversing the SDE. Core function to propagate the diffusion
- process from the learned model outputs (most often the predicted noise).
- This function calls `step_prk()` or `step_plms()` depending on the internal variable `counter`.
-
- Args:
- model_output: direct output from learned diffusion model.
- timestep: current discrete timestep in the diffusion chain.
- sample: current instance of sample being created by diffusion process.
- Returns:
- pred_prev_sample: Predicted previous sample
- """
- # return a tuple for consistency with samplers that return (previous pred, original sample pred)
-
- if self.counter < len(self.prk_timesteps) and not self.skip_prk_steps:
- return self.step_prk(model_output=model_output, timestep=timestep, sample=sample), None
- else:
- return self.step_plms(model_output=model_output, timestep=timestep, sample=sample), None
-
- def step_prk(self, model_output: torch.FloatTensor, timestep: int, sample: torch.FloatTensor) -> torch.Tensor:
- """
- Step function propagating the sample with the Runge-Kutta method. RK takes 4 forward passes to approximate the
- solution to the differential equation.
-
- Args:
- model_output: direct output from learned diffusion model.
- timestep: current discrete timestep in the diffusion chain.
- sample: current instance of sample being created by diffusion process.
-
- Returns:
- pred_prev_sample: Predicted previous sample
- """
- if self.num_inference_steps is None:
- raise ValueError(
- "Number of inference steps is 'None', you need to run 'set_timesteps' after creating the scheduler"
- )
-
- diff_to_prev = 0 if self.counter % 2 else self.num_train_timesteps // self.num_inference_steps // 2
- prev_timestep = timestep - diff_to_prev
- timestep = self.prk_timesteps[self.counter // 4 * 4]
-
- if self.counter % 4 == 0:
- self.cur_model_output += 1 / 6 * model_output
- self.ets.append(model_output)
- self.cur_sample = sample
- elif (self.counter - 1) % 4 == 0:
- self.cur_model_output += 1 / 3 * model_output
- elif (self.counter - 2) % 4 == 0:
- self.cur_model_output += 1 / 3 * model_output
- elif (self.counter - 3) % 4 == 0:
- model_output = self.cur_model_output + 1 / 6 * model_output
- self.cur_model_output = 0
-
- # cur_sample should not be `None`
- cur_sample = self.cur_sample if self.cur_sample is not None else sample
-
- prev_sample = self._get_prev_sample(cur_sample, timestep, prev_timestep, model_output)
- self.counter += 1
-
- return prev_sample
-
- def step_plms(self, model_output: torch.FloatTensor, timestep: int, sample: torch.FloatTensor) -> torch.Tensor:
- """
- Step function propagating the sample with the linear multi-step method. This has one forward pass with multiple
- times to approximate the solution.
-
- Args:
- model_output: direct output from learned diffusion model.
- timestep: current discrete timestep in the diffusion chain.
- sample: current instance of sample being created by diffusion process.
-
- Returns:
- pred_prev_sample: Predicted previous sample
- """
- if self.num_inference_steps is None:
- raise ValueError(
- "Number of inference steps is 'None', you need to run 'set_timesteps' after creating the scheduler"
- )
-
- if not self.skip_prk_steps and len(self.ets) < 3:
- raise ValueError(
- f"{self.__class__} can only be run AFTER scheduler has been run "
- "in 'prk' mode for at least 12 iterations "
- )
-
- prev_timestep = timestep - self.num_train_timesteps // self.num_inference_steps
-
- if self.counter != 1:
- self.ets = self.ets[-3:]
- self.ets.append(model_output)
- else:
- prev_timestep = timestep
- timestep = timestep + self.num_train_timesteps // self.num_inference_steps
-
- if len(self.ets) == 1 and self.counter == 0:
- model_output = model_output
- self.cur_sample = sample
- elif len(self.ets) == 1 and self.counter == 1:
- model_output = (model_output + self.ets[-1]) / 2
- sample = self.cur_sample
- self.cur_sample = None
- elif len(self.ets) == 2:
- model_output = (3 * self.ets[-1] - self.ets[-2]) / 2
- elif len(self.ets) == 3:
- model_output = (23 * self.ets[-1] - 16 * self.ets[-2] + 5 * self.ets[-3]) / 12
- else:
- model_output = (1 / 24) * (55 * self.ets[-1] - 59 * self.ets[-2] + 37 * self.ets[-3] - 9 * self.ets[-4])
-
- prev_sample = self._get_prev_sample(sample, timestep, prev_timestep, model_output)
- self.counter += 1
-
- return prev_sample
-
- def _get_prev_sample(self, sample: torch.Tensor, timestep: int, prev_timestep: int, model_output: torch.Tensor):
- # See formula (9) of PNDM paper https://arxiv.org/pdf/2202.09778.pdf
- # this function computes x_(t−δ) using the formula of (9)
- # Note that x_t needs to be added to both sides of the equation
-
- # Notation ( ->
- # alpha_prod_t -> α_t
- # alpha_prod_t_prev -> α_(t−δ)
- # beta_prod_t -> (1 - α_t)
- # beta_prod_t_prev -> (1 - α_(t−δ))
- # sample -> x_t
- # model_output -> e_θ(x_t, t)
- # prev_sample -> x_(t−δ)
- alpha_prod_t = self.alphas_cumprod[timestep]
- alpha_prod_t_prev = self.alphas_cumprod[prev_timestep] if prev_timestep >= 0 else self.final_alpha_cumprod
- beta_prod_t = 1 - alpha_prod_t
- beta_prod_t_prev = 1 - alpha_prod_t_prev
-
- if self.prediction_type == PNDMPredictionType.V_PREDICTION:
- model_output = (alpha_prod_t**0.5) * model_output + (beta_prod_t**0.5) * sample
-
- # corresponds to (α_(t−δ) - α_t) divided by
- # denominator of x_t in formula (9) and plus 1
- # Note: (α_(t−δ) - α_t) / (sqrt(α_t) * (sqrt(α_(t−δ)) + sqr(α_t))) =
- # sqrt(α_(t−δ)) / sqrt(α_t))
- sample_coeff = (alpha_prod_t_prev / alpha_prod_t) ** (0.5)
-
- # corresponds to denominator of e_θ(x_t, t) in formula (9)
- model_output_denom_coeff = alpha_prod_t * beta_prod_t_prev ** (0.5) + (
- alpha_prod_t * beta_prod_t * alpha_prod_t_prev
- ) ** (0.5)
-
- # full formula (9)
- prev_sample = (
- sample_coeff * sample - (alpha_prod_t_prev - alpha_prod_t) * model_output / model_output_denom_coeff
- )
-
- return prev_sample
diff --git a/generative/networks/schedulers/scheduler.py b/generative/networks/schedulers/scheduler.py
deleted file mode 100644
index bf153b8b..00000000
--- a/generative/networks/schedulers/scheduler.py
+++ /dev/null
@@ -1,200 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# =========================================================================
-# Adapted from https://github.com/huggingface/diffusers
-# which has the following license:
-# https://github.com/huggingface/diffusers/blob/main/LICENSE
-#
-# Copyright 2022 UC Berkeley Team and The HuggingFace Team. All rights reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# =========================================================================
-
-
-from __future__ import annotations
-
-import torch
-import torch.nn as nn
-
-from generative.utils import ComponentStore, unsqueeze_right
-
-NoiseSchedules = ComponentStore("NoiseSchedules", "Functions to generate noise schedules")
-
-
-@NoiseSchedules.add_def("linear_beta", "Linear beta schedule")
-def _linear_beta(num_train_timesteps: int, beta_start: float = 1e-4, beta_end: float = 2e-2):
- """
- Linear beta noise schedule function.
-
- Args:
- num_train_timesteps: number of timesteps
- beta_start: start of beta range, default 1e-4
- beta_end: end of beta range, default 2e-2
-
- Returns:
- betas: beta schedule tensor
- """
- return torch.linspace(beta_start, beta_end, num_train_timesteps, dtype=torch.float32)
-
-
-@NoiseSchedules.add_def("scaled_linear_beta", "Scaled linear beta schedule")
-def _scaled_linear_beta(num_train_timesteps: int, beta_start: float = 1e-4, beta_end: float = 2e-2):
- """
- Scaled linear beta noise schedule function.
-
- Args:
- num_train_timesteps: number of timesteps
- beta_start: start of beta range, default 1e-4
- beta_end: end of beta range, default 2e-2
-
- Returns:
- betas: beta schedule tensor
- """
- return torch.linspace(beta_start**0.5, beta_end**0.5, num_train_timesteps, dtype=torch.float32) ** 2
-
-
-@NoiseSchedules.add_def("sigmoid_beta", "Sigmoid beta schedule")
-def _sigmoid_beta(num_train_timesteps: int, beta_start: float = 1e-4, beta_end: float = 2e-2, sig_range: float = 6):
- """
- Sigmoid beta noise schedule function.
-
- Args:
- num_train_timesteps: number of timesteps
- beta_start: start of beta range, default 1e-4
- beta_end: end of beta range, default 2e-2
- sig_range: pos/neg range of sigmoid input, default 6
-
- Returns:
- betas: beta schedule tensor
- """
- betas = torch.linspace(-sig_range, sig_range, num_train_timesteps)
- return torch.sigmoid(betas) * (beta_end - beta_start) + beta_start
-
-
-@NoiseSchedules.add_def("cosine", "Cosine schedule")
-def _cosine_beta(num_train_timesteps: int, s: float = 8e-3):
- """
- Cosine noise schedule, see https://arxiv.org/abs/2102.09672
-
- Args:
- num_train_timesteps: number of timesteps
- s: smoothing factor, default 8e-3 (see referenced paper)
-
- Returns:
- (betas, alphas, alpha_cumprod) values
- """
- x = torch.linspace(0, num_train_timesteps, num_train_timesteps + 1)
- alphas_cumprod = torch.cos(((x / num_train_timesteps) + s) / (1 + s) * torch.pi * 0.5) ** 2
- alphas_cumprod /= alphas_cumprod[0].item()
- alphas = torch.clip(alphas_cumprod[1:] / alphas_cumprod[:-1], 0.0001, 0.9999)
- betas = 1.0 - alphas
- return betas, alphas, alphas_cumprod[:-1]
-
-
-class Scheduler(nn.Module):
- """
- Base class for other schedulers based on a noise schedule function.
-
- This class is meant as the base for other schedulers which implement their own way of sampling or stepping. Here
- the class defines beta, alpha, and alpha_cumprod values from a noise schedule function named with `schedule`,
- which is the name of a component in NoiseSchedules. These components must all be callables which return either
- the beta schedule alone or a triple containing (betas, alphas, alphas_cumprod) values. New schedule functions
- can be provided by using the NoiseSchedules.add_def, for example:
-
- .. code-block:: python
- from generative.networks.schedulers import NoiseSchedules, DDPMScheduler
-
- @NoiseSchedules.add_def("my_beta_schedule", "Some description of your function")
- def _beta_function(num_train_timesteps, beta_start=1e-4, beta_end=2e-2):
- return torch.linspace(beta_start, beta_end, num_train_timesteps, dtype=torch.float32)
-
- scheduler = DDPMScheduler(num_train_timesteps=1000, schedule="my_beta_schedule")
-
- All such functions should have an initial positional integer argument `num_train_timesteps` stating the number of
- timesteps the schedule is for, otherwise any other arguments can be given which will be passed by keyword through
- the constructor's `schedule_args` value. To see what noise functions are available, print the object NoiseSchedules
- to get a listing of stored objects with their docstring descriptions.
-
- Note: in previous versions of the schedulers the argument `schedule_beta` was used to state the beta schedule
- type, this now replaced with `schedule` and most names used with the previous argument now have "_beta" appended
- to them, eg. 'schedule_beta="linear"' -> 'schedule="linear_beta"'. The `beta_start` and `beta_end` arguments are
- still used for some schedules but these are provided as keyword arguments now.
-
- Args:
- num_train_timesteps: number of diffusion steps used to train the model.
- schedule: member of NoiseSchedules,
- a named function returning the beta tensor or (betas, alphas, alphas_cumprod) triple
- schedule_args: arguments to pass to the schedule function
- """
-
- def __init__(self, num_train_timesteps: int = 1000, schedule: str = "linear_beta", **schedule_args) -> None:
- super().__init__()
- schedule_args["num_train_timesteps"] = num_train_timesteps
- noise_sched = NoiseSchedules[schedule](**schedule_args)
-
- # set betas, alphas, alphas_cumprod based off return value from noise function
- if isinstance(noise_sched, tuple):
- self.betas, self.alphas, self.alphas_cumprod = noise_sched
- else:
- self.betas = noise_sched
- self.alphas = 1.0 - self.betas
- self.alphas_cumprod = torch.cumprod(self.alphas, dim=0)
-
- self.num_train_timesteps = num_train_timesteps
- self.one = torch.tensor(1.0)
-
- # settable values
- self.num_inference_steps = None
- self.timesteps = torch.arange(num_train_timesteps - 1, -1, -1)
-
- def add_noise(self, original_samples: torch.Tensor, noise: torch.Tensor, timesteps: torch.Tensor) -> torch.Tensor:
- """
- Add noise to the original samples.
-
- Args:
- original_samples: original samples
- noise: noise to add to samples
- timesteps: timesteps tensor indicating the timestep to be computed for each sample.
-
- Returns:
- noisy_samples: sample with added noise
- """
- # Make sure alphas_cumprod and timestep have same device and dtype as original_samples
- self.alphas_cumprod = self.alphas_cumprod.to(device=original_samples.device, dtype=original_samples.dtype)
- timesteps = timesteps.to(original_samples.device)
-
- sqrt_alpha_cumprod = unsqueeze_right(self.alphas_cumprod[timesteps] ** 0.5, original_samples.ndim)
- sqrt_one_minus_alpha_prod = unsqueeze_right((1 - self.alphas_cumprod[timesteps]) ** 0.5, original_samples.ndim)
-
- noisy_samples = sqrt_alpha_cumprod * original_samples + sqrt_one_minus_alpha_prod * noise
- return noisy_samples
-
- def get_velocity(self, sample: torch.Tensor, noise: torch.Tensor, timesteps: torch.Tensor) -> torch.Tensor:
- # Make sure alphas_cumprod and timestep have same device and dtype as sample
- self.alphas_cumprod = self.alphas_cumprod.to(device=sample.device, dtype=sample.dtype)
- timesteps = timesteps.to(sample.device)
-
- sqrt_alpha_prod = unsqueeze_right(self.alphas_cumprod[timesteps] ** 0.5, sample.ndim)
- sqrt_one_minus_alpha_prod = unsqueeze_right((1 - self.alphas_cumprod[timesteps]) ** 0.5, sample.ndim)
-
- velocity = sqrt_alpha_prod * noise - sqrt_one_minus_alpha_prod * sample
- return velocity
diff --git a/generative/utils/__init__.py b/generative/utils/__init__.py
deleted file mode 100644
index 08a1b9b3..00000000
--- a/generative/utils/__init__.py
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-from .component_store import ComponentStore
-from .enums import AdversarialIterationEvents, AdversarialKeys
-from .misc import unsqueeze_left, unsqueeze_right
diff --git a/generative/utils/component_store.py b/generative/utils/component_store.py
deleted file mode 100644
index 31ad8460..00000000
--- a/generative/utils/component_store.py
+++ /dev/null
@@ -1,117 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-from collections import namedtuple
-from keyword import iskeyword
-from textwrap import dedent, indent
-from typing import Any, Callable, Dict, Iterable, TypeVar
-
-T = TypeVar("T")
-
-
-def is_variable(name):
- """Returns True if `name` is a valid Python variable name and also not a keyword."""
- return name.isidentifier() and not iskeyword(name)
-
-
-class ComponentStore:
- """
- Represents a storage object for other objects (specifically functions) keyed to a name with a description.
-
- These objects act as global named places for storing components for objects parameterised by component names.
- Typically this is functions although other objects can be added. Printing a component store will produce a
- list of members along with their docstring information if present.
-
- Example:
-
- .. code-block:: python
-
- TestStore = ComponentStore("Test Store", "A test store for demo purposes")
-
- @TestStore.add_def("my_func_name", "Some description of your function")
- def _my_func(a, b):
- '''A description of your function here.'''
- return a * b
-
- print(TestStore) # will print out name, description, and 'my_func_name' with the docstring
-
- func = TestStore["my_func_name"]
- result = func(7, 6)
-
- """
-
- _Component = namedtuple("Component", ("description", "value")) # internal value pair
-
- def __init__(self, name: str, description: str) -> None:
- self.components: Dict[str, self._Component] = {}
- self.name: str = name
- self.description: str = description
-
- self.__doc__ = f"Component Store '{name}': {description}\n{self.__doc__ or ''}".strip()
-
- def add(self, name: str, desc: str, value: T) -> T:
- """Store the object `value` under the name `name` with description `desc`."""
- if not is_variable(name):
- raise ValueError("Name of component must be valid Python identifier")
-
- self.components[name] = self._Component(desc, value)
- return value
-
- def add_def(self, name: str, desc: str) -> Callable:
- """Returns a decorator which stores the decorated function under `name` with description `desc`."""
-
- def deco(func):
- """Decorator to add a function to a store."""
- return self.add(name, desc, func)
-
- return deco
-
- def __contains__(self, name: str) -> bool:
- """Returns True if the given name is stored."""
- return name in self.components
-
- def __len__(self) -> int:
- """Returns the number of stored components."""
- return len(self.components)
-
- def __iter__(self) -> Iterable:
- """Yields name/component pairs."""
- for k, v in self.components.items():
- yield k, v.value
-
- def __str__(self):
- result = f"Component Store '{self.name}': {self.description}\nAvailable components:"
- for k, v in self.components.items():
- result += f"\n* {k}:"
-
- if hasattr(v.value, "__doc__"):
- doc = indent(dedent(v.value.__doc__.lstrip("\n").rstrip()), " ")
- result += f"\n{doc}\n"
- else:
- result += f" {v.description}"
-
- return result
-
- def __getattr__(self, name: str) -> Any:
- """Returns the stored object under the given name."""
- if name in self.components:
- return self.components[name].value
- else:
- return self.__getattribute__(name)
-
- def __getitem__(self, name: str) -> Any:
- """Returns the stored object under the given name."""
- if name in self.components:
- return self.components[name].value
- else:
- raise ValueError(f"Component '{name}' not found")
diff --git a/generative/utils/enums.py b/generative/utils/enums.py
deleted file mode 100644
index c78a4c16..00000000
--- a/generative/utils/enums.py
+++ /dev/null
@@ -1,60 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-from typing import TYPE_CHECKING
-
-from monai.config import IgniteInfo
-from monai.utils import StrEnum, min_version, optional_import
-
-if TYPE_CHECKING:
- from ignite.engine import EventEnum
-else:
- EventEnum, _ = optional_import(
- "ignite.engine", IgniteInfo.OPT_IMPORT_VERSION, min_version, "EventEnum", as_type="base"
- )
-
-
-class AdversarialKeys(StrEnum):
- REALS = "reals"
- REAL_LOGITS = "real_logits"
- FAKES = "fakes"
- FAKE_LOGITS = "fake_logits"
- RECONSTRUCTION_LOSS = "reconstruction_loss"
- GENERATOR_LOSS = "generator_loss"
- DISCRIMINATOR_LOSS = "discriminator_loss"
-
-
-class AdversarialIterationEvents(EventEnum):
- RECONSTRUCTION_LOSS_COMPLETED = "reconstruction_loss_completed"
- GENERATOR_FORWARD_COMPLETED = "generator_forward_completed"
- GENERATOR_DISCRIMINATOR_FORWARD_COMPLETED = "generator_discriminator_forward_completed"
- GENERATOR_LOSS_COMPLETED = "generator_loss_completed"
- GENERATOR_BACKWARD_COMPLETED = "generator_backward_completed"
- GENERATOR_MODEL_COMPLETED = "generator_model_completed"
- DISCRIMINATOR_REALS_FORWARD_COMPLETED = "discriminator_reals_forward_completed"
- DISCRIMINATOR_FAKES_FORWARD_COMPLETED = "discriminator_fakes_forward_completed"
- DISCRIMINATOR_LOSS_COMPLETED = "discriminator_loss_completed"
- DISCRIMINATOR_BACKWARD_COMPLETED = "discriminator_backward_completed"
- DISCRIMINATOR_MODEL_COMPLETED = "discriminator_model_completed"
-
-
-class OrderingType(StrEnum):
- RASTER_SCAN = "raster_scan"
- S_CURVE = "s_curve"
- RANDOM = "random"
-
-
-class OrderingTransformations(StrEnum):
- ROTATE_90 = "rotate_90"
- TRANSPOSE = "transpose"
- REFLECT = "reflect"
diff --git a/generative/utils/misc.py b/generative/utils/misc.py
deleted file mode 100644
index aea74a81..00000000
--- a/generative/utils/misc.py
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-from typing import TypeVar
-
-T = TypeVar("T")
-
-
-def unsqueeze_right(arr: T, ndim: int) -> T:
- """Append 1-sized dimensions to `arr` to create a result with `ndim` dimensions."""
- return arr[(...,) + (None,) * (ndim - arr.ndim)]
-
-
-def unsqueeze_left(arr: T, ndim: int) -> T:
- """Preppend 1-sized dimensions to `arr` to create a result with `ndim` dimensions."""
- return arr[(None,) * (ndim - arr.ndim)]
diff --git a/generative/utils/ordering.py b/generative/utils/ordering.py
deleted file mode 100644
index f00a3716..00000000
--- a/generative/utils/ordering.py
+++ /dev/null
@@ -1,205 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-import numpy as np
-import torch
-
-from generative.utils.enums import OrderingTransformations, OrderingType
-
-
-class Ordering:
- """
- Ordering class that projects a 2D or 3D image into a 1D sequence. It also allows the image to be transformed with
- one of the following transformations:
- - Reflection - see np.flip for more details.
- - Transposition - see np.transpose for more details.
- - 90-degree rotation - see np.rot90 for more details.
-
- The transformations are applied in the order specified by the transformation_order parameter.
-
- Args:
- ordering_type: The ordering type. One of the following:
- - 'raster_scan': The image is projected into a 1D sequence by scanning the image from left to right and from
- top to bottom. Also called a row major ordering.
- - 's_curve': The image is projected into a 1D sequence by scanning the image in a circular snake like
- pattern from top left towards right gowing in a spiral towards the center.
- - 'random': The image is projected into a 1D sequence by randomly shuffling the image.
- spatial_dims: The number of spatial dimensions of the image.
- dimensions: The dimensions of the image.
- reflected_spatial_dims: A tuple of booleans indicating whether to reflect the image along each spatial dimension.
- transpositions_axes: A tuple of tuples indicating the axes to transpose the image along.
- rot90_axes: A tuple of tuples indicating the axes to rotate the image along.
- transformation_order: The order in which to apply the transformations.
- """
-
- def __init__(
- self,
- ordering_type: str,
- spatial_dims: int,
- dimensions: tuple[int, int, int] | tuple[int, int, int, int],
- reflected_spatial_dims: tuple[bool, bool] | tuple[bool, bool, bool] = (),
- transpositions_axes: tuple[tuple[int, int], ...] | tuple[tuple[int, int, int], ...] = (),
- rot90_axes: tuple[tuple[int, int], ...] | tuple[tuple[int, int, int], ...] = (),
- transformation_order: tuple[str, ...] = (
- OrderingTransformations.TRANSPOSE.value,
- OrderingTransformations.ROTATE_90.value,
- OrderingTransformations.REFLECT.value,
- ),
- ) -> None:
- super().__init__()
- self.ordering_type = ordering_type
-
- if self.ordering_type not in list(OrderingType):
- raise ValueError(
- f"ordering_type must be one of the following {list(OrderingType)}, but got {self.ordering_type}."
- )
-
- self.spatial_dims = spatial_dims
- self.dimensions = dimensions
-
- if len(dimensions) != self.spatial_dims + 1:
- raise ValueError(f"dimensions must be of length {self.spatial_dims + 1}, but got {len(dimensions)}.")
-
- self.reflected_spatial_dims = reflected_spatial_dims
- self.transpositions_axes = transpositions_axes
- self.rot90_axes = rot90_axes
- if len(set(transformation_order)) != len(transformation_order):
- raise ValueError(f"No duplicates are allowed. Received {transformation_order}.")
-
- for transformation in transformation_order:
- if transformation not in list(OrderingTransformations):
- raise ValueError(
- f"Valid transformations are {list(OrderingTransformations)} but received {transformation}."
- )
- self.transformation_order = transformation_order
-
- self.template = self._create_template()
- self._sequence_ordering = self._create_ordering()
- self._revert_sequence_ordering = np.argsort(self._sequence_ordering)
-
- def __call__(self, x: torch.Tensor) -> torch.Tensor:
- x = x[self._sequence_ordering]
-
- return x
-
- def get_sequence_ordering(self) -> np.ndarray:
- return self._sequence_ordering
-
- def get_revert_sequence_ordering(self) -> np.ndarray:
- return self._revert_sequence_ordering
-
- def _create_ordering(self) -> np.ndarray:
- self.template = self._transform_template()
- order = self._order_template(template=self.template)
-
- return order
-
- def _create_template(self) -> np.ndarray:
- spatial_dimensions = self.dimensions[1:]
- template = np.arange(np.prod(spatial_dimensions)).reshape(*spatial_dimensions)
-
- return template
-
- def _transform_template(self) -> np.ndarray:
- for transformation in self.transformation_order:
- if transformation == OrderingTransformations.TRANSPOSE.value:
- self.template = self._transpose_template(template=self.template)
- elif transformation == OrderingTransformations.ROTATE_90.value:
- self.template = self._rot90_template(template=self.template)
- elif transformation == OrderingTransformations.REFLECT.value:
- self.template = self._flip_template(template=self.template)
-
- return self.template
-
- def _transpose_template(self, template: np.ndarray) -> np.ndarray:
- for axes in self.transpositions_axes:
- template = np.transpose(template, axes=axes)
-
- return template
-
- def _flip_template(self, template: np.ndarray) -> np.ndarray:
- for axis, to_reflect in enumerate(self.reflected_spatial_dims):
- template = np.flip(template, axis=axis) if to_reflect else template
-
- return template
-
- def _rot90_template(self, template: np.ndarray) -> np.ndarray:
- for axes in self.rot90_axes:
- template = np.rot90(template, axes=axes)
-
- return template
-
- def _order_template(self, template: np.ndarray) -> np.ndarray:
- depths = None
- if self.spatial_dims == 2:
- rows, columns = template.shape[0], template.shape[1]
- else:
- rows, columns, depths = (template.shape[0], template.shape[1], template.shape[2])
-
- sequence = eval(f"self.{self.ordering_type}_idx")(rows, columns, depths)
-
- ordering = np.array([template[tuple(e)] for e in sequence])
-
- return ordering
-
- @staticmethod
- def raster_scan_idx(rows: int, cols: int, depths: int = None) -> np.ndarray:
- idx = []
-
- for r in range(rows):
- for c in range(cols):
- if depths:
- for d in range(depths):
- idx.append((r, c, d))
- else:
- idx.append((r, c))
-
- idx = np.array(idx)
-
- return idx
-
- @staticmethod
- def s_curve_idx(rows: int, cols: int, depths: int = None) -> np.ndarray:
- idx = []
-
- for r in range(rows):
- col_idx = range(cols) if r % 2 == 0 else range(cols - 1, -1, -1)
- for c in col_idx:
- if depths:
- depth_idx = range(depths) if c % 2 == 0 else range(depths - 1, -1, -1)
-
- for d in depth_idx:
- idx.append((r, c, d))
- else:
- idx.append((r, c))
-
- idx = np.array(idx)
-
- return idx
-
- @staticmethod
- def random_idx(rows: int, cols: int, depths: int = None) -> np.ndarray:
- idx = []
-
- for r in range(rows):
- for c in range(cols):
- if depths:
- for d in range(depths):
- idx.append((r, c, d))
- else:
- idx.append((r, c))
-
- idx = np.array(idx)
- np.random.shuffle(idx)
-
- return idx
diff --git a/generative/version.py b/generative/version.py
deleted file mode 100644
index d6dbe674..00000000
--- a/generative/version.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-__version__ = "0.2.2"
diff --git a/model-zoo/README.md b/model-zoo/README.md
deleted file mode 100644
index f0c1c833..00000000
--- a/model-zoo/README.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# Generative Models - Model Zoo
-
-In this directory, we include the prototypes of the model zoo for the MONAI Generative Models project.
-Different from the official one, we do not include all features from the [official one](https://github.com/Project-MONAI/model-zoo).
-For this reason, it is not possible to download the models directly with the `python -m monai.bundle run ...` command.
-In order to use our models, please, manually download them with their link specified in the `large_files.yml` files,
-and place them inside the folder path specified in the same .yml file.
diff --git a/model-zoo/models/brain_image_synthesis_latent_diffusion_model/LICENSE b/model-zoo/models/brain_image_synthesis_latent_diffusion_model/LICENSE
deleted file mode 100644
index 261eeb9e..00000000
--- a/model-zoo/models/brain_image_synthesis_latent_diffusion_model/LICENSE
+++ /dev/null
@@ -1,201 +0,0 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/model-zoo/models/brain_image_synthesis_latent_diffusion_model/configs/inference.json b/model-zoo/models/brain_image_synthesis_latent_diffusion_model/configs/inference.json
deleted file mode 100644
index 5e310dfa..00000000
--- a/model-zoo/models/brain_image_synthesis_latent_diffusion_model/configs/inference.json
+++ /dev/null
@@ -1,104 +0,0 @@
-{
- "imports": [
- "$import torch",
- "$from datetime import datetime",
- "$from pathlib import Path"
- ],
- "bundle_root": ".",
- "model_dir": "$@bundle_root + '/models'",
- "output_dir": "$@bundle_root + '/output'",
- "create_output_dir": "$Path(@output_dir).mkdir(exist_ok=True)",
- "gender": 0.0,
- "age": 0.1,
- "ventricular_vol": 0.2,
- "brain_vol": 0.4,
- "device": "$torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')",
- "conditioning": "$torch.tensor([[@gender, @age, @ventricular_vol, @brain_vol]]).to(@device).unsqueeze(1)",
- "out_file": "$datetime.now().strftime('sample_%H%M%S_%d%m%Y') + '_' + str(@gender) + '_' + str(@age) + '_' + str(@ventricular_vol) + '_' + str(@brain_vol)",
- "autoencoder_def": {
- "_target_": "generative.networks.nets.AutoencoderKL",
- "spatial_dims": 3,
- "in_channels": 1,
- "out_channels": 1,
- "latent_channels": 3,
- "num_channels": [
- 64,
- 128,
- 128,
- 128
- ],
- "num_res_blocks": 2,
- "norm_num_groups": 32,
- "norm_eps": 1e-06,
- "attention_levels": [
- false,
- false,
- false,
- false
- ],
- "with_encoder_nonlocal_attn": false,
- "with_decoder_nonlocal_attn": false
- },
- "load_autoencoder_path": "$@model_dir + '/autoencoder.pth'",
- "load_autoencoder": "$@autoencoder_def.load_state_dict(torch.load(@load_autoencoder_path))",
- "autoencoder": "$@autoencoder_def.to(@device)",
- "diffusion_def": {
- "_target_": "generative.networks.nets.DiffusionModelUNet",
- "spatial_dims": 3,
- "in_channels": 7,
- "out_channels": 3,
- "num_channels": [
- 256,
- 512,
- 768
- ],
- "num_res_blocks": 2,
- "attention_levels": [
- false,
- true,
- true
- ],
- "norm_num_groups": 32,
- "norm_eps": 1e-06,
- "resblock_updown": true,
- "num_head_channels": [
- 0,
- 512,
- 768
- ],
- "with_conditioning": true,
- "transformer_num_layers": 1,
- "cross_attention_dim": 4,
- "upcast_attention": true,
- "use_flash_attention": false
- },
- "load_diffusion_path": "$@model_dir + '/diffusion_model.pth'",
- "load_diffusion": "$@diffusion_def.load_state_dict(torch.load(@load_diffusion_path))",
- "diffusion": "$@diffusion_def.to(@device)",
- "scheduler": {
- "_target_": "generative.networks.schedulers.DDIMScheduler",
- "_requires_": [
- "@load_diffusion",
- "@load_autoencoder"
- ],
- "beta_start": 0.0015,
- "beta_end": 0.0205,
- "num_train_timesteps": 1000,
- "schedule": "scaled_linear_beta",
- "clip_sample": false
- },
- "noise": "$torch.randn((1, 3, 20, 28, 20)).to(@device)",
- "set_timesteps": "$@scheduler.set_timesteps(num_inference_steps=50)",
- "sampler": {
- "_target_": "scripts.sampler.Sampler",
- "_requires_": "@set_timesteps"
- },
- "sample": "$@sampler.sampling_fn(@noise, @autoencoder, @diffusion, @scheduler, @conditioning)",
- "saver": {
- "_target_": "scripts.saver.NiftiSaver",
- "_requires_": "@create_output_dir",
- "output_dir": "@output_dir"
- },
- "save_nii": "$@saver.save(@sample, @out_file)",
- "save": "$torch.save(@sample, @output_dir + '/' + @out_file + '.pt')"
-}
diff --git a/model-zoo/models/brain_image_synthesis_latent_diffusion_model/configs/logging.conf b/model-zoo/models/brain_image_synthesis_latent_diffusion_model/configs/logging.conf
deleted file mode 100644
index 91c1a21c..00000000
--- a/model-zoo/models/brain_image_synthesis_latent_diffusion_model/configs/logging.conf
+++ /dev/null
@@ -1,21 +0,0 @@
-[loggers]
-keys=root
-
-[handlers]
-keys=consoleHandler
-
-[formatters]
-keys=fullFormatter
-
-[logger_root]
-level=INFO
-handlers=consoleHandler
-
-[handler_consoleHandler]
-class=StreamHandler
-level=INFO
-formatter=fullFormatter
-args=(sys.stdout,)
-
-[formatter_fullFormatter]
-format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
diff --git a/model-zoo/models/brain_image_synthesis_latent_diffusion_model/configs/metadata.json b/model-zoo/models/brain_image_synthesis_latent_diffusion_model/configs/metadata.json
deleted file mode 100644
index 4310640e..00000000
--- a/model-zoo/models/brain_image_synthesis_latent_diffusion_model/configs/metadata.json
+++ /dev/null
@@ -1,72 +0,0 @@
-{
- "schema": "https://github.com/Project-MONAI/MONAI-extra-test-data/releases/download/0.8.1/meta_schema_20220324.json",
- "version": "1.0.0",
- "changelog": {
- "1.0.8": "Initial release"
- },
- "monai_version": "1.1.0",
- "pytorch_version": "1.13.0",
- "numpy_version": "1.22.4",
- "optional_packages_version": {
- "nibabel": "4.0.1",
- "generative": "0.1.0"
- },
- "task": "Brain image synthesis",
- "description": "A generative model for creating high-resolution 3D brain MRI based on UK Biobank",
- "authors": "Walter H. L. Pinaya, Petru-Daniel Tudosiu, Jessica Dafflon, Pedro F Da Costa, Virginia Fernandez, Parashkev Nachev, Sebastien Ourselin, and M. Jorge Cardoso",
- "copyright": "Copyright (c) MONAI Consortium",
- "data_source": "https://www.ukbiobank.ac.uk/",
- "data_type": "nibabel",
- "image_classes": "T1w head MRI with 1x1x1 mm voxel size",
- "eval_metrics": {
- "fid": 0.0076,
- "msssim": 0.6555,
- "4gmsssim": 0.3883
- },
- "intended_use": "This is a research tool/prototype and not to be used clinically",
- "references": [
- "Pinaya, Walter HL, et al. \"Brain imaging generation with latent diffusion models.\" MICCAI Workshop on Deep Generative Models. Springer, Cham, 2022."
- ],
- "network_data_format": {
- "inputs": {
- "image": {
- "type": "tabular",
- "num_channels": 1,
- "dtype": "float32",
- "value_range": [
- 0,
- 1
- ],
- "is_patch_data": false,
- "channel_def": {
- "0": "Gender",
- "1": "Age",
- "2": "Ventricular volume",
- "3": "Brain volume"
- }
- }
- },
- "outputs": {
- "pred": {
- "type": "image",
- "format": "magnitude",
- "modality": "MR",
- "num_channels": 1,
- "spatial_shape": [
- 160,
- 224,
- 160
- ],
- "dtype": "float32",
- "value_range": [
- 0,
- 1
- ],
- "is_patch_data": false,
- "channel_def": {
- "0": "T1w"
- }
- }
- }
- }
-}
diff --git a/model-zoo/models/brain_image_synthesis_latent_diffusion_model/docs/README.md b/model-zoo/models/brain_image_synthesis_latent_diffusion_model/docs/README.md
deleted file mode 100644
index 7082bf6a..00000000
--- a/model-zoo/models/brain_image_synthesis_latent_diffusion_model/docs/README.md
+++ /dev/null
@@ -1,63 +0,0 @@
-# Brain Imaging Generation with Latent Diffusion Models
-
-### **Authors**
-
-Walter H. L. Pinaya, Petru-Daniel Tudosiu, Jessica Dafflon, Pedro F Da Costa, Virginia Fernandez, Parashkev Nachev,
-Sebastien Ourselin, and M. Jorge Cardoso
-
-### **Tags**
-Synthetic data, Latent Diffusion Model, Generative model, Brain Imaging
-
-## **Model Description**
-This model is trained using the Latent Diffusion Model architecture [1] and is used for the synthesis of conditioned 3D
-brain MRI data. The model is divided into two parts: an autoencoder with a KL-regularisation model that compresses data
-into a latent space and a diffusion model that learns to generate conditioned synthetic latent representations. This
-model is conditioned on age, sex, the volume of ventricular cerebrospinal fluid, and brain volume normalised for head size.
-
-
-
-Figure 1 - Synthetic image from the model.
-
-
-## **Data**
-The model was trained on brain data from 31,740 participants from the UK Biobank [2]. We used high-resolution 3D T1w MRI with voxel size of 1mm3, resulting in volumes with 160 x 224 x 160 voxels
-
-#### **Preprocessing**
-We used UniRes [3] to perform a rigid body registration to a common MNI space for image pre-processing. The voxel intensity was normalised to be between [0, 1].
-
-## **Performance**
-This model achieves the following results on UK Biobank: an FID of 0.0076, an MS-SSIM of 0.6555, and a 4-G-R-SSIM of 0.3883.
-
-Please, check Table 1 of the original paper for more details regarding evaluation results.
-
-
-## **commands example**
-Execute sampling:
-```
-export PYTHONPATH=$PYTHONPATH:""
-$ python -m monai.bundle run save_nii --config_file configs/inference.json --gender 1.0 --age 0.7 --ventricular_vol 0.7 --brain_vol 0.5
-```
-All conditioning are expected to have values between 0 and 1
-
-## **Citation Info**
-
-```
-@inproceedings{pinaya2022brain,
- title={Brain imaging generation with latent diffusion models},
- author={Pinaya, Walter HL and Tudosiu, Petru-Daniel and Dafflon, Jessica and Da Costa, Pedro F and Fernandez, Virginia and Nachev, Parashkev and Ourselin, Sebastien and Cardoso, M Jorge},
- booktitle={MICCAI Workshop on Deep Generative Models},
- pages={117--126},
- year={2022},
- organization={Springer}
-}
-```
-
-## **References**
-
-Example:
-
-[1] Pinaya, Walter HL, et al. "Brain imaging generation with latent diffusion models." MICCAI Workshop on Deep Generative Models. Springer, Cham, 2022.
-
-[2] Sudlow, Cathie, et al. "UK biobank: an open access resource for identifying the causes of a wide range of complex diseases of middle and old age." PLoS medicine 12.3 (2015): e1001779.
-
-[3] Brudfors, Mikael, et al. "MRI super-resolution using multi-channel total variation." Annual Conference on Medical Image Understanding and Analysis. Springer, Cham, 2018.
diff --git a/model-zoo/models/brain_image_synthesis_latent_diffusion_model/docs/figure_1.png b/model-zoo/models/brain_image_synthesis_latent_diffusion_model/docs/figure_1.png
deleted file mode 100644
index b3bed96a..00000000
Binary files a/model-zoo/models/brain_image_synthesis_latent_diffusion_model/docs/figure_1.png and /dev/null differ
diff --git a/model-zoo/models/brain_image_synthesis_latent_diffusion_model/large_files.yml b/model-zoo/models/brain_image_synthesis_latent_diffusion_model/large_files.yml
deleted file mode 100644
index 2083c0d8..00000000
--- a/model-zoo/models/brain_image_synthesis_latent_diffusion_model/large_files.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-large_files:
- - path: "models/autoencoder.pth"
- url: "https://drive.google.com/uc?export=download&id=1CZHwxHJWybOsDavipD0EorDPOo_mzNeX"
- hash_val: ""
- hash_type: ""
- - path: "models/diffusion_model.pth"
- url: "https://drive.google.com/uc?export=download&id=1XO-ak93ZuOcGTCpgRtqgIeZq3dG5ExN6"
- hash_val: ""
- hash_type: ""
diff --git a/model-zoo/models/brain_image_synthesis_latent_diffusion_model/scripts/__init__.py b/model-zoo/models/brain_image_synthesis_latent_diffusion_model/scripts/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/model-zoo/models/brain_image_synthesis_latent_diffusion_model/scripts/sampler.py b/model-zoo/models/brain_image_synthesis_latent_diffusion_model/scripts/sampler.py
deleted file mode 100644
index 3058c470..00000000
--- a/model-zoo/models/brain_image_synthesis_latent_diffusion_model/scripts/sampler.py
+++ /dev/null
@@ -1,45 +0,0 @@
-from __future__ import annotations
-
-import torch
-import torch.nn as nn
-from monai.utils import optional_import
-from torch.cuda.amp import autocast
-
-tqdm, has_tqdm = optional_import("tqdm", name="tqdm")
-
-
-class Sampler:
- def __init__(self) -> None:
- super().__init__()
-
- @torch.no_grad()
- def sampling_fn(
- self,
- input_noise: torch.Tensor,
- autoencoder_model: nn.Module,
- diffusion_model: nn.Module,
- scheduler: nn.Module,
- conditioning: torch.Tensor,
- ) -> torch.Tensor:
- if has_tqdm:
- progress_bar = tqdm(scheduler.timesteps)
- else:
- progress_bar = iter(scheduler.timesteps)
-
- image = input_noise
- cond_concat = conditioning.squeeze(1).unsqueeze(-1).unsqueeze(-1).unsqueeze(-1)
- cond_concat = cond_concat.expand(list(cond_concat.shape[0:2]) + list(input_noise.shape[2:]))
- for t in progress_bar:
- with torch.no_grad():
- model_output = diffusion_model(
- torch.cat((image, cond_concat), dim=1),
- timesteps=torch.Tensor((t,)).to(input_noise.device).long(),
- context=conditioning,
- )
- image, _ = scheduler.step(model_output, t, image)
-
- with torch.no_grad():
- with autocast():
- sample = autoencoder_model.decode_stage_2_outputs(image)
-
- return sample
diff --git a/model-zoo/models/brain_image_synthesis_latent_diffusion_model/scripts/saver.py b/model-zoo/models/brain_image_synthesis_latent_diffusion_model/scripts/saver.py
deleted file mode 100644
index de882df0..00000000
--- a/model-zoo/models/brain_image_synthesis_latent_diffusion_model/scripts/saver.py
+++ /dev/null
@@ -1,29 +0,0 @@
-from __future__ import annotations
-
-import nibabel as nib
-import numpy as np
-import torch
-
-
-class NiftiSaver:
- def __init__(self, output_dir: str) -> None:
- super().__init__()
- self.output_dir = output_dir
- self.affine = np.array(
- [
- [-1.0, 0.0, 0.0, 96.48149872],
- [0.0, 1.0, 0.0, -141.47715759],
- [0.0, 0.0, 1.0, -156.55375671],
- [0.0, 0.0, 0.0, 1.0],
- ]
- )
-
- def save(self, image_data: torch.Tensor, file_name: str) -> None:
- image_data = image_data.cpu().numpy()
- image_data = image_data[0, 0, 5:-5, 5:-5, :-15]
- image_data = (image_data - image_data.min()) / (image_data.max() - image_data.min())
- image_data = (image_data * 255).astype(np.uint8)
-
- empty_header = nib.Nifti1Header()
- sample_nii = nib.Nifti1Image(image_data, self.affine, empty_header)
- nib.save(sample_nii, f"{str(self.output_dir)}/{file_name}.nii.gz")
diff --git a/model-zoo/models/cxr_image_synthesis_latent_diffusion_model/LICENSE b/model-zoo/models/cxr_image_synthesis_latent_diffusion_model/LICENSE
deleted file mode 100644
index 261eeb9e..00000000
--- a/model-zoo/models/cxr_image_synthesis_latent_diffusion_model/LICENSE
+++ /dev/null
@@ -1,201 +0,0 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/model-zoo/models/cxr_image_synthesis_latent_diffusion_model/configs/inference.json b/model-zoo/models/cxr_image_synthesis_latent_diffusion_model/configs/inference.json
deleted file mode 100644
index a933098d..00000000
--- a/model-zoo/models/cxr_image_synthesis_latent_diffusion_model/configs/inference.json
+++ /dev/null
@@ -1,107 +0,0 @@
-{
- "imports": [
- "$import torch",
- "$from datetime import datetime",
- "$from pathlib import Path",
- "$from transformers import CLIPTextModel",
- "$from transformers import CLIPTokenizer"
- ],
- "bundle_root": ".",
- "model_dir": "$@bundle_root + '/models'",
- "output_dir": "$@bundle_root + '/output'",
- "create_output_dir": "$Path(@output_dir).mkdir(exist_ok=True)",
- "prompt": "Big right-sided pleural effusion",
- "prompt_list": "$['', @prompt]",
- "guidance_scale": 7.0,
- "device": "$torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')",
- "tokenizer": "$CLIPTokenizer.from_pretrained(\"stabilityai/stable-diffusion-2-1-base\", subfolder=\"tokenizer\")",
- "text_encoder": "$CLIPTextModel.from_pretrained(\"stabilityai/stable-diffusion-2-1-base\", subfolder=\"text_encoder\")",
- "tokenized_prompt": "$@tokenizer(@prompt_list, padding=\"max_length\", max_length=@tokenizer.model_max_length, truncation=True,return_tensors=\"pt\")",
- "prompt_embeds": "$@text_encoder(@tokenized_prompt.input_ids.squeeze(1))[0].to(@device)",
- "out_file": "$datetime.now().strftime('sample_%H%M%S_%d%m%Y')",
- "autoencoder_def": {
- "_target_": "generative.networks.nets.AutoencoderKL",
- "spatial_dims": 2,
- "in_channels": 1,
- "out_channels": 1,
- "latent_channels": 3,
- "num_channels": [
- 64,
- 128,
- 128,
- 128
- ],
- "num_res_blocks": 2,
- "norm_num_groups": 32,
- "norm_eps": 1e-06,
- "attention_levels": [
- false,
- false,
- false,
- false
- ],
- "with_encoder_nonlocal_attn": false,
- "with_decoder_nonlocal_attn": false
- },
- "load_autoencoder_path": "$@model_dir + '/autoencoder.pth'",
- "load_autoencoder": "$@autoencoder_def.load_state_dict(torch.load(@load_autoencoder_path))",
- "autoencoder": "$@autoencoder_def.to(@device)",
- "diffusion_def": {
- "_target_": "generative.networks.nets.DiffusionModelUNet",
- "spatial_dims": 2,
- "in_channels": 3,
- "out_channels": 3,
- "num_channels": [
- 256,
- 512,
- 768
- ],
- "num_res_blocks": 2,
- "attention_levels": [
- false,
- true,
- true
- ],
- "norm_num_groups": 32,
- "norm_eps": 1e-06,
- "resblock_updown": false,
- "num_head_channels": [
- 0,
- 512,
- 768
- ],
- "with_conditioning": true,
- "transformer_num_layers": 1,
- "cross_attention_dim": 1024
- },
- "load_diffusion_path": "$@model_dir + '/diffusion_model.pth'",
- "load_diffusion": "$@diffusion_def.load_state_dict(torch.load(@load_diffusion_path))",
- "diffusion": "$@diffusion_def.to(@device)",
- "scheduler": {
- "_target_": "generative.networks.schedulers.DDIMScheduler",
- "_requires_": [
- "@load_diffusion",
- "@load_autoencoder"
- ],
- "beta_start": 0.0015,
- "beta_end": 0.0205,
- "num_train_timesteps": 1000,
- "schedule": "scaled_linear_beta",
- "prediction_type": "v_prediction",
- "clip_sample": false
- },
- "noise": "$torch.randn((1, 3, 64, 64)).to(@device)",
- "set_timesteps": "$@scheduler.set_timesteps(num_inference_steps=50)",
- "sampler": {
- "_target_": "scripts.sampler.Sampler",
- "_requires_": "@set_timesteps"
- },
- "sample": "$@sampler.sampling_fn(@noise, @autoencoder, @diffusion, @scheduler, @prompt_embeds)",
- "saver": {
- "_target_": "scripts.saver.JPGSaver",
- "_requires_": "@create_output_dir",
- "output_dir": "@output_dir"
- },
- "save_jpg": "$@saver.save(@sample, @out_file)",
- "save": "$torch.save(@sample, @output_dir + '/' + @out_file + '.pt')"
-}
diff --git a/model-zoo/models/cxr_image_synthesis_latent_diffusion_model/configs/logging.conf b/model-zoo/models/cxr_image_synthesis_latent_diffusion_model/configs/logging.conf
deleted file mode 100644
index 91c1a21c..00000000
--- a/model-zoo/models/cxr_image_synthesis_latent_diffusion_model/configs/logging.conf
+++ /dev/null
@@ -1,21 +0,0 @@
-[loggers]
-keys=root
-
-[handlers]
-keys=consoleHandler
-
-[formatters]
-keys=fullFormatter
-
-[logger_root]
-level=INFO
-handlers=consoleHandler
-
-[handler_consoleHandler]
-class=StreamHandler
-level=INFO
-formatter=fullFormatter
-args=(sys.stdout,)
-
-[formatter_fullFormatter]
-format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
diff --git a/model-zoo/models/cxr_image_synthesis_latent_diffusion_model/configs/metadata.json b/model-zoo/models/cxr_image_synthesis_latent_diffusion_model/configs/metadata.json
deleted file mode 100644
index 020005e3..00000000
--- a/model-zoo/models/cxr_image_synthesis_latent_diffusion_model/configs/metadata.json
+++ /dev/null
@@ -1,73 +0,0 @@
-{
- "schema": "https://github.com/Project-MONAI/MONAI-extra-test-data/releases/download/0.8.1/meta_schema_20220324.json",
- "version": "1.0.0",
- "changelog": {
- "0.2": "Flipped images fixed"
- },
- "monai_version": "1.1.0",
- "pytorch_version": "1.13.0",
- "numpy_version": "1.22.4",
- "optional_packages_version": {
- "nibabel": "4.0.1",
- "generative": "0.1.0",
- "transformers": "4.26.1"
- },
- "task": "Chest X-ray image synthesis",
- "description": "A generative model for creating high-resolution chest X-ray based on MIMIC dataset",
- "copyright": "Copyright (c) MONAI Consortium",
- "data_source": "https://physionet.org/content/mimic-cxr-jpg/2.0.0/",
- "data_type": "image",
- "image_classes": "Radiography (X-ray) with 512 x 512 pixels",
- "intended_use": "This is a research tool/prototype and not to be used clinically",
- "network_data_format": {
- "inputs": {
- "latent_representation": {
- "type": "image",
- "format": "magnitude",
- "modality": "CXR",
- "num_channels": 3,
- "spatial_shape": [
- 64,
- 64
- ],
- "dtype": "float32",
- "value_range": [],
- "is_patch_data": false
- },
- "timesteps": {
- "type": "vector",
- "value_range": [
- 0,
- 1000
- ],
- "dtype": "long"
- },
- "context": {
- "type": "vector",
- "value_range": [],
- "dtype": "float32"
- }
- },
- "outputs": {
- "pred": {
- "type": "image",
- "format": "magnitude",
- "modality": "CXR",
- "num_channels": 1,
- "spatial_shape": [
- 512,
- 512
- ],
- "dtype": "float32",
- "value_range": [
- 0,
- 1
- ],
- "is_patch_data": false,
- "channel_def": {
- "0": "X-ray"
- }
- }
- }
- }
-}
diff --git a/model-zoo/models/cxr_image_synthesis_latent_diffusion_model/docs/README.md b/model-zoo/models/cxr_image_synthesis_latent_diffusion_model/docs/README.md
deleted file mode 100644
index 5c4ba31e..00000000
--- a/model-zoo/models/cxr_image_synthesis_latent_diffusion_model/docs/README.md
+++ /dev/null
@@ -1,71 +0,0 @@
-# Chest X-ray with Latent Diffusion Models
-
-### **Authors**
-
-MONAI Generative Models
-
-### **Tags**
-Synthetic data, Latent Diffusion Model, Generative model, Chest X-ray
-
-## **Model Description**
-This model is trained from scratch using the Latent Diffusion Model architecture [1] and is used for the synthesis of
-2D Chest X-ray conditioned on Radiological reports. The model is divided into two parts: an autoencoder with a
-KL-regularisation model that compresses data into a latent space and a diffusion model that learns to generate
-conditioned synthetic latent representations. This model is conditioned on Findings and Impressions from radiological
-reports. The original repository can be found [here](https://github.com/Warvito/generative_chestxray)
-
-
-
-Figure 1 - Synthetic images from the model.
-
-## **Data**
-The model was trained on brain data from 90,000 participants from the MIMIC dataset [2] [3]. We downsampled the
-original images to have a format of 512 x 512 pixels.
-
-#### **Preprocessing**
-We resized the original images to make the smallest sides have 512 pixels. When inputting it to the network, we center
-cropped the images to 512 x 512. The pixel intensity was normalised to be between [0, 1]. The text data was obtained
-from associated radiological reports. We randoomly extracted sentences from the findings and impressions sections of the
-reports, having a maximum of 5 sentences and 77 tokens. The text was tokenised using the CLIPTokenizer from
-transformers package (https://github.com/huggingface/transformers) (pretrained model
-"stabilityai/stable-diffusion-2-1-base") and then encoded using CLIPTextModel from the same package and pretrained
-model.
-
-
-## **Commands Example**
-Here we included a few examples of commands to sample images from the model and save them as .jpg files. The available
-arguments for this task are: "--prompt" (str) text prompt to condition the model on; "--guidance_scale" (float), the
-parameter that controls how much the image generation process follows the text prompt. The higher the value, the more
-the image sticks to a given text input (the common range is between 1-21).
-
-Examples:
-
-```shell
-export PYTHONPATH=$PYTHONPATH:""
-$ python -m monai.bundle run save_jpg --config_file configs/inference.json --prompt "Big right-sided pleural effusion" --guidance_scale 7.0
-```
-
-```shell
-export PYTHONPATH=$PYTHONPATH:""
-$ python -m monai.bundle run save_jpg --config_file configs/inference.json --prompt "Small right-sided pleural effusion" --guidance_scale 7.0
-```
-
-```shell
-export PYTHONPATH=$PYTHONPATH:""
-$ python -m monai.bundle run save_jpg --config_file configs/inference.json --prompt "Bilateral pleural effusion" --guidance_scale 7.0
-```
-
-```shell
-export PYTHONPATH=$PYTHONPATH:""
-$ python -m monai.bundle run save_jpg --config_file configs/inference.json --prompt "Cardiomegaly" --guidance_scale 7.0
-```
-
-
-## **References**
-
-
-[1] Pinaya, Walter HL, et al. "Brain imaging generation with latent diffusion models." MICCAI Workshop on Deep Generative Models. Springer, Cham, 2022.
-
-[2] Johnson, A., Lungren, M., Peng, Y., Lu, Z., Mark, R., Berkowitz, S., & Horng, S. (2019). MIMIC-CXR-JPG - chest radiographs with structured labels (version 2.0.0). PhysioNet. https://doi.org/10.13026/8360-t248.
-
-[3] Johnson AE, Pollard TJ, Berkowitz S, Greenbaum NR, Lungren MP, Deng CY, Mark RG, Horng S. MIMIC-CXR: A large publicly available database of labeled chest radiographs. arXiv preprint arXiv:1901.07042. 2019 Jan 21.
diff --git a/model-zoo/models/cxr_image_synthesis_latent_diffusion_model/docs/figure_1.png b/model-zoo/models/cxr_image_synthesis_latent_diffusion_model/docs/figure_1.png
deleted file mode 100644
index 1baa0adb..00000000
Binary files a/model-zoo/models/cxr_image_synthesis_latent_diffusion_model/docs/figure_1.png and /dev/null differ
diff --git a/model-zoo/models/cxr_image_synthesis_latent_diffusion_model/large_files.yml b/model-zoo/models/cxr_image_synthesis_latent_diffusion_model/large_files.yml
deleted file mode 100644
index 3198186b..00000000
--- a/model-zoo/models/cxr_image_synthesis_latent_diffusion_model/large_files.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-large_files:
- - path: "models/autoencoder.pth"
- url: "https://drive.google.com/uc?export=download&id=1paDN1m-Q_Oy8d_BanPkRTi3RlNB_Sv_h"
- hash_val: ""
- hash_type: ""
- - path: "models/diffusion_model.pth"
- url: "https://drive.google.com/uc?export=download&id=1CjcmiPu5_QWr-f7wDJsXrCCcVeczneGT"
- hash_val: ""
- hash_type: ""
diff --git a/model-zoo/models/cxr_image_synthesis_latent_diffusion_model/scripts/__init__.py b/model-zoo/models/cxr_image_synthesis_latent_diffusion_model/scripts/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/model-zoo/models/cxr_image_synthesis_latent_diffusion_model/scripts/sampler.py b/model-zoo/models/cxr_image_synthesis_latent_diffusion_model/scripts/sampler.py
deleted file mode 100644
index c0e602e3..00000000
--- a/model-zoo/models/cxr_image_synthesis_latent_diffusion_model/scripts/sampler.py
+++ /dev/null
@@ -1,43 +0,0 @@
-from __future__ import annotations
-
-import torch
-import torch.nn as nn
-from monai.utils import optional_import
-from torch.cuda.amp import autocast
-
-tqdm, has_tqdm = optional_import("tqdm", name="tqdm")
-
-
-class Sampler:
- def __init__(self) -> None:
- super().__init__()
-
- @torch.no_grad()
- def sampling_fn(
- self,
- noise: torch.Tensor,
- autoencoder_model: nn.Module,
- diffusion_model: nn.Module,
- scheduler: nn.Module,
- prompt_embeds: torch.Tensor,
- guidance_scale: float = 7.0,
- scale_factor: float = 0.3,
- ) -> torch.Tensor:
- if has_tqdm:
- progress_bar = tqdm(scheduler.timesteps)
- else:
- progress_bar = iter(scheduler.timesteps)
-
- for t in progress_bar:
- noise_input = torch.cat([noise] * 2)
- model_output = diffusion_model(
- noise_input, timesteps=torch.Tensor((t,)).to(noise.device).long(), context=prompt_embeds
- )
- noise_pred_uncond, noise_pred_text = model_output.chunk(2)
- noise_pred = noise_pred_uncond + guidance_scale * (noise_pred_text - noise_pred_uncond)
- noise, _ = scheduler.step(noise_pred, t, noise)
-
- with autocast():
- sample = autoencoder_model.decode_stage_2_outputs(noise / scale_factor)
-
- return sample
diff --git a/model-zoo/models/cxr_image_synthesis_latent_diffusion_model/scripts/saver.py b/model-zoo/models/cxr_image_synthesis_latent_diffusion_model/scripts/saver.py
deleted file mode 100644
index 05e88722..00000000
--- a/model-zoo/models/cxr_image_synthesis_latent_diffusion_model/scripts/saver.py
+++ /dev/null
@@ -1,17 +0,0 @@
-from __future__ import annotations
-
-import numpy as np
-import torch
-from PIL import Image
-
-
-class JPGSaver:
- def __init__(self, output_dir: str) -> None:
- super().__init__()
- self.output_dir = output_dir
-
- def save(self, image_data: torch.Tensor, file_name: str) -> None:
- image_data = np.clip(image_data.cpu().numpy(), 0, 1)
- image_data = (image_data * 255).astype(np.uint8)
- im = Image.fromarray(image_data[0, 0])
- im.save(self.output_dir + "/" + file_name + ".jpg")
diff --git a/model-zoo/models/mednist_ddpm/bundle/configs/common.yaml b/model-zoo/models/mednist_ddpm/bundle/configs/common.yaml
deleted file mode 100644
index c6073eb5..00000000
--- a/model-zoo/models/mednist_ddpm/bundle/configs/common.yaml
+++ /dev/null
@@ -1,60 +0,0 @@
-# This file defines common definitions used in training and inference, most importantly the network definition
-
-imports:
-- $import os
-- $import datetime
-- $import torch
-- $import scripts
-- $import monai
-- $import generative
-- $import torch.distributed as dist
-
-image: $monai.utils.CommonKeys.IMAGE
-label: $monai.utils.CommonKeys.LABEL
-pred: $monai.utils.CommonKeys.PRED
-
-is_dist: '$dist.is_initialized()'
-rank: '$dist.get_rank() if @is_dist else 0'
-is_not_rank0: '$@rank > 0'
-device: '$torch.device(f"cuda:{@rank}" if torch.cuda.is_available() else "cpu")'
-
-network_def:
- _target_: generative.networks.nets.DiffusionModelUNet
- spatial_dims: 2
- in_channels: 1
- out_channels: 1
- num_channels: [64, 128, 128]
- attention_levels: [false, true, true]
- num_res_blocks: 1
- num_head_channels: 128
-
-network: $@network_def.to(@device)
-
-bundle_root: .
-ckpt_path: $@bundle_root + '/models/model.pt'
-use_amp: true
-image_dim: 64
-image_size: [1, '@image_dim', '@image_dim']
-num_train_timesteps: 1000
-
-base_transforms:
-- _target_: LoadImaged
- keys: '@image'
- image_only: true
-- _target_: EnsureChannelFirstd
- keys: '@image'
-- _target_: ScaleIntensityRanged
- keys: '@image'
- a_min: 0.0
- a_max: 255.0
- b_min: 0.0
- b_max: 1.0
- clip: true
-
-scheduler:
- _target_: generative.networks.schedulers.DDPMScheduler
- num_train_timesteps: '@num_train_timesteps'
-
-inferer:
- _target_: generative.inferers.DiffusionInferer
- scheduler: '@scheduler'
diff --git a/model-zoo/models/mednist_ddpm/bundle/configs/infer.yaml b/model-zoo/models/mednist_ddpm/bundle/configs/infer.yaml
deleted file mode 100644
index 46297e18..00000000
--- a/model-zoo/models/mednist_ddpm/bundle/configs/infer.yaml
+++ /dev/null
@@ -1,38 +0,0 @@
-# This defines an inference script for generating a random image to a Pytorch file
-
-batch_size: 1
-num_workers: 0
-
-noise: $torch.rand(1,1,@image_dim,@image_dim) # create a random image every time this program is run
-
-out_file: "" # where to save the tensor to
-
-# using a lambda this defines a simple sampling function used below
-sample: '$lambda x: @inferer.sample(input_noise=x, diffusion_model=@network, scheduler=@scheduler)'
-
-load_state: '$@network.load_state_dict(torch.load(@ckpt_path))' # command to load the saved model weights
-
-save_trans:
- _target_: Compose
- transforms:
- - _target_: ScaleIntensity
- minv: 0.0
- maxv: 255.0
- - _target_: ToTensor
- track_meta: false
- - _target_: SaveImage
- output_ext: "jpg"
- resample: false
- output_dtype: '$torch.uint8'
- separate_folder: false
- output_postfix: '@out_file'
-
-# program to load the model weights, run `sample`, and store results to `out_file`
-testing:
-- '@load_state'
-- '$torch.save(@sample(@noise.to(@device)), @out_file)'
-
-#alternative version which saves to a jpg file
-testing_jpg:
-- '@load_state'
-- '$@save_trans(@sample(@noise.to(@device))[0])'
diff --git a/model-zoo/models/mednist_ddpm/bundle/configs/logging.conf b/model-zoo/models/mednist_ddpm/bundle/configs/logging.conf
deleted file mode 100644
index 91c1a21c..00000000
--- a/model-zoo/models/mednist_ddpm/bundle/configs/logging.conf
+++ /dev/null
@@ -1,21 +0,0 @@
-[loggers]
-keys=root
-
-[handlers]
-keys=consoleHandler
-
-[formatters]
-keys=fullFormatter
-
-[logger_root]
-level=INFO
-handlers=consoleHandler
-
-[handler_consoleHandler]
-class=StreamHandler
-level=INFO
-formatter=fullFormatter
-args=(sys.stdout,)
-
-[formatter_fullFormatter]
-format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
diff --git a/model-zoo/models/mednist_ddpm/bundle/configs/metadata.json b/model-zoo/models/mednist_ddpm/bundle/configs/metadata.json
deleted file mode 100644
index 1e657634..00000000
--- a/model-zoo/models/mednist_ddpm/bundle/configs/metadata.json
+++ /dev/null
@@ -1,61 +0,0 @@
-{
- "schema": "https://github.com/Project-MONAI/MONAI-extra-test-data/releases/download/0.8.1/meta_schema_20220729.json",
- "version": "0.1.0",
- "changelog": {
- "0.1.0": "Initial version"
- },
- "monai_version": "1.0.0",
- "pytorch_version": "1.10.2",
- "numpy_version": "1.21.2",
- "optional_packages_version": {
- "generative": "0.1.0"
- },
- "task": "MedNIST Hand Generation",
- "description": "",
- "authors": "Walter Hugo Lopez Pinaya, Mark Graham, and Eric Kerfoot",
- "copyright": "Copyright (c) KCL",
- "references": [],
- "intended_use": "This is suitable for research purposes only",
- "image_classes": "Single channel magnitude data",
- "data_source": "MedNIST",
- "network_data_format": {
- "inputs": {
- "image": {
- "type": "image",
- "format": "magnitude",
- "modality": "xray",
- "num_channels": 1,
- "spatial_shape": [
- 1,
- 64,
- 64
- ],
- "dtype": "float32",
- "value_range": [],
- "is_patch_data": false,
- "channel_def": {
- "0": "image"
- }
- }
- },
- "outputs": {
- "pred": {
- "type": "image",
- "format": "magnitude",
- "modality": "xray",
- "num_channels": 1,
- "spatial_shape": [
- 1,
- 64,
- 64
- ],
- "dtype": "float32",
- "value_range": [],
- "is_patch_data": false,
- "channel_def": {
- "0": "image"
- }
- }
- }
- }
-}
diff --git a/model-zoo/models/mednist_ddpm/bundle/configs/train.yaml b/model-zoo/models/mednist_ddpm/bundle/configs/train.yaml
deleted file mode 100644
index 919e3a21..00000000
--- a/model-zoo/models/mednist_ddpm/bundle/configs/train.yaml
+++ /dev/null
@@ -1,157 +0,0 @@
-# This defines the training script for the network
-
-# choose a new directory for every run
-output_dir: $datetime.datetime.now().strftime('./results/output_%y%m%d_%H%M%S')
-dataset_dir: ./data
-
-train_data:
- _target_ : MedNISTDataset
- root_dir: '@dataset_dir'
- section: training
- download: true
- progress: false
- seed: 0
-
-val_data:
- _target_ : MedNISTDataset
- root_dir: '@dataset_dir'
- section: validation
- download: true
- progress: false
- seed: 0
-
-train_datalist: '$[{"image": item["image"]} for item in @train_data.data if item["class_name"] == "Hand"]'
-val_datalist: '$[{"image": item["image"]} for item in @val_data.data if item["class_name"] == "Hand"]'
-
-batch_size: 8
-num_substeps: 1
-num_workers: 4
-use_thread_workers: false
-
-lr: 0.000025
-rand_prob: 0.5
-num_epochs: 75
-val_interval: 5
-save_interval: 5
-
-train_transforms:
-- _target_: RandAffined
- keys: '@image'
- rotate_range:
- - ['$-np.pi / 36', '$np.pi / 36']
- - ['$-np.pi / 36', '$np.pi / 36']
- translate_range:
- - [-1, 1]
- - [-1, 1]
- scale_range:
- - [-0.05, 0.05]
- - [-0.05, 0.05]
- spatial_size: [64, 64]
- padding_mode: "zeros"
- prob: '@rand_prob'
-
-train_ds:
- _target_: Dataset
- data: $@train_datalist
- transform:
- _target_: Compose
- transforms: '$@base_transforms + @train_transforms'
-
-train_loader:
- _target_: ThreadDataLoader
- dataset: '@train_ds'
- batch_size: '@batch_size'
- repeats: '@num_substeps'
- num_workers: '@num_workers'
- use_thread_workers: '@use_thread_workers'
- persistent_workers: '$@num_workers > 0'
- shuffle: true
-
-val_ds:
- _target_: Dataset
- data: $@val_datalist
- transform:
- _target_: Compose
- transforms: '@base_transforms'
-
-val_loader:
- _target_: DataLoader
- dataset: '@val_ds'
- batch_size: '@batch_size'
- num_workers: '@num_workers'
- persistent_workers: '$@num_workers > 0'
- shuffle: false
-
-lossfn:
- _target_: torch.nn.MSELoss
-
-optimizer:
- _target_: torch.optim.Adam
- params: $@network.parameters()
- lr: '@lr'
-
-prepare_batch:
- _target_: generative.engines.DiffusionPrepareBatch
- num_train_timesteps: '@num_train_timesteps'
-
-val_handlers:
-- _target_: StatsHandler
- name: train_log
- output_transform: '$lambda x: None'
- _disabled_: '@is_not_rank0'
-
-evaluator:
- _target_: SupervisedEvaluator
- device: '@device'
- val_data_loader: '@val_loader'
- network: '@network'
- amp: '@use_amp'
- inferer: '@inferer'
- prepare_batch: '@prepare_batch'
- key_val_metric:
- val_mean_abs_error:
- _target_: MeanAbsoluteError
- output_transform: $monai.handlers.from_engine([@pred, @label])
- metric_cmp_fn: '$scripts.inv_metric_cmp_fn'
- val_handlers: '$list(filter(bool, @val_handlers))'
-
-handlers:
-- _target_: CheckpointLoader
- _disabled_: $not os.path.exists(@ckpt_path)
- load_path: '@ckpt_path'
- load_dict:
- model: '@network'
-- _target_: ValidationHandler
- validator: '@evaluator'
- epoch_level: true
- interval: '@val_interval'
-- _target_: CheckpointSaver
- save_dir: '@output_dir'
- save_dict:
- model: '@network'
- save_interval: '@save_interval'
- save_final: true
- epoch_level: true
- _disabled_: '@is_not_rank0'
-
-trainer:
- _target_: SupervisedTrainer
- max_epochs: '@num_epochs'
- device: '@device'
- train_data_loader: '@train_loader'
- network: '@network'
- loss_function: '@lossfn'
- optimizer: '@optimizer'
- inferer: '@inferer'
- prepare_batch: '@prepare_batch'
- key_train_metric:
- train_acc:
- _target_: MeanSquaredError
- output_transform: $monai.handlers.from_engine([@pred, @label])
- metric_cmp_fn: '$scripts.inv_metric_cmp_fn'
- train_handlers: '$list(filter(bool, @handlers))'
- amp: '@use_amp'
-
-training:
-- '$monai.utils.set_determinism(0)'
-- '$@trainer.run()'
diff --git a/model-zoo/models/mednist_ddpm/bundle/configs/train_multigpu.yaml b/model-zoo/models/mednist_ddpm/bundle/configs/train_multigpu.yaml
deleted file mode 100644
index 51f5acf4..00000000
--- a/model-zoo/models/mednist_ddpm/bundle/configs/train_multigpu.yaml
+++ /dev/null
@@ -1,30 +0,0 @@
-# This can be mixed in with the training script to enable multi-GPU training
-
-network:
- _target_: torch.nn.parallel.DistributedDataParallel
- module: $@network_def.to(@device)
- device_ids: ['@device']
- find_unused_parameters: true
-
-tsampler:
- _target_: DistributedSampler
- dataset: '@train_ds'
- even_divisible: true
- shuffle: true
-train_loader#sampler: '@tsampler'
-train_loader#shuffle: false
-
-vsampler:
- _target_: DistributedSampler
- dataset: '@val_ds'
- even_divisible: false
- shuffle: false
-val_loader#sampler: '@vsampler'
-
-training:
-- $import torch.distributed as dist
-- $dist.init_process_group(backend='nccl')
-- $torch.cuda.set_device(@device)
-- $monai.utils.set_determinism(seed=123),
-- $@trainer.run()
-- $dist.destroy_process_group()
diff --git a/model-zoo/models/mednist_ddpm/bundle/docs/2d_ddpm_bundle_tutorial.ipynb b/model-zoo/models/mednist_ddpm/bundle/docs/2d_ddpm_bundle_tutorial.ipynb
deleted file mode 100644
index 4cd3f5d4..00000000
--- a/model-zoo/models/mednist_ddpm/bundle/docs/2d_ddpm_bundle_tutorial.ipynb
+++ /dev/null
@@ -1,317 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "id": "c54f5831-58eb-4f9e-bb8a-2c2a6536a658",
- "metadata": {},
- "source": [
- "# Denoising Diffusion Probabilistic Models with MedNIST Dataset Bundle \n",
- "\n",
- "This notebook discusses and uses the MONAI bundle it's included in for generating images from the MedNIST dataset using diffusion models. This is based off the 2d_ddpm_tutorial_ignite.ipynb notebook with a few changes.\n",
- "\n",
- "The bundle defines training and inference scripts whose use will be described here along with visualisations. The assumption with this notebook is that it's run within the bundle's `docs` directory and that the environment it runs in has `MONAI` and `GenerativeModels` installed. The command lines given are known to work in `bash` however may be problematic in Windows.\n",
- "\n",
- "First thing to do is import libraries and verify MONAI is present:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 1,
- "id": "6d32f8a4-2bfe-4cfb-9abd-033b0c6080e6",
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "MONAI version: 1.1.0+45.g1a018a7b\n",
- "Numpy version: 1.21.5\n",
- "Pytorch version: 1.12.1\n",
- "MONAI flags: HAS_EXT = False, USE_COMPILED = False, USE_META_DICT = False\n",
- "MONAI rev id: 1a018a7b3034a86360d999a6bcc796bad330bba4\n",
- "MONAI __file__: /home/localek10/workspace/monai/MONAI_mine/monai/__init__.py\n",
- "\n",
- "Optional dependencies:\n",
- "Pytorch Ignite version: 0.4.8\n",
- "ITK version: 5.2.1\n",
- "Nibabel version: 4.0.2\n",
- "scikit-image version: 0.19.2\n",
- "Pillow version: 9.2.0\n",
- "Tensorboard version: 2.9.0\n",
- "gdown version: 4.5.1\n",
- "TorchVision version: 0.13.1\n",
- "tqdm version: 4.64.0\n",
- "lmdb version: 1.2.1\n",
- "psutil version: 5.9.0\n",
- "pandas version: 1.4.3\n",
- "einops version: 0.6.0\n",
- "transformers version: 4.18.0\n",
- "mlflow version: 1.28.0\n",
- "pynrrd version: 0.4.2\n",
- "\n",
- "For details about installing the optional dependencies, please visit:\n",
- " https://docs.monai.io/en/latest/installation.html#installing-the-recommended-dependencies\n",
- "\n"
- ]
- }
- ],
- "source": [
- "import os\n",
- "import shutil\n",
- "import tempfile\n",
- "from pathlib import Path\n",
- "\n",
- "import torch\n",
- "\n",
- "import matplotlib.pyplot as plt\n",
- "import monai\n",
- "from monai.bundle import ConfigParser\n",
- "\n",
- "# path to the bundle directory, this assumes you're running the notebook in its directory\n",
- "bundle_root = str(Path(\".\").absolute().parent)\n",
- "\n",
- "monai.config.print_config()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "id": "d6fc6592-cb51-4527-97ee-add5d1cdbeb4",
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "/tmp/tmpw33bol9_\n"
- ]
- }
- ],
- "source": [
- "directory = os.environ.get(\"MONAI_DATA_DIRECTORY\")\n",
- "dataset_dir = tempfile.mkdtemp() if directory is None else directory\n",
- "print(dataset_dir)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "678d2e51-dc2d-4ad9-a4c0-14a6f900398b",
- "metadata": {},
- "source": [
- "A bundle can be run on the command line using the Fire library or by parsing the configuration manually then getting parsed content objects. The following is the command to train the network for the default number of epochs. It will define values in the config files which need to be set for a particular run, such as the dataset directory created above, and setting the PYTHONPATH variable. The configuration for this bundle is split into 4 yaml files, one having common definitions for training and inference, one to enable multi-GPU training, and one each for training and inference. Their combinations determine what your final configuration is, in this case the common and train files produce a training script. "
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "d52a4ae9-0d6d-4bc4-a5b5-f84470711f2d",
- "metadata": {},
- "outputs": [],
- "source": [
- "# multiple config files need to be specified this way with '' quotes, variable used in command line must be in \"\" quotes\n",
- "configs=f\"'{bundle_root}/configs/common.yaml', '{bundle_root}/configs/train.yaml'\"\n",
- "\n",
- "!PYTHONPATH={bundle_root} python -m monai.bundle run training \\\n",
- " --meta_file {bundle_root}/configs/metadata.json \\\n",
- " --config_file \"{configs}\" \\\n",
- " --logging_file {bundle_root}/configs/logging.conf \\\n",
- " --bundle_root {bundle_root} \\\n",
- " --dataset_dir {dataset_dir}"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "5030732c-deb5-448a-b575-385bda0fa308",
- "metadata": {},
- "source": [
- "The test inference script can then be invoked as such to produce an output tensor saved to the given file with a randomly generated image. The `ckpt_path` value should point to the final checkpoint file created during the above training run, which will be in a subdirectory of `./result`. The training script's default behaviour is to create a new timestamped subdirectory in `./result` for every new run, this can be explicitly set by providing a `output_dir` value on the command line."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 36,
- "id": "40e6a3e9-3984-44b0-ba9a-5b8d58c7ea2d",
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "2023-02-16 21:00:18,139 - INFO - --- input summary of monai.bundle.scripts.run ---\n",
- "2023-02-16 21:00:18,139 - INFO - > runner_id: 'testing'\n",
- "2023-02-16 21:00:18,139 - INFO - > meta_file: '/home/localek10/workspace/monai/GenerativeModels/model-zoo/models/mednist_ddpm/bundle/configs/metadata.json'\n",
- "2023-02-16 21:00:18,139 - INFO - > config_file: ('/home/localek10/workspace/monai/GenerativeModels/model-zoo/models/mednist_ddpm/bundle/configs/common.yaml',\n",
- " '/home/localek10/workspace/monai/GenerativeModels/model-zoo/models/mednist_ddpm/bundle/configs/infer.yaml')\n",
- "2023-02-16 21:00:18,139 - INFO - > ckpt_path: './results/output_230215_174009/model_final_iteration=75000.pt'\n",
- "2023-02-16 21:00:18,140 - INFO - > bundle_root: '/home/localek10/workspace/monai/GenerativeModels/model-zoo/models/mednist_ddpm/bundle'\n",
- "2023-02-16 21:00:18,140 - INFO - > out_file: 'test.pt'\n",
- "2023-02-16 21:00:18,140 - INFO - ---\n",
- "\n",
- "\n",
- "100%|███████████████████████████████████████| 1000/1000 [00:10<00:00, 97.10it/s]\n",
- "[[[], []], null]\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- ""
- ]
- },
- "execution_count": 36,
- "metadata": {},
- "output_type": "execute_result"
- },
- {
- "data": {
- "image/png": "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fvGL2dSpU7O+vr40HT4Lf/zHf5w9/PDD2a9+9ats79692a233ppdeuml2dGjR4ttKmGcTz75ZPbv//7v2YEDB7IDBw5k9913X1ZTU5P96le/yrKsMsb4h37xi19kH/vYx7Krr746W7FiRXF7JYzz/vvvz2bOnJkdOnSo+NPT01P8fSWMMcuy7Pe//302Y8aM7Gtf+1r2P//zP9nBgwez//iP/8heffXVYpsUYy3bSeiP/uiPsmXLlg3b9qlPfSr77ne/m6hHcZ05CZ06dSprbm7OHnzwweK2EydOZI2Njdnf//3fJ+hhHD09PZmkrLOzM8uyyh1nlmXZhRdemP3DP/xDxY2xv78/a21tzTo6OrL58+cXJ6FKGef999+fXXPNNcHfVcoYsyzLvvOd72Q333yz+ftUYy3Lj+OGhoa0Z88eLVq0aNj2RYsWadeuXYl6la+DBw+qu7t72JgLhYLmz58/rsd8ekmOiy66SFJljvPkyZPasWOHjh07prlz51bcGO+++27deuut+vznPz9seyWN85VXXtG0adPU0tKiL33pS3rttdckVdYYn3zySc2ePVtf+MIXNGXKFF177bXaunVr8fepxlqWk9Dbb7+tkydPqqmpadj2pqYmdXd3J+pVvk6Pq5LGnGWZ7r33Xt18882aNWuWpMoa5759+3TeeeepUCho2bJleuKJJ3TllVdW1Bh37NihX/7yl2pvby/5XaWMc86cOXr00Uf1zDPPaOvWreru7ta8efP0zjvvVMwYJem1117T5s2b1draqmeeeUbLli3Tt7/9bT366KOS0j2fZbeUwx86vZTDaVmWlWyrNJU05nvuuUcvvfSS/vu//7vkd5Uwzk9+8pPau3evjhw5oscee0x33nmnOjs7i78f72Ps6urSihUrtHPnTk2aNMlsN97HuXjx4uJ/X3XVVZo7d64+8YlPaNu2bbrxxhsljf8xSu+v1TZ79my1tbVJkq699lrt379fmzdv1l/8xV8U233YYy3LK6GPfOQjmjhxYsns29PTUzJLV4rTaZxKGfO3vvUtPfnkk/r5z39eXB9Kqqxx1tbW6rLLLtPs2bPV3t6ua665Rj/60Y8qZox79uxRT0+Prr/+elVXV6u6ulqdnZ36u7/7O1VXVxfHMt7Heab6+npdddVVeuWVVyrmuZSkqVOn6sorrxy27YorrtAbb7whKd1rsywnodraWl1//fXq6OgYtr2jo0Pz5s1L1Kt8tbS0qLm5ediYh4aG1NnZOa7GnGWZ7rnnHj3++OP62c9+ppaWlmG/r5RxhmRZpsHBwYoZ4y233KJ9+/Zp7969xZ/Zs2frjjvu0N69e/Xxj3+8IsZ5psHBQf3617/W1KlTK+a5lKSbbrqp5OsSv/nNbzRjxgxJCV+buUUexuh0RPsf//Efs5dffjlbuXJlVl9fn/32t79N3bWz1t/fn7344ovZiy++mEnKNmzYkL344ovF2PmDDz6YNTY2Zo8//ni2b9++7Mtf/vK4i4J+85vfzBobG7Nnn312WOT1+PHjxTaVMM7Vq1dnzz33XHbw4MHspZdeyu67775swoQJ2c6dO7Msq4wxhvxhOi7LKmOcf/3Xf509++yz2WuvvZY9//zz2Z/+6Z9mDQ0NxfeaShhjlr0fs6+urs6+//3vZ6+88kr2T//0T1ldXV32k5/8pNgmxVjLdhLKsix76KGHshkzZmS1tbXZddddV4z5jlc///nPM0klP3feeWeWZe9HJO+///6subk5KxQK2Wc+85ls3759aTvtFBqfpOzhhx8utqmEcf7lX/5l8dz86Ec/mt1yyy3FCSjLKmOMIWdOQpUwztPfhampqcmmTZuWLVmyJNu/f3/x95UwxtP+7d/+LZs1a1ZWKBSyT33qU9mWLVuG/T7FWFlPCACQTFneEwIAnBuYhAAAyTAJAQCSYRICACTDJAQASIZJCACQDJMQACAZJiEAQDJMQgCAZJiEAADJMAkBAJL5/wB3dS17EkusPwAAAABJRU5ErkJggg==\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "configs=f\"'{bundle_root}/configs/common.yaml', '{bundle_root}/configs/infer.yaml'\"\n",
- "\n",
- "!PYTHONPATH={bundle_root} python -m monai.bundle run testing \\\n",
- " --meta_file {bundle_root}/configs/metadata.json \\\n",
- " --config_file \"{configs}\" \\\n",
- " --ckpt_path ./results/output_230215_174009/model_final_iteration=75000.pt \\\n",
- " --bundle_root {bundle_root} \\\n",
- " --out_file test.pt\n",
- "\n",
- "test = torch.load(\"test.pt\", map_location=\"cpu\")\n",
- "\n",
- "plt.imshow(test[0, 0], vmin=0, vmax=1, cmap=\"gray\")"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "f581c36e-4033-4005-8969-76205470588e",
- "metadata": {},
- "source": [
- "The same can be done by creating the parser object, filling in its configuration, then resolving the Python objects from the constructed bundle data:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 24,
- "id": "cf8438b3-4c7d-48c4-bb41-ed7def73753f",
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "100%|██████████| 1000/1000 [00:09<00:00, 101.06it/s]\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- ""
- ]
- },
- "execution_count": 24,
- "metadata": {},
- "output_type": "execute_result"
- },
- {
- "data": {
- "image/png": "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2NeyHYT+4A/+IFuyZMmItssuuyz79re/nahHcZ04CB07dixrbm7OHnrooWLb4cOHs8bGxuwf/uEfEvQwjt7e3kxS1tXVlWVZ9e5nlmXZOeeck/3jP/5j1e3jwMBA1tramnV2dmbz5s0rDkLVsp8PPPBAdvXVVwdfq5Z9zLIs+9a3vpXdfPPN5uup9rUsv44bHh7Wzp07tWDBghHtCxYs0Pbt2xP1Kl/79u1TT0/PiH0uFAqaN29eRe9zX1+fJOncc8+VVJ37efToUW3dulWHDh3SnDlzqm4f77nnHt122236/Oc/P6K9mvbzlVde0dSpU9XS0qIvfelLeu211yRV1z4+9dRTmjVrlr7whS9o8uTJuvbaa7Vp06bi66n2tSwHobfffltHjx5VU1PTiPampib19PQk6lW+ju9XNe1zlmW67777dPPNN2vmzJmSqms/d+/erbPOOkuFQkFLlizRk08+qSuuuKKq9nHr1q36xS9+oY6OjpLXqmU/Z8+erccee0zPPPOMNm3apJ6eHs2dO1fvvPNO1eyjJL322mvasGGDWltb9cwzz2jJkiX65je/qccee0xSuvNZdlM5fNSJMwdmWVYRMz6ejmra53vvvVcvvfSS/vu//7vktWrYz0svvVS7du3Se++9p8cff1x33XWXurq6iq9X+j52d3dr2bJl2rZtmyZMmGAuV+n7uXDhwuJ/X3nllZozZ44uvvhibd68WTfeeKOkyt9H6cO52mbNmqX29nZJ0rXXXqs9e/Zow4YN+ou/+Ivicp/0vpblndD555+vsWPHloy+vb29JaN0tTiexqmWff7GN76hp556Sj/72c+K80NJ1bWftbW1+sxnPqNZs2apo6NDV199tX7wgx9UzT7u3LlTvb29uv766zVu3DiNGzdOXV1d+vu//3uNGzeuuC+Vvp8nmjhxoq688kq98sorVXMuJWnKlCm64oorRrRdfvnlevPNNyWle2+W5SBUW1ur66+/Xp2dnSPaOzs7NXfu3ES9yldLS4uam5tH7PPw8LC6uroqap+zLNO9996rJ554Qj/96U/V0tIy4vVq2c+QLMs0NDRUNft46623avfu3dq1a1fxZ9asWbrzzju1a9cuffrTn66K/TzR0NCQfvWrX2nKlClVcy4l6aabbir5c4lf//rXmj59uqSE783cIg+n6XhE+5/+6Z+yl19+OVu+fHk2ceLE7PXXX0/dtVM2MDCQvfjii9mLL76YScrWrl2bvfjii8XY+UMPPZQ1NjZmTzzxRLZ79+7sy1/+csVFQb/+9a9njY2N2bPPPjsi8vr+++8Xl6mG/Vy5cmX23HPPZfv27cteeuml7P7778/GjBmTbdu2Lcuy6tjHkI+m47KsOvbzb/7mb7Jnn302e+2117Lnn38++9M//dOsoaGh+FlTDfuYZR/G7MeNG5d997vfzV555ZXsn//5n7P6+vrsRz/6UXGZFPtatoNQlmXZww8/nE2fPj2rra3NrrvuumLMt1L97Gc/yySV/Nx1111Zln0YkXzggQey5ubmrFAoZJ/97Gez3bt3p+20U2j/JGWPPPJIcZlq2M+//Mu/LF6bF1xwQXbrrbcWB6Asq459DDlxEKqG/Tz+tzDjx4/Ppk6dmi1atCjbs2dP8fVq2Mfj/v3f/z2bOXNmVigUsssuuyzbuHHjiNdT7CvzCQEAkinLZ0IAgDMDgxAAIBkGIQBAMgxCAIBkGIQAAMkwCAEAkmEQAgAkwyAEAEiGQQgAkAyDEAAgGQYhAEAy/w/fi81VGZdpEgAAAABJRU5ErkJggg==\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "import sys\n",
- "\n",
- "sys.path.append(bundle_root) # make sure we load the script files we need\n",
- "\n",
- "# configure the parser from the bundle's information\n",
- "cp = ConfigParser()\n",
- "cp.read_meta(f\"{bundle_root}/configs/metadata.json\")\n",
- "cp.read_config([f\"{bundle_root}/configs/common.yaml\", f\"{bundle_root}/configs/infer.yaml\"])\n",
- "cp[\"bundle_root\"] = bundle_root\n",
- "cp[\"ckpt_path\"] = \"./results/output_230215_174009/model_final_iteration=75000.pt\"\n",
- "\n",
- "cp.get_parsed_content(\"load_state\") # load the saved state from the checkpoint just be resolving this value\n",
- "\n",
- "device = cp.get_parsed_content(\"device\") # device used by the bundle\n",
- "sample = cp.get_parsed_content(\"sample\") # test sampling function\n",
- "\n",
- "image_dim = cp[\"image_dim\"] # get the stored dimension value, no need to resolve anything\n",
- "\n",
- "noise = torch.rand(1, 1, image_dim, image_dim).to(device) # or cp.get_parsed_content(\"noise\")\n",
- "\n",
- "test = sample(noise)\n",
- "\n",
- "plt.imshow(test[0, 0].cpu(), vmin=0, vmax=1, cmap=\"gray\")"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "2feab4e5-2745-4d35-9eec-a2bb8340cf51",
- "metadata": {},
- "source": [
- "Multi-GPU can be enabled by including the `train_multigpu.yaml` configuration file:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "173cda1c-ac90-410f-b34d-b6cbb0044c7a",
- "metadata": {},
- "outputs": [],
- "source": [
- "configs=f\"'{bundle_root}/configs/common.yaml', '{bundle_root}/configs/train.yaml', '{bundle_root}/configs/train_multigpu.yaml'\"\n",
- "\n",
- "!PYTHONPATH={bundle_root} torchrun --standalone --nnodes=1 --nproc_per_node=2 -m monai.bundle run training \\\n",
- " --meta_file {bundle_root}/configs/metadata.json \\\n",
- " --config_file \"{configs}\" \\\n",
- " --logging_file {bundle_root}/configs/logging.conf \\\n",
- " --bundle_root {bundle_root} \\\n",
- " --dataset_dir {dataset_dir}"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "cb719023-8250-43c4-ab10-911829332498",
- "metadata": {},
- "outputs": [],
- "source": [
- "if directory is None:\n",
- " shutil.rmtree(dataset_dir)"
- ]
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Python [conda env:monai]",
- "language": "python",
- "name": "conda-env-monai-py"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.9.13"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 5
-}
diff --git a/model-zoo/models/mednist_ddpm/bundle/docs/README.md b/model-zoo/models/mednist_ddpm/bundle/docs/README.md
deleted file mode 100644
index 6483aff5..00000000
--- a/model-zoo/models/mednist_ddpm/bundle/docs/README.md
+++ /dev/null
@@ -1,9 +0,0 @@
-
-# MedNIST DDPM Example Bundle
-
-This implements roughly equivalent code to the "Denoising Diffusion Probabilistic Models with MedNIST Dataset" example notebook. This includes scripts for training with single or multiple GPUs and a visualisation notebook.
-
-The files included here demonstrate how to use the bundle:
- * [2d_ddpm_bundle_tutorial.ipynb](./2d_ddpm_bundle_tutorial.ipynb) - demonstrates command line and in-code invocation of the bundle's training and inference scripts
- * [sub_train.sh](sub_train.sh) - SLURM submission script example for training
- * [sub_train_multigpu.sh](sub_train_multigpu.sh) - SLURM submission script example for training with multiple GPUs
diff --git a/model-zoo/models/mednist_ddpm/bundle/docs/sub_train.sh b/model-zoo/models/mednist_ddpm/bundle/docs/sub_train.sh
deleted file mode 100755
index 237b16f5..00000000
--- a/model-zoo/models/mednist_ddpm/bundle/docs/sub_train.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#! /bin/bash
-#SBATCH --nodes=1
-#SBATCH -J mednist_train
-#SBATCH -c 4
-#SBATCH --gres=gpu:1
-#SBATCH --time=2:00:00
-#SBATCH -p small
-
-set -v
-
-# change this if run submitted from a different directory
-export BUNDLE="$(pwd)/.."
-
-# have to set PYTHONPATH to find MONAI and GenerativeModels as well as the bundle's script directory
-export PYTHONPATH="$HOME/MONAI:$HOME/GenerativeModels:$BUNDLE"
-
-# change this to load a checkpoint instead of started from scratch
-CKPT=none
-
-CONFIG="'$BUNDLE/configs/common.yaml', '$BUNDLE/configs/train.yaml'"
-
-# change this to point to where MedNIST is located
-DATASET="$(pwd)"
-
-# it's useful to include the configuration in the log file
-cat "$BUNDLE/configs/common.yaml"
-cat "$BUNDLE/configs/train.yaml"
-
-python -m monai.bundle run training \
- --meta_file "$BUNDLE/configs/metadata.json" \
- --config_file "$CONFIG" \
- --logging_file "$BUNDLE/configs/logging.conf" \
- --bundle_root "$BUNDLE" \
- --dataset_dir "$DATASET"
diff --git a/model-zoo/models/mednist_ddpm/bundle/docs/sub_train_multigpu.sh b/model-zoo/models/mednist_ddpm/bundle/docs/sub_train_multigpu.sh
deleted file mode 100644
index 4d5f6af0..00000000
--- a/model-zoo/models/mednist_ddpm/bundle/docs/sub_train_multigpu.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-#! /bin/bash
-#SBATCH --nodes=1
-#SBATCH -J mednist_train
-#SBATCH -c 4
-#SBATCH --gres=gpu:2
-#SBATCH --time=2:00:00
-#SBATCH -p big
-
-set -v
-
-# change this if run submitted from a different directory
-export BUNDLE="$(pwd)/.."
-
-# have to set PYTHONPATH to find MONAI and GenerativeModels as well as the bundle's script directory
-export PYTHONPATH="$HOME/MONAI:$HOME/GenerativeModels:$BUNDLE"
-
-# change this to load a checkpoint instead of started from scratch
-CKPT=none
-
-CONFIG="'$BUNDLE/configs/common.yaml', '$BUNDLE/configs/train.yaml', '$BUNDLE/configs/train_multigpu.yaml'"
-
-# change this to point to where MedNIST is located
-DATASET="$(pwd)"
-
-# it's useful to include the configuration in the log file
-cat "$BUNDLE/configs/common.yaml"
-cat "$BUNDLE/configs/train.yaml"
-cat "$BUNDLE/configs/train_multigpu.yaml"
-
-# remember to change arguments to match how many nodes and GPUs you have
-torchrun --standalone --nnodes=1 --nproc_per_node=2 -m monai.bundle run training \
- --meta_file "$BUNDLE/configs/metadata.json" \
- --config_file "$CONFIG" \
- --logging_file "$BUNDLE/configs/logging.conf" \
- --bundle_root "$BUNDLE" \
- --dataset_dir "$DATASET"
diff --git a/model-zoo/models/mednist_ddpm/bundle/scripts/__init__.py b/model-zoo/models/mednist_ddpm/bundle/scripts/__init__.py
deleted file mode 100644
index c44e4a34..00000000
--- a/model-zoo/models/mednist_ddpm/bundle/scripts/__init__.py
+++ /dev/null
@@ -1,12 +0,0 @@
-from __future__ import annotations
-
-
-def inv_metric_cmp_fn(current_metric: float, prev_best: float) -> bool:
- """
- This inverts comparison for those metrics which reduce like loss values, such that the lower one is better.
-
- Args:
- current_metric: metric value of current round computation.
- prev_best: the best metric value of previous rounds to compare with.
- """
- return current_metric < prev_best
diff --git a/pyproject.toml b/pyproject.toml
deleted file mode 100644
index a7ce5bf6..00000000
--- a/pyproject.toml
+++ /dev/null
@@ -1,60 +0,0 @@
-[tool.black]
-line-length = 120
-target-version = ['py37', 'py38', 'py39', 'py310']
-include = '\.pyi?$'
-exclude = '''
-(
- /(
- # exclude a few common directories in the root of the project
- \.eggs
- | \.git
- | \.hg
- | \.mypy_cache
- | \.tox
- | \.venv
- | venv
- | \.pytype
- | _build
- | buck-out
- | build
- | dist
- )/
- # also separately exclude a file named versioneer.py
- | generative/_version.py
-)
-'''
-
-[tool.pycln]
-all = true
-
-[tool.pytype]
-# Space-separated list of files or directories to exclude.
-exclude = ["versioneer.py", "_version.py", "tutorials/"]
-# Space-separated list of files or directories to process.
-inputs = ["generative"]
-# Keep going past errors to analyze as many files as possible.
-keep_going = true
-# Run N jobs in parallel.
-jobs = 8
-# All pytype output goes here.
-output = ".pytype"
-# Paths to source code directories, separated by ':'.
-pythonpath = "."
-# Check attribute values against their annotations.
-check_attribute_types = true
-# Check container mutations against their annotations.
-check_container_types = true
-# Check parameter defaults and assignments against their annotations.
-check_parameter_types = true
-# Check variable values against their annotations.
-check_variable_types = true
-# Comma or space separated list of error names to ignore.
-disable = ["pyi-error"]
-# Report errors.
-report_errors = true
-# Experimental: Infer precise return types even for invalid function calls.
-precise_return = true
-# Experimental: solve unknown types to label with structural types.
-protocols = true
-# Experimental: Only load submodules that are explicitly imported.
-strict_import = false
diff --git a/requirements-dev.txt b/requirements-dev.txt
deleted file mode 100644
index 5b19e5d4..00000000
--- a/requirements-dev.txt
+++ /dev/null
@@ -1,57 +0,0 @@
-# Full requirements for developments
--r requirements-min.txt
-pytorch-ignite==0.4.10
-gdown>=4.4.0
-scipy
-itk>=5.2
-nibabel
-pillow!=8.3.0 # https://github.com/python-pillow/Pillow/issues/5571
-tensorboard>=2.6 # https://github.com/Project-MONAI/MONAI/issues/5776
-scikit-image>=0.19.0
-tqdm>=4.47.0
-lmdb
-flake8>=3.8.1
-flake8-bugbear
-flake8-comprehensions
-flake8-executable
-pylint!=2.13 # https://github.com/PyCQA/pylint/issues/5969
-mccabe
-pep8-naming
-pycodestyle
-pyflakes
-black
-isort
-pytype>=2020.6.1; platform_system != "Windows"
-types-pkg_resources
-mypy>=0.790
-ninja
-torchvision
-psutil
-Sphinx==3.5.3
-recommonmark==0.6.0
-sphinx-autodoc-typehints==1.11.1
-sphinx-rtd-theme==0.5.2
-cucim==22.8.1; platform_system == "Linux"
-openslide-python==1.1.2
-imagecodecs; platform_system == "Linux" or platform_system == "Darwin"
-tifffile; platform_system == "Linux" or platform_system == "Darwin"
-pandas
-requests
-einops
-transformers<4.22 # https://github.com/Project-MONAI/MONAI/issues/5157
-mlflow
-matplotlib!=3.5.0
-tensorboardX
-types-PyYAML
-pyyaml
-fire
-jsonschema
-pynrrd
-pre-commit
-pydicom
-h5py
-nni
-optuna
-git+https://github.com/Project-MONAI/MetricsReloaded@monai-support#egg=MetricsReloaded
-lpips==0.1.4
-xformers==0.0.16
diff --git a/requirements-min.txt b/requirements-min.txt
deleted file mode 100644
index ceb9e346..00000000
--- a/requirements-min.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-# Requirements for minimal tests
--r requirements.txt
-setuptools>65.5.0,<66.0.0
-coverage>=5.5
-parameterized
diff --git a/requirements.txt b/requirements.txt
deleted file mode 100644
index 3f1ff86c..00000000
--- a/requirements.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-numpy>=1.17
-torch>=1.8
-monai>=1.2.0rc1
diff --git a/runtests.sh b/runtests.sh
deleted file mode 100755
index 33072f81..00000000
--- a/runtests.sh
+++ /dev/null
@@ -1,645 +0,0 @@
-#! /bin/bash
-
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# script for running all tests
-set -e
-
-# output formatting
-separator=""
-blue=""
-green=""
-red=""
-noColor=""
-
-if [[ -t 1 ]] # stdout is a terminal
-then
- separator=$'--------------------------------------------------------------------------------\n'
- blue="$(tput bold; tput setaf 4)"
- green="$(tput bold; tput setaf 2)"
- red="$(tput bold; tput setaf 1)"
- noColor="$(tput sgr0)"
-fi
-
-# configuration values
-doCoverage=false
-doQuickTests=false
-doMinTests=false
-doNetTests=false
-doDryRun=false
-doZooTests=false
-doUnitTests=false
-doBlackFormat=false
-doBlackFix=false
-doIsortFormat=false
-doIsortFix=false
-doFlake8Format=false
-doPylintFormat=false
-doCopyRight=false
-doPytypeFormat=false
-doMypyFormat=false
-doCleanup=false
-doDistTests=false
-doPrecommit=false
-
-NUM_PARALLEL=1
-
-PY_EXE=${MONAI_PY_EXE:-$(which python)}
-
-function print_usage {
- echo "runtests.sh [--codeformat] [--autofix] [--black] [--isort] [--flake8] [--pylint] [--pytype] [--mypy]"
- echo " [--unittests] [--disttests] [--coverage] [--quick] [--min] [--net] [--dryrun] [-j number] [--list_tests]"
- echo " [--copyright] [--clean] [--precommit] [--help] [--version]"
- echo ""
- echo "MONAI unit testing utilities."
- echo ""
- echo "Examples:"
- echo "./runtests.sh -f -u --net --coverage # run style checks, full tests, print code coverage (${green}recommended for pull requests${noColor})."
- echo "./runtests.sh -f -u # run style checks and unit tests."
- echo "./runtests.sh -f # run coding style and static type checking."
- echo "./runtests.sh --quick --unittests # run minimal unit tests, for quick verification during code developments."
- echo "./runtests.sh --autofix # run automatic code formatting using \"isort\" and \"black\"."
- echo "./runtests.sh --clean # clean up temporary files and run \"${PY_EXE} setup.py develop --uninstall\"."
- echo ""
- echo "Code style check options:"
- echo " --black : perform \"black\" code format checks"
- echo " --autofix : format code using \"isort\" and \"black\""
- echo " --isort : perform \"isort\" import sort checks"
- echo " --flake8 : perform \"flake8\" code format checks"
- echo " --pylint : perform \"pylint\" code format checks"
- echo " --precommit : perform source code format check and fix using \"pre-commit\""
- echo ""
- echo "Python type check options:"
- echo " --pytype : perform \"pytype\" static type checks"
- echo " --mypy : perform \"mypy\" static type checks"
- echo " -j, --jobs : number of parallel jobs to run \"pytype\" (default $NUM_PARALLEL)"
- echo ""
- echo "MONAI unit testing options:"
- echo " -u, --unittests : perform unit testing"
- echo " --disttests : perform distributed unit testing"
- echo " --coverage : report testing code coverage, to be used with \"--net\", \"--unittests\""
- echo " -q, --quick : skip long running unit tests and integration tests"
- echo " -m, --min : only run minimal unit tests which do not require optional packages"
- echo " --net : perform integration testing"
- echo " --list_tests : list unit tests and exit"
- echo ""
- echo "Misc. options:"
- echo " --dryrun : display the commands to the screen without running"
- echo " --copyright : check whether every source code has a copyright header"
- echo " -f, --codeformat : shorthand to run all code style and static analysis tests"
- echo " -c, --clean : clean temporary files from tests and exit"
- echo " -h, --help : show this help message and exit"
- echo " -v, --version : show MONAI and system version information and exit"
- echo ""
- echo "${separator}For bug reports and feature requests, please file an issue at:"
- echo " https://github.com/Project-MONAI/MONAI/issues/new/choose"
- echo ""
- echo "To choose an alternative python executable, set the environmental variable, \"MONAI_PY_EXE\"."
- exit 1
-}
-
-# FIXME: https://github.com/Project-MONAI/MONAI/issues/4354
-protobuf_major_version=$(${PY_EXE} -m pip list | grep '^protobuf ' | tr -s ' ' | cut -d' ' -f2 | cut -d'.' -f1)
-if [ "$protobuf_major_version" -ge "4" ]
-then
- export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python
-fi
-
-function check_import {
- echo "Python: ${PY_EXE}"
- ${cmdPrefix}${PY_EXE} -W error -W ignore::DeprecationWarning -c "import generative"
-}
-
-function print_version {
- ${cmdPrefix}${PY_EXE} -c 'import monai; monai.config.print_config()'
-}
-
-function install_deps {
- echo "Pip installing MONAI development dependencies and compile MONAI cpp extensions..."
- ${cmdPrefix}${PY_EXE} -m pip install -r requirements-dev.txt
-}
-
-
-function is_pip_installed() {
- return $(${PY_EXE} -c "import sys, pkgutil; sys.exit(0 if pkgutil.find_loader(sys.argv[1]) else 1)" $1)
-}
-
-function clean_py {
- if is_pip_installed coverage
- then
- # remove coverage history
- ${cmdPrefix}${PY_EXE} -m coverage erase
- fi
-
- # uninstall the development package
- echo "Uninstalling MONAI development files..."
- ${cmdPrefix}${PY_EXE} setup.py develop --user --uninstall
-
- # remove temporary files (in the directory of this script)
- TO_CLEAN="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
- echo "Removing temporary files in ${TO_CLEAN}"
-
- find ${TO_CLEAN}/generative -type f -name "*.py[co]" -delete
- find ${TO_CLEAN}/generative -type f -name "*.so" -delete
- find ${TO_CLEAN}/generative -type d -name "__pycache__" -delete
- find ${TO_CLEAN} -maxdepth 1 -type f -name ".coverage.*" -delete
-
- find ${TO_CLEAN} -depth -maxdepth 1 -type d -name ".eggs" -exec rm -r "{}" +
- find ${TO_CLEAN} -depth -maxdepth 1 -type d -name "generative.egg-info" -exec rm -r "{}" +
- find ${TO_CLEAN} -depth -maxdepth 1 -type d -name "dist" -exec rm -r "{}" +
- find ${TO_CLEAN} -depth -maxdepth 1 -type d -name ".mypy_cache" -exec rm -r "{}" +
- find ${TO_CLEAN} -depth -maxdepth 1 -type d -name ".pytype" -exec rm -r "{}" +
- find ${TO_CLEAN} -depth -maxdepth 1 -type d -name ".coverage" -exec rm -r "{}" +
- find ${TO_CLEAN} -depth -maxdepth 1 -type d -name "__pycache__" -exec rm -r "{}" +
-}
-
-function torch_validate {
- ${cmdPrefix}${PY_EXE} -c 'import torch; print(torch.__version__); print(torch.rand(5,3))'
-}
-
-function print_error_msg() {
- echo "${red}Error: $1.${noColor}"
- echo ""
-}
-
-function print_style_fail_msg() {
- echo "${red}Check failed!${noColor}"
- echo "Please run auto style fixes: ${green}./runtests.sh --autofix${noColor}"
-}
-
-function list_unittests() {
- ${PY_EXE} - << END
-import unittest
-def print_suite(suite):
- if hasattr(suite, "__iter__"):
- for x in suite:
- print_suite(x)
- else:
- print(suite)
-print_suite(unittest.defaultTestLoader.discover('./tests'))
-END
- exit 0
-}
-
-if [ -z "$1" ]
-then
- print_error_msg "Too few arguments to $0"
- print_usage
-fi
-
-# parse arguments
-while [[ $# -gt 0 ]]
-do
- key="$1"
- case $key in
- --coverage)
- doCoverage=true
- ;;
- -q|--quick)
- doQuickTests=true
- ;;
- -m|--min)
- doMinTests=true
- ;;
- --net)
- doNetTests=true
- ;;
- --list_tests)
- list_unittests
- ;;
- --dryrun)
- doDryRun=true
- ;;
- -u|--u*) # allow --unittest | --unittests | --unittesting etc.
- doUnitTests=true
- ;;
- -f|--codeformat)
- doBlackFormat=true
- doIsortFormat=true
- doFlake8Format=true
- doPylintFormat=true
- doPytypeFormat=false
- doMypyFormat=false
- doCopyRight=true
- ;;
- --disttests)
- doDistTests=true
- ;;
- --black)
- doBlackFormat=true
- ;;
- --autofix)
- doIsortFix=true
- doBlackFix=true
- doIsortFormat=true
- doBlackFormat=true
- doCopyRight=true
- ;;
- --isort)
- doIsortFormat=true
- ;;
- --flake8)
- doFlake8Format=true
- ;;
- --pylint)
- doPylintFormat=true
- ;;
- --precommit)
- doPrecommit=true
- ;;
- --pytype)
- doPytypeFormat=true
- ;;
- --mypy)
- doMypyFormat=true
- ;;
- -j|--jobs)
- NUM_PARALLEL=$2
- shift
- ;;
- --copyright)
- doCopyRight=true
- ;;
- -c|--clean)
- doCleanup=true
- ;;
- -h|--help)
- print_usage
- ;;
- -v|--version)
- print_version
- exit 1
- ;;
- --nou*) # allow --nounittest | --nounittests | --nounittesting etc.
- print_error_msg "nounittest option is deprecated, no unit tests is the default setting"
- print_usage
- ;;
- *)
- print_error_msg "Incorrect commandline provided, invalid key: $key"
- print_usage
- ;;
- esac
- shift
-done
-
-# home directory
-homedir="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-cd "$homedir"
-
-# python path
-export PYTHONPATH="$homedir:$PYTHONPATH"
-echo "PYTHONPATH: $PYTHONPATH"
-
-# by default do nothing
-cmdPrefix=""
-
-if [ $doDryRun = true ]
-then
- echo "${separator}${blue}dryrun${noColor}"
-
- # commands are echoed instead of ran
- cmdPrefix="dryrun "
- function dryrun { echo " " "$@"; }
-else
- check_import
-fi
-
-
-if [ $doCleanup = true ]
-then
- echo "${separator}${blue}clean${noColor}"
-
- clean_py
-
- echo "${green}done!${noColor}"
- exit
-fi
-
-
-# unconditionally report on the state of monai
-print_version
-
-if [ $doCopyRight = true ]
-then
- # check copyright headers
- copyright_bad=0
- copyright_all=0
- while read -r fname; do
- copyright_all=$((copyright_all + 1))
- if ! grep "http://www.apache.org/licenses/LICENSE-2.0" "$fname" > /dev/null; then
- print_error_msg "Missing the license header in file: $fname"
- copyright_bad=$((copyright_bad + 1))
- fi
- done <<< "$(find "$(pwd)/generative" "$(pwd)/tests" -type f \
- ! -wholename "*_version.py" -and -name "*.py" -or -name "*.cpp" -or -name "*.cu" -or -name "*.h")"
- if [[ ${copyright_bad} -eq 0 ]];
- then
- echo "${green}Source code copyright headers checked ($copyright_all).${noColor}"
- else
- echo "Please add the licensing header to the file ($copyright_bad of $copyright_all files)."
- echo " See also: https://github.com/Project-MONAI/MONAI/blob/dev/CONTRIBUTING.md#checking-the-coding-style"
- echo ""
- exit 1
- fi
-fi
-
-
-if [ $doPrecommit = true ]
-then
- set +e # disable exit on failure so that diagnostics can be given on failure
- echo "${separator}${blue}pre-commit${noColor}"
-
- # ensure that the necessary packages for code format testing are installed
- if ! is_pip_installed pre_commit
- then
- install_deps
- fi
- ${cmdPrefix}${PY_EXE} -m pre_commit run --all-files
-
- pre_commit_status=$?
- if [ ${pre_commit_status} -ne 0 ]
- then
- print_style_fail_msg
- exit ${pre_commit_status}
- else
- echo "${green}passed!${noColor}"
- fi
- set -e # enable exit on failure
-fi
-
-
-if [ $doIsortFormat = true ]
-then
- set +e # disable exit on failure so that diagnostics can be given on failure
- if [ $doIsortFix = true ]
- then
- echo "${separator}${blue}isort-fix${noColor}"
- else
- echo "${separator}${blue}isort${noColor}"
- fi
-
- # ensure that the necessary packages for code format testing are installed
- if ! is_pip_installed isort
- then
- install_deps
- fi
- ${cmdPrefix}${PY_EXE} -m isort --version
-
- if [ $doIsortFix = true ]
- then
- ${cmdPrefix}${PY_EXE} -m isort "$(pwd)"
- else
- ${cmdPrefix}${PY_EXE} -m isort --check "$(pwd)"
- fi
-
- isort_status=$?
- if [ ${isort_status} -ne 0 ]
- then
- print_style_fail_msg
- exit ${isort_status}
- else
- echo "${green}passed!${noColor}"
- fi
- set -e # enable exit on failure
-fi
-
-
-if [ $doBlackFormat = true ]
-then
- set +e # disable exit on failure so that diagnostics can be given on failure
- if [ $doBlackFix = true ]
- then
- echo "${separator}${blue}black-fix${noColor}"
- else
- echo "${separator}${blue}black${noColor}"
- fi
-
- # ensure that the necessary packages for code format testing are installed
- if ! is_pip_installed black
- then
- install_deps
- fi
- ${cmdPrefix}${PY_EXE} -m black --version
-
- if [ $doBlackFix = true ]
- then
- ${cmdPrefix}${PY_EXE} -m black --skip-magic-trailing-comma "$(pwd)"
- else
- ${cmdPrefix}${PY_EXE} -m black --skip-magic-trailing-comma --check "$(pwd)"
- fi
-
- black_status=$?
- if [ ${black_status} -ne 0 ]
- then
- print_style_fail_msg
- exit ${black_status}
- else
- echo "${green}passed!${noColor}"
- fi
- set -e # enable exit on failure
-fi
-
-
-if [ $doFlake8Format = true ]
-then
- set +e # disable exit on failure so that diagnostics can be given on failure
- echo "${separator}${blue}flake8${noColor}"
-
- # ensure that the necessary packages for code format testing are installed
- if ! is_pip_installed flake8
- then
- install_deps
- fi
- ${cmdPrefix}${PY_EXE} -m flake8 --version
-
- ${cmdPrefix}${PY_EXE} -m flake8 "$(pwd)" --count --statistics
-
- flake8_status=$?
- if [ ${flake8_status} -ne 0 ]
- then
- print_style_fail_msg
- exit ${flake8_status}
- else
- echo "${green}passed!${noColor}"
- fi
- set -e # enable exit on failure
-fi
-
-if [ $doPylintFormat = true ]
-then
- set +e # disable exit on failure so that diagnostics can be given on failure
- echo "${separator}${blue}pylint${noColor}"
-
- # ensure that the necessary packages for code format testing are installed
- if ! is_pip_installed pylint
- then
- install_deps
- fi
- ${cmdPrefix}${PY_EXE} -m pylint --version
-
- ignore_codes="C,R,W,E1101,E1102,E0601,E1130,E1123,E0102,E1120,E1137,E1136"
- ${cmdPrefix}${PY_EXE} -m pylint generative tests --disable=$ignore_codes -j $NUM_PARALLEL
- pylint_status=$?
-
- if [ ${pylint_status} -ne 0 ]
- then
- print_style_fail_msg
- exit ${pylint_status}
- else
- echo "${green}passed!${noColor}"
- fi
- set -e # enable exit on failure
-fi
-
-
-if [ $doPytypeFormat = true ]
-then
- set +e # disable exit on failure so that diagnostics can be given on failure
- echo "${separator}${blue}pytype${noColor}"
- # ensure that the necessary packages for code format testing are installed
- if ! is_pip_installed pytype
- then
- install_deps
- fi
- pytype_ver=$(${cmdPrefix}${PY_EXE} -m pytype --version)
- if [[ "$OSTYPE" == "darwin"* && "$pytype_ver" == "2021."* ]]; then
- echo "${red}pytype not working on macOS 2021 (https://github.com/Project-MONAI/MONAI/issues/2391). Please upgrade to 2022*.${noColor}"
- exit 1
- else
- ${cmdPrefix}${PY_EXE} -m pytype --version
-
- ${cmdPrefix}${PY_EXE} -m pytype -j ${NUM_PARALLEL} --python-version="$(${PY_EXE} -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')")" "$(pwd)"
-
- pytype_status=$?
- if [ ${pytype_status} -ne 0 ]
- then
- echo "${red}failed!${noColor}"
- exit ${pytype_status}
- else
- echo "${green}passed!${noColor}"
- fi
- fi
- set -e # enable exit on failure
-fi
-
-
-if [ $doMypyFormat = true ]
-then
- set +e # disable exit on failure so that diagnostics can be given on failure
- echo "${separator}${blue}mypy${noColor}"
-
- # ensure that the necessary packages for code format testing are installed
- if ! is_pip_installed mypy
- then
- install_deps
- fi
- ${cmdPrefix}${PY_EXE} -m mypy --version
- ${cmdPrefix}${PY_EXE} -m mypy "$(pwd)"
-
- mypy_status=$?
- if [ ${mypy_status} -ne 0 ]
- then
- : # mypy output already follows format
- exit ${mypy_status}
- else
- : # mypy output already follows format
- fi
- set -e # enable exit on failure
-fi
-
-
-# testing command to run
-cmd="${PY_EXE}"
-
-# When running --quick, require doCoverage as well and set QUICKTEST environmental
-# variable to disable slow unit tests from running.
-if [ $doQuickTests = true ]
-then
- echo "${separator}${blue}quick${noColor}"
- doCoverage=true
- export QUICKTEST=True
-fi
-
-if [ $doMinTests = true ]
-then
- echo "${separator}${blue}min${noColor}"
- ${cmdPrefix}${PY_EXE} -m tests.min_tests
-fi
-
-# set coverage command
-if [ $doCoverage = true ]
-then
- echo "${separator}${blue}coverage${noColor}"
- # ensure that the necessary packages for code format testing are installed
- if ! is_pip_installed coverage
- then
- install_deps
- fi
- cmd="${PY_EXE} -m coverage run --append"
-fi
-
-# # download test data if needed
-# if [ ! -d testing_data ] && [ "$doDryRun" != 'true' ]
-# then
-# fi
-
-# unit tests
-if [ $doUnitTests = true ]
-then
- echo "${separator}${blue}unittests${noColor}"
- torch_validate
- ${cmdPrefix}${cmd} ./tests/runner.py -p "^(?!test_integration).*(?=1.2.0rc1"],
-)
diff --git a/tests/__init__.py b/tests/__init__.py
deleted file mode 100644
index 58422f80..00000000
--- a/tests/__init__.py
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-import sys
-import unittest
-import warnings
-
-
-def _enter_pr_4800(self):
- """
- code from https://github.com/python/cpython/pull/4800
- """
- # The __warningregistry__'s need to be in a pristine state for tests
- # to work properly.
- for v in list(sys.modules.values()):
- if getattr(v, "__warningregistry__", None):
- v.__warningregistry__ = {}
- self.warnings_manager = warnings.catch_warnings(record=True)
- self.warnings = self.warnings_manager.__enter__()
- warnings.simplefilter("always", self.expected)
- return self
-
-
-# FIXME: workaround for https://bugs.python.org/issue29620
-try:
- # Suppression for issue #494: tests/__init__.py:34: error: Cannot assign to a method
- unittest.case._AssertWarnsContext.__enter__ = _enter_pr_4800 # type: ignore
-except AttributeError:
- pass
diff --git a/tests/min_tests.py b/tests/min_tests.py
deleted file mode 100644
index 15bf3bfd..00000000
--- a/tests/min_tests.py
+++ /dev/null
@@ -1,66 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-import glob
-import os
-import sys
-import unittest
-
-
-def run_testsuit():
- """
- Load test cases by excluding those need external dependencies.
- The loaded cases should work with "requirements-min.txt"::
-
- # in the monai repo folder:
- pip install -r requirements-min.txt
- QUICKTEST=true python -m tests.min_tests
-
- :return: a test suite
- """
- exclude_cases = [ # these cases use external dependencies
- "test_autoencoderkl",
- "test_diffusion_inferer",
- "test_integration_workflows_adversarial",
- "test_latent_diffusion_inferer",
- "test_perceptual_loss",
- "test_transformer",
- ]
- assert sorted(exclude_cases) == sorted(set(exclude_cases)), f"Duplicated items in {exclude_cases}"
-
- files = glob.glob(os.path.join(os.path.dirname(__file__), "test_*.py"))
-
- cases = []
- for case in files:
- test_module = os.path.basename(case)[:-3]
- if test_module in exclude_cases:
- exclude_cases.remove(test_module)
- print(f"skipping tests.{test_module}.")
- else:
- cases.append(f"tests.{test_module}")
- assert not exclude_cases, f"items in exclude_cases not used: {exclude_cases}."
- test_suite = unittest.TestLoader().loadTestsFromNames(cases)
- return test_suite
-
-
-if __name__ == "__main__":
- # testing import submodules
- from monai.utils.module import load_submodules
-
- _, err_mod = load_submodules(sys.modules["monai"], True)
- assert not err_mod, f"err_mod={err_mod} not empty"
-
- # testing all modules
- test_runner = unittest.TextTestRunner(stream=sys.stdout, verbosity=2)
- result = test_runner.run(run_testsuit())
- sys.exit(int(not result.wasSuccessful()))
diff --git a/tests/runner.py b/tests/runner.py
deleted file mode 100644
index 7a7cc9f2..00000000
--- a/tests/runner.py
+++ /dev/null
@@ -1,152 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-import argparse
-import glob
-import inspect
-import os
-import re
-import sys
-import time
-import unittest
-
-from monai.utils import PerfContext
-
-results: dict = {}
-
-
-class TimeLoggingTestResult(unittest.TextTestResult):
- """Overload the default results so that we can store the results."""
-
- def __init__(self, *args, **kwargs):
- super().__init__(*args, **kwargs)
- self.timed_tests = {}
-
- def startTest(self, test): # noqa: N802
- """Start timer, print test name, do normal test."""
- self.start_time = time.time()
- name = self.getDescription(test)
- self.stream.write(f"Starting test: {name}...\n")
- super().startTest(test)
-
- def stopTest(self, test): # noqa: N802
- """On test end, get time, print, store and do normal behaviour."""
- elapsed = time.time() - self.start_time
- name = self.getDescription(test)
- self.stream.write(f"Finished test: {name} ({elapsed:.03}s)\n")
- if name in results:
- raise AssertionError("expected all keys to be unique")
- results[name] = elapsed
- super().stopTest(test)
-
-
-def print_results(results, discovery_time, thresh, status):
- # only keep results >= threshold
- results = dict(filter(lambda x: x[1] > thresh, results.items()))
- if len(results) == 0:
- return
- print(f"\n\n{status}, printing completed times >{thresh}s in ascending order...\n")
- timings = dict(sorted(results.items(), key=lambda item: item[1]))
-
- for r in timings:
- if timings[r] >= thresh:
- print(f"{r} ({timings[r]:.03}s)")
- print(f"test discovery time: {discovery_time:.03}s")
- print(f"total testing time: {sum(results.values()):.03}s")
- print("Remember to check above times for any errors!")
-
-
-def parse_args():
- parser = argparse.ArgumentParser(description="Runner for MONAI unittests with timing.")
- parser.add_argument(
- "-s", action="store", dest="path", default=".", help="Directory to start discovery (default: '%(default)s')"
- )
- parser.add_argument(
- "-p",
- action="store",
- dest="pattern",
- default="test_*.py",
- help="Pattern to match tests (default: '%(default)s')",
- )
- parser.add_argument(
- "-t",
- "--thresh",
- dest="thresh",
- default=10.0,
- type=float,
- help="Display tests longer than given threshold (default: %(default)d)",
- )
- parser.add_argument(
- "-v",
- "--verbosity",
- action="store",
- dest="verbosity",
- type=int,
- default=1,
- help="Verbosity level (default: %(default)d)",
- )
- parser.add_argument("-q", "--quick", action="store_true", dest="quick", default=False, help="Only do quick tests")
- parser.add_argument(
- "-f", "--failfast", action="store_true", dest="failfast", default=False, help="Stop testing on first failure"
- )
- args = parser.parse_args()
- print(f"Running tests in folder: '{args.path}'")
- if args.pattern:
- print(f"With file pattern: '{args.pattern}'")
-
- return args
-
-
-def get_default_pattern(loader):
- signature = inspect.signature(loader.discover)
- params = {k: v.default for k, v in signature.parameters.items() if v.default is not inspect.Parameter.empty}
- return params["pattern"]
-
-
-if __name__ == "__main__":
- # Parse input arguments
- args = parse_args()
-
- # If quick is desired, set environment variable
- if args.quick:
- os.environ["QUICKTEST"] = "True"
-
- # Get all test names (optionally from some path with some pattern)
- with PerfContext() as pc:
- # the files are searched from `tests/` folder, starting with `test_`
- files = glob.glob(os.path.join(os.path.dirname(__file__), "test_*.py"))
- cases = []
- for test_module in {os.path.basename(f)[:-3] for f in files}:
- if re.match(args.pattern, test_module):
- cases.append(f"tests.{test_module}")
- else:
- print(f"monai test runner: excluding tests.{test_module}")
- tests = unittest.TestLoader().loadTestsFromNames(cases)
- discovery_time = pc.total_time
- print(f"time to discover tests: {discovery_time}s, total cases: {tests.countTestCases()}.")
-
- test_runner = unittest.runner.TextTestRunner(
- resultclass=TimeLoggingTestResult, verbosity=args.verbosity, failfast=args.failfast
- )
-
- # Use try catches to print the current results if encountering exception or keyboard interruption
- try:
- test_result = test_runner.run(tests)
- print_results(results, discovery_time, args.thresh, "tests finished")
- sys.exit(not test_result.wasSuccessful())
- except KeyboardInterrupt:
- print_results(results, discovery_time, args.thresh, "tests cancelled")
- sys.exit(1)
- except Exception:
- print_results(results, discovery_time, args.thresh, "exception reached")
- raise
diff --git a/tests/test_adversarial.py b/tests/test_adversarial.py
deleted file mode 100644
index d2a761ab..00000000
--- a/tests/test_adversarial.py
+++ /dev/null
@@ -1,93 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-import unittest
-
-import torch
-from parameterized import parameterized
-
-from generative.losses import PatchAdversarialLoss
-
-shapes_tensors = {"2d": [4, 1, 64, 64], "3d": [4, 1, 64, 64, 64]}
-reductions = ["sum", "mean"]
-criterion = ["bce", "least_squares", "hinge"]
-
-TEST_CASE_CREATION_FAIL = [{"reduction": "sum", "criterion": "invalid"}]
-
-TEST_CASES_LOSS_LOGIC_2D = []
-TEST_CASES_LOSS_LOGIC_3D = []
-
-for c in criterion:
- for r in reductions:
- TEST_CASES_LOSS_LOGIC_2D.append([{"reduction": r, "criterion": c}, shapes_tensors["2d"]])
- TEST_CASES_LOSS_LOGIC_3D.append([{"reduction": r, "criterion": c}, shapes_tensors["3d"]])
-
-TEST_CASES_LOSS_LOGIC_LIST = []
-for c in criterion:
- TEST_CASES_LOSS_LOGIC_LIST.append([{"reduction": "none", "criterion": c}, shapes_tensors["2d"]])
- TEST_CASES_LOSS_LOGIC_LIST.append([{"reduction": "none", "criterion": c}, shapes_tensors["3d"]])
-
-
-class TestPatchAdversarialLoss(unittest.TestCase):
- def get_input(self, shape, is_positive):
- """
- Get tensor for the tests. The tensor is around (-1) or (+1), depending on
- is_positive.
- """
- if is_positive:
- offset = 1
- else:
- offset = -1
- return torch.ones(shape) * (offset) + 0.01 * torch.randn(shape)
-
- def test_criterion(self):
- """
- Make sure that unknown criterion fail.
- """
- with self.assertRaises(ValueError):
- PatchAdversarialLoss(**TEST_CASE_CREATION_FAIL[0])
-
- @parameterized.expand(TEST_CASES_LOSS_LOGIC_2D + TEST_CASES_LOSS_LOGIC_3D)
- def test_loss_logic(self, input_param: dict, shape_input: list):
- """
- We want to make sure that the adversarial losses do what they should.
- If the discriminator takes in a tensor that looks positive, yet the label is fake,
- the loss should be bigger than that obtained with a tensor that looks negative.
- Same for the real label, and for the generator.
- """
- loss = PatchAdversarialLoss(**input_param)
- fakes = self.get_input(shape_input, is_positive=False)
- reals = self.get_input(shape_input, is_positive=True)
- # Discriminator: fake label
- loss_disc_f_f = loss(fakes, target_is_real=False, for_discriminator=True)
- loss_disc_f_r = loss(reals, target_is_real=False, for_discriminator=True)
- assert loss_disc_f_f < loss_disc_f_r
- # Discriminator: real label
- loss_disc_r_f = loss(fakes, target_is_real=True, for_discriminator=True)
- loss_disc_r_r = loss(reals, target_is_real=True, for_discriminator=True)
- assert loss_disc_r_f > loss_disc_r_r
- # Generator:
- loss_gen_f = loss(fakes, target_is_real=True, for_discriminator=False) # target_is_real is overridden
- loss_gen_r = loss(reals, target_is_real=True, for_discriminator=False) # target_is_real is overridden
- assert loss_gen_f > loss_gen_r
-
- @parameterized.expand(TEST_CASES_LOSS_LOGIC_LIST)
- def test_multiple_discs(self, input_param: dict, shape_input):
- shapes = [shape_input] + [shape_input[0:2] + [int(i / j) for i in shape_input[2:]] for j in range(1, 3)]
- inputs = [self.get_input(shapes[i], is_positive=True) for i in range(len(shapes))]
- loss = PatchAdversarialLoss(**input_param)
- assert len(loss(inputs, for_discriminator=True, target_is_real=True)) == 3
-
-
-if __name__ == "__main__":
- unittest.main()
diff --git a/tests/test_autoencoderkl.py b/tests/test_autoencoderkl.py
deleted file mode 100644
index 6a2e9820..00000000
--- a/tests/test_autoencoderkl.py
+++ /dev/null
@@ -1,276 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-import unittest
-
-import torch
-from monai.networks import eval_mode
-from parameterized import parameterized
-
-from generative.networks.nets import AutoencoderKL
-
-device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
-
-CASES = [
- [
- {
- "spatial_dims": 2,
- "in_channels": 1,
- "out_channels": 1,
- "num_channels": (4, 4, 4),
- "latent_channels": 4,
- "attention_levels": (False, False, False),
- "num_res_blocks": 1,
- "norm_num_groups": 4,
- },
- (1, 1, 16, 16),
- (1, 1, 16, 16),
- (1, 4, 4, 4),
- ],
- [
- {
- "spatial_dims": 2,
- "in_channels": 1,
- "out_channels": 1,
- "num_channels": (4, 4, 4),
- "latent_channels": 4,
- "attention_levels": (False, False, False),
- "num_res_blocks": (1, 1, 2),
- "norm_num_groups": 4,
- },
- (1, 1, 16, 16),
- (1, 1, 16, 16),
- (1, 4, 4, 4),
- ],
- [
- {
- "spatial_dims": 2,
- "in_channels": 1,
- "out_channels": 1,
- "num_channels": (4, 4, 4),
- "latent_channels": 4,
- "attention_levels": (False, False, False),
- "num_res_blocks": 1,
- "norm_num_groups": 4,
- },
- (1, 1, 16, 16),
- (1, 1, 16, 16),
- (1, 4, 4, 4),
- ],
- [
- {
- "spatial_dims": 2,
- "in_channels": 1,
- "out_channels": 1,
- "num_channels": (4, 4, 4),
- "latent_channels": 4,
- "attention_levels": (False, False, True),
- "num_res_blocks": 1,
- "norm_num_groups": 4,
- },
- (1, 1, 16, 16),
- (1, 1, 16, 16),
- (1, 4, 4, 4),
- ],
- [
- {
- "spatial_dims": 2,
- "in_channels": 1,
- "out_channels": 1,
- "num_channels": (4, 4, 4),
- "latent_channels": 4,
- "attention_levels": (False, False, False),
- "num_res_blocks": 1,
- "norm_num_groups": 4,
- "with_encoder_nonlocal_attn": False,
- },
- (1, 1, 16, 16),
- (1, 1, 16, 16),
- (1, 4, 4, 4),
- ],
- [
- {
- "spatial_dims": 2,
- "in_channels": 1,
- "out_channels": 1,
- "num_channels": (4, 4, 4),
- "latent_channels": 4,
- "attention_levels": (False, False, False),
- "num_res_blocks": 1,
- "norm_num_groups": 4,
- "with_encoder_nonlocal_attn": False,
- "with_decoder_nonlocal_attn": False,
- },
- (1, 1, 16, 16),
- (1, 1, 16, 16),
- (1, 4, 4, 4),
- ],
- [
- {
- "spatial_dims": 3,
- "in_channels": 1,
- "out_channels": 1,
- "num_channels": (4, 4, 4),
- "latent_channels": 4,
- "attention_levels": (False, False, True),
- "num_res_blocks": 1,
- "norm_num_groups": 4,
- },
- (1, 1, 16, 16, 16),
- (1, 1, 16, 16, 16),
- (1, 4, 4, 4, 4),
- ],
-]
-
-
-class TestAutoEncoderKL(unittest.TestCase):
- @parameterized.expand(CASES)
- def test_shape(self, input_param, input_shape, expected_shape, expected_latent_shape):
- net = AutoencoderKL(**input_param).to(device)
- with eval_mode(net):
- result = net.forward(torch.randn(input_shape).to(device))
- self.assertEqual(result[0].shape, expected_shape)
- self.assertEqual(result[1].shape, expected_latent_shape)
- self.assertEqual(result[2].shape, expected_latent_shape)
-
- @parameterized.expand(CASES)
- def test_shape_with_convtranspose_and_checkpointing(
- self, input_param, input_shape, expected_shape, expected_latent_shape
- ):
- input_param = input_param.copy()
- input_param.update({"use_checkpointing": True, "use_convtranspose": True})
- net = AutoencoderKL(**input_param).to(device)
- with eval_mode(net):
- result = net.forward(torch.randn(input_shape).to(device))
- self.assertEqual(result[0].shape, expected_shape)
- self.assertEqual(result[1].shape, expected_latent_shape)
- self.assertEqual(result[2].shape, expected_latent_shape)
-
- # def test_script(self):
- # input_param, input_shape, _, _ = CASES[0]
- # net = AutoencoderKL(**input_param)
- # test_data = torch.randn(input_shape)
- # test_script_save(net, test_data)
-
- def test_model_channels_not_multiple_of_norm_num_group(self):
- with self.assertRaises(ValueError):
- AutoencoderKL(
- spatial_dims=2,
- in_channels=1,
- out_channels=1,
- num_channels=(24, 24, 24),
- attention_levels=(False, False, False),
- latent_channels=8,
- num_res_blocks=1,
- norm_num_groups=16,
- )
-
- def test_model_num_channels_not_same_size_of_attention_levels(self):
- with self.assertRaises(ValueError):
- AutoencoderKL(
- spatial_dims=2,
- in_channels=1,
- out_channels=1,
- num_channels=(24, 24, 24),
- attention_levels=(False, False),
- latent_channels=8,
- num_res_blocks=1,
- norm_num_groups=16,
- )
-
- def test_model_num_channels_not_same_size_of_num_res_blocks(self):
- with self.assertRaises(ValueError):
- AutoencoderKL(
- spatial_dims=2,
- in_channels=1,
- out_channels=1,
- num_channels=(24, 24, 24),
- attention_levels=(False, False, False),
- latent_channels=8,
- num_res_blocks=(8, 8),
- norm_num_groups=16,
- )
-
- def test_shape_reconstruction(self):
- input_param, input_shape, expected_shape, _ = CASES[0]
- net = AutoencoderKL(**input_param).to(device)
- with eval_mode(net):
- result = net.reconstruct(torch.randn(input_shape).to(device))
- self.assertEqual(result.shape, expected_shape)
-
- def test_shape_reconstruction_with_convtranspose_and_checkpointing(self):
- input_param, input_shape, expected_shape, _ = CASES[0]
- input_param = input_param.copy()
- input_param.update({"use_checkpointing": True, "use_convtranspose": True})
- net = AutoencoderKL(**input_param).to(device)
- with eval_mode(net):
- result = net.reconstruct(torch.randn(input_shape).to(device))
- self.assertEqual(result.shape, expected_shape)
-
- def test_shape_encode(self):
- input_param, input_shape, _, expected_latent_shape = CASES[0]
- net = AutoencoderKL(**input_param).to(device)
- with eval_mode(net):
- result = net.encode(torch.randn(input_shape).to(device))
- self.assertEqual(result[0].shape, expected_latent_shape)
- self.assertEqual(result[1].shape, expected_latent_shape)
-
- def test_shape_encode_with_convtranspose_and_checkpointing(self):
- input_param, input_shape, _, expected_latent_shape = CASES[0]
- input_param = input_param.copy()
- input_param.update({"use_checkpointing": True, "use_convtranspose": True})
- net = AutoencoderKL(**input_param).to(device)
- with eval_mode(net):
- result = net.encode(torch.randn(input_shape).to(device))
- self.assertEqual(result[0].shape, expected_latent_shape)
- self.assertEqual(result[1].shape, expected_latent_shape)
-
- def test_shape_sampling(self):
- input_param, _, _, expected_latent_shape = CASES[0]
- net = AutoencoderKL(**input_param).to(device)
- with eval_mode(net):
- result = net.sampling(
- torch.randn(expected_latent_shape).to(device), torch.randn(expected_latent_shape).to(device)
- )
- self.assertEqual(result.shape, expected_latent_shape)
-
- def test_shape_sampling_convtranspose_and_checkpointing(self):
- input_param, _, _, expected_latent_shape = CASES[0]
- input_param = input_param.copy()
- input_param.update({"use_checkpointing": True, "use_convtranspose": True})
- net = AutoencoderKL(**input_param).to(device)
- with eval_mode(net):
- result = net.sampling(
- torch.randn(expected_latent_shape).to(device), torch.randn(expected_latent_shape).to(device)
- )
- self.assertEqual(result.shape, expected_latent_shape)
-
- def test_shape_decode(self):
- input_param, expected_input_shape, _, latent_shape = CASES[0]
- net = AutoencoderKL(**input_param).to(device)
- with eval_mode(net):
- result = net.decode(torch.randn(latent_shape).to(device))
- self.assertEqual(result.shape, expected_input_shape)
-
- def test_shape_decode_convtranspose_and_checkpointing(self):
- input_param, expected_input_shape, _, latent_shape = CASES[0]
- input_param = input_param.copy()
- input_param.update({"use_checkpointing": True, "use_convtranspose": True})
- net = AutoencoderKL(**input_param).to(device)
- with eval_mode(net):
- result = net.decode(torch.randn(latent_shape).to(device))
- self.assertEqual(result.shape, expected_input_shape)
-
-
-if __name__ == "__main__":
- unittest.main()
diff --git a/tests/test_component_store.py b/tests/test_component_store.py
deleted file mode 100644
index c6b43bde..00000000
--- a/tests/test_component_store.py
+++ /dev/null
@@ -1,72 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-import unittest
-
-from generative.utils import ComponentStore
-
-
-class TestComponentStore(unittest.TestCase):
- def setUp(self):
- self.cs = ComponentStore("TestStore", "I am a test store, please ignore")
-
- def test_empty(self):
- self.assertEqual(len(self.cs), 0)
- self.assertEqual(list(self.cs), [])
-
- def test_add(self):
- test_obj = object()
-
- self.assertFalse("test_obj" in self.cs)
-
- self.cs.add("test_obj", "Test object", test_obj)
-
- self.assertTrue("test_obj" in self.cs)
-
- self.assertEqual(len(self.cs), 1)
- self.assertEqual(list(self.cs), [("test_obj", test_obj)])
-
- self.assertEqual(self.cs.test_obj, test_obj)
- self.assertEqual(self.cs["test_obj"], test_obj)
-
- def test_add2(self):
- test_obj1 = object()
- test_obj2 = object()
-
- self.cs.add("test_obj1", "Test object", test_obj1)
- self.cs.add("test_obj2", "Test object", test_obj2)
-
- self.assertEqual(len(self.cs), 2)
- self.assertTrue("test_obj1" in self.cs)
- self.assertTrue("test_obj2" in self.cs)
-
- def test_add_def(self):
- self.assertFalse("test_func" in self.cs)
-
- @self.cs.add_def("test_func", "Test function")
- def test_func():
- return 123
-
- self.assertTrue("test_func" in self.cs)
-
- self.assertEqual(len(self.cs), 1)
- self.assertEqual(list(self.cs), [("test_func", test_func)])
-
- self.assertEqual(self.cs.test_func, test_func)
- self.assertEqual(self.cs["test_func"], test_func)
-
- # try adding the same function again
- self.cs.add_def("test_func", "Test function but with new description")(test_func)
-
- self.assertEqual(len(self.cs), 1)
- self.assertEqual(self.cs.test_func, test_func)
diff --git a/tests/test_compute_fid_metric.py b/tests/test_compute_fid_metric.py
deleted file mode 100644
index 07134537..00000000
--- a/tests/test_compute_fid_metric.py
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-import unittest
-
-import numpy as np
-import torch
-
-from generative.metrics import FIDMetric
-
-
-class TestFIDMetric(unittest.TestCase):
- def test_results(self):
- x = torch.Tensor([[1, 2], [1, 2], [1, 2]])
- y = torch.Tensor([[2, 2], [1, 2], [1, 2]])
- results = FIDMetric()(x, y)
- np.testing.assert_allclose(results.cpu().numpy(), 0.4444, atol=1e-4)
-
- def test_input_dimensions(self):
- with self.assertRaises(ValueError):
- FIDMetric()(torch.ones([3, 3, 144, 144]), torch.ones([3, 3, 145, 145]))
-
-
-if __name__ == "__main__":
- unittest.main()
diff --git a/tests/test_compute_mmd_metric.py b/tests/test_compute_mmd_metric.py
deleted file mode 100644
index a888c1f3..00000000
--- a/tests/test_compute_mmd_metric.py
+++ /dev/null
@@ -1,49 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-import unittest
-
-import numpy as np
-import torch
-from parameterized import parameterized
-
-from generative.metrics import MMDMetric
-
-TEST_CASES = [
- [
- {"y_transform": None, "y_pred_transform": None},
- {"y": torch.ones([3, 3, 144, 144]), "y_pred": torch.ones([3, 3, 144, 144])},
- 0.0,
- ],
- [
- {"y_transform": None, "y_pred_transform": None},
- {"y": torch.ones([3, 3, 144, 144, 144]), "y_pred": torch.ones([3, 3, 144, 144, 144])},
- 0.0,
- ],
-]
-
-
-class TestMMDMetric(unittest.TestCase):
- @parameterized.expand(TEST_CASES)
- def test_results(self, input_param, input_data, expected_val):
- metric = MMDMetric(**input_param)
- results = metric(**input_data)
- np.testing.assert_allclose(results.detach().cpu().numpy(), expected_val, rtol=1e-4)
-
- def test_if_inputs_different_shapes(self):
- with self.assertRaises(ValueError):
- MMDMetric()(torch.ones([3, 3, 144, 144]), torch.ones([3, 3, 145, 145]))
-
-
-if __name__ == "__main__":
- unittest.main()
diff --git a/tests/test_compute_multiscalessim_metric.py b/tests/test_compute_multiscalessim_metric.py
deleted file mode 100644
index 85b96991..00000000
--- a/tests/test_compute_multiscalessim_metric.py
+++ /dev/null
@@ -1,82 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-import unittest
-
-import torch
-from monai.utils import set_determinism
-
-from generative.metrics import MultiScaleSSIMMetric
-
-
-class TestMultiScaleSSIMMetric(unittest.TestCase):
- def test2d_gaussian(self):
- set_determinism(0)
- preds = torch.abs(torch.randn(1, 1, 64, 64))
- target = torch.abs(torch.randn(1, 1, 64, 64))
- preds = preds / preds.max()
- target = target / target.max()
-
- metric = MultiScaleSSIMMetric(spatial_dims=2, data_range=1.0, kernel_type="gaussian", weights=[0.5, 0.5])
- metric(preds, target)
- result = metric.aggregate()
- expected_value = 0.023176
- self.assertTrue(expected_value - result.item() < 0.000001)
-
- def test2d_uniform(self):
- set_determinism(0)
- preds = torch.abs(torch.randn(1, 1, 64, 64))
- target = torch.abs(torch.randn(1, 1, 64, 64))
- preds = preds / preds.max()
- target = target / target.max()
-
- metric = MultiScaleSSIMMetric(spatial_dims=2, data_range=1.0, kernel_type="uniform", weights=[0.5, 0.5])
- metric(preds, target)
- result = metric.aggregate()
- expected_value = 0.022655
- self.assertTrue(expected_value - result.item() < 0.000001)
-
- def test3d_gaussian(self):
- set_determinism(0)
- preds = torch.abs(torch.randn(1, 1, 64, 64, 64))
- target = torch.abs(torch.randn(1, 1, 64, 64, 64))
- preds = preds / preds.max()
- target = target / target.max()
-
- metric = MultiScaleSSIMMetric(spatial_dims=3, data_range=1.0, kernel_type="gaussian", weights=[0.5, 0.5])
- metric(preds, target)
- result = metric.aggregate()
- expected_value = 0.061796
- self.assertTrue(expected_value - result.item() < 0.000001)
-
- def input_ill_input_shape2d(self):
- metric = MultiScaleSSIMMetric(spatial_dims=3, weights=[0.5, 0.5])
-
- with self.assertRaises(ValueError):
- metric(torch.randn(1, 1, 64, 64), torch.randn(1, 1, 64, 64))
-
- def input_ill_input_shape3d(self):
- metric = MultiScaleSSIMMetric(spatial_dims=2, weights=[0.5, 0.5])
-
- with self.assertRaises(ValueError):
- metric(torch.randn(1, 1, 64, 64, 64), torch.randn(1, 1, 64, 64, 64))
-
- def small_inputs(self):
- metric = MultiScaleSSIMMetric(spatial_dims=2)
-
- with self.assertRaises(ValueError):
- metric(torch.randn(1, 1, 16, 16, 16), torch.randn(1, 1, 16, 16, 16))
-
-
-if __name__ == "__main__":
- unittest.main()
diff --git a/tests/test_controlnet.py b/tests/test_controlnet.py
deleted file mode 100644
index 77ee35a2..00000000
--- a/tests/test_controlnet.py
+++ /dev/null
@@ -1,54 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-import unittest
-
-import torch
-from monai.networks import eval_mode
-from parameterized import parameterized
-
-from generative.networks.nets.controlnet import ControlNet
-
-TEST_CASES = [
- [
- {
- "spatial_dims": 2,
- "in_channels": 1,
- "num_res_blocks": 1,
- "num_channels": (8, 8, 8),
- "attention_levels": (False, False, True),
- "num_head_channels": 8,
- "norm_num_groups": 8,
- "conditioning_embedding_in_channels": 1,
- "conditioning_embedding_num_channels": (8, 8),
- },
- 6,
- (1, 8, 4, 4),
- ]
-]
-
-
-class TestControlNet(unittest.TestCase):
- @parameterized.expand(TEST_CASES)
- def test_shape_unconditioned_models(self, input_param, expected_num_down_blocks_residuals, expected_shape):
- net = ControlNet(**input_param)
- with eval_mode(net):
- result = net.forward(
- torch.rand((1, 1, 16, 16)), torch.randint(0, 1000, (1,)).long(), torch.rand((1, 1, 32, 32))
- )
- self.assertEqual(len(result[0]), expected_num_down_blocks_residuals)
- self.assertEqual(result[1].shape, expected_shape)
-
-
-if __name__ == "__main__":
- unittest.main()
diff --git a/tests/test_diffusion_inferer.py b/tests/test_diffusion_inferer.py
deleted file mode 100644
index f3f9aa78..00000000
--- a/tests/test_diffusion_inferer.py
+++ /dev/null
@@ -1,222 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-import unittest
-
-import torch
-from parameterized import parameterized
-
-from generative.inferers import DiffusionInferer
-from generative.networks.nets import DiffusionModelUNet
-from generative.networks.schedulers import DDIMScheduler, DDPMScheduler
-
-TEST_CASES = [
- [
- {
- "spatial_dims": 2,
- "in_channels": 1,
- "out_channels": 1,
- "num_channels": [8],
- "norm_num_groups": 8,
- "attention_levels": [True],
- "num_res_blocks": 1,
- "num_head_channels": 8,
- },
- (2, 1, 8, 8),
- ],
- [
- {
- "spatial_dims": 3,
- "in_channels": 1,
- "out_channels": 1,
- "num_channels": [8],
- "norm_num_groups": 8,
- "attention_levels": [True],
- "num_res_blocks": 1,
- "num_head_channels": 8,
- },
- (2, 1, 8, 8, 8),
- ],
-]
-
-
-class TestDiffusionSamplingInferer(unittest.TestCase):
- @parameterized.expand(TEST_CASES)
- def test_call(self, model_params, input_shape):
- model = DiffusionModelUNet(**model_params)
- device = "cuda:0" if torch.cuda.is_available() else "cpu"
- model.to(device)
- model.eval()
- input = torch.randn(input_shape).to(device)
- noise = torch.randn(input_shape).to(device)
- scheduler = DDPMScheduler(num_train_timesteps=10)
- inferer = DiffusionInferer(scheduler=scheduler)
- scheduler.set_timesteps(num_inference_steps=10)
- timesteps = torch.randint(0, scheduler.num_train_timesteps, (input_shape[0],), device=input.device).long()
- sample = inferer(inputs=input, noise=noise, diffusion_model=model, timesteps=timesteps)
- self.assertEqual(sample.shape, input_shape)
-
- @parameterized.expand(TEST_CASES)
- def test_sample_intermediates(self, model_params, input_shape):
- model = DiffusionModelUNet(**model_params)
- device = "cuda:0" if torch.cuda.is_available() else "cpu"
- model.to(device)
- model.eval()
- noise = torch.randn(input_shape).to(device)
- scheduler = DDPMScheduler(num_train_timesteps=10)
- inferer = DiffusionInferer(scheduler=scheduler)
- scheduler.set_timesteps(num_inference_steps=10)
- sample, intermediates = inferer.sample(
- input_noise=noise, diffusion_model=model, scheduler=scheduler, save_intermediates=True, intermediate_steps=1
- )
- self.assertEqual(len(intermediates), 10)
-
- @parameterized.expand(TEST_CASES)
- def test_ddpm_sampler(self, model_params, input_shape):
- model = DiffusionModelUNet(**model_params)
- device = "cuda:0" if torch.cuda.is_available() else "cpu"
- model.to(device)
- model.eval()
- noise = torch.randn(input_shape).to(device)
- scheduler = DDPMScheduler(num_train_timesteps=1000)
- inferer = DiffusionInferer(scheduler=scheduler)
- scheduler.set_timesteps(num_inference_steps=10)
- sample, intermediates = inferer.sample(
- input_noise=noise, diffusion_model=model, scheduler=scheduler, save_intermediates=True, intermediate_steps=1
- )
- self.assertEqual(len(intermediates), 10)
-
- @parameterized.expand(TEST_CASES)
- def test_ddim_sampler(self, model_params, input_shape):
- model = DiffusionModelUNet(**model_params)
- device = "cuda:0" if torch.cuda.is_available() else "cpu"
- model.to(device)
- model.eval()
- noise = torch.randn(input_shape).to(device)
- scheduler = DDIMScheduler(num_train_timesteps=1000)
- inferer = DiffusionInferer(scheduler=scheduler)
- scheduler.set_timesteps(num_inference_steps=10)
- sample, intermediates = inferer.sample(
- input_noise=noise, diffusion_model=model, scheduler=scheduler, save_intermediates=True, intermediate_steps=1
- )
- self.assertEqual(len(intermediates), 10)
-
- @parameterized.expand(TEST_CASES)
- def test_sampler_conditioned(self, model_params, input_shape):
- model_params["with_conditioning"] = True
- model_params["cross_attention_dim"] = 3
- model = DiffusionModelUNet(**model_params)
- device = "cuda:0" if torch.cuda.is_available() else "cpu"
- model.to(device)
- model.eval()
- noise = torch.randn(input_shape).to(device)
- scheduler = DDIMScheduler(num_train_timesteps=1000)
- inferer = DiffusionInferer(scheduler=scheduler)
- scheduler.set_timesteps(num_inference_steps=10)
- conditioning = torch.randn([input_shape[0], 1, 3]).to(device)
- sample, intermediates = inferer.sample(
- input_noise=noise,
- diffusion_model=model,
- scheduler=scheduler,
- save_intermediates=True,
- intermediate_steps=1,
- conditioning=conditioning,
- )
- self.assertEqual(len(intermediates), 10)
-
- @parameterized.expand(TEST_CASES)
- def test_get_likelihood(self, model_params, input_shape):
- model = DiffusionModelUNet(**model_params)
- device = "cuda:0" if torch.cuda.is_available() else "cpu"
- model.to(device)
- model.eval()
- input = torch.randn(input_shape).to(device)
- scheduler = DDPMScheduler(num_train_timesteps=10)
- inferer = DiffusionInferer(scheduler=scheduler)
- scheduler.set_timesteps(num_inference_steps=10)
- likelihood, intermediates = inferer.get_likelihood(
- inputs=input, diffusion_model=model, scheduler=scheduler, save_intermediates=True
- )
- self.assertEqual(intermediates[0].shape, input.shape)
- self.assertEqual(likelihood.shape[0], input.shape[0])
-
- def test_normal_cdf(self):
- from scipy.stats import norm
-
- scheduler = DDPMScheduler(num_train_timesteps=10)
- inferer = DiffusionInferer(scheduler=scheduler)
-
- x = torch.linspace(-10, 10, 20)
- cdf_approx = inferer._approx_standard_normal_cdf(x)
- cdf_true = norm.cdf(x)
- torch.testing.assert_allclose(cdf_approx, cdf_true, atol=1e-3, rtol=1e-5)
-
- @parameterized.expand(TEST_CASES)
- def test_sampler_conditioned_concat(self, model_params, input_shape):
- # copy the model_params dict to prevent from modifying test cases
- model_params = model_params.copy()
- n_concat_channel = 2
- model_params["in_channels"] = model_params["in_channels"] + n_concat_channel
- model_params["cross_attention_dim"] = None
- model_params["with_conditioning"] = False
- model = DiffusionModelUNet(**model_params)
- device = "cuda:0" if torch.cuda.is_available() else "cpu"
- model.to(device)
- model.eval()
- noise = torch.randn(input_shape).to(device)
- conditioning_shape = list(input_shape)
- conditioning_shape[1] = n_concat_channel
- conditioning = torch.randn(conditioning_shape).to(device)
- scheduler = DDIMScheduler(num_train_timesteps=1000)
- inferer = DiffusionInferer(scheduler=scheduler)
- scheduler.set_timesteps(num_inference_steps=10)
- sample, intermediates = inferer.sample(
- input_noise=noise,
- diffusion_model=model,
- scheduler=scheduler,
- save_intermediates=True,
- intermediate_steps=1,
- conditioning=conditioning,
- mode="concat",
- )
- self.assertEqual(len(intermediates), 10)
-
- @parameterized.expand(TEST_CASES)
- def test_call_conditioned_concat(self, model_params, input_shape):
- # copy the model_params dict to prevent from modifying test cases
- model_params = model_params.copy()
- n_concat_channel = 2
- model_params["in_channels"] = model_params["in_channels"] + n_concat_channel
- model_params["cross_attention_dim"] = None
- model_params["with_conditioning"] = False
- model = DiffusionModelUNet(**model_params)
- device = "cuda:0" if torch.cuda.is_available() else "cpu"
- model.to(device)
- model.eval()
- input = torch.randn(input_shape).to(device)
- noise = torch.randn(input_shape).to(device)
- conditioning_shape = list(input_shape)
- conditioning_shape[1] = n_concat_channel
- conditioning = torch.randn(conditioning_shape).to(device)
- scheduler = DDPMScheduler(num_train_timesteps=10)
- inferer = DiffusionInferer(scheduler=scheduler)
- scheduler.set_timesteps(num_inference_steps=10)
- timesteps = torch.randint(0, scheduler.num_train_timesteps, (input_shape[0],), device=input.device).long()
- sample = inferer(
- inputs=input, noise=noise, diffusion_model=model, timesteps=timesteps, condition=conditioning, mode="concat"
- )
- self.assertEqual(sample.shape, input_shape)
-
-
-if __name__ == "__main__":
- unittest.main()
diff --git a/tests/test_diffusion_model_unet.py b/tests/test_diffusion_model_unet.py
deleted file mode 100644
index b02c37b1..00000000
--- a/tests/test_diffusion_model_unet.py
+++ /dev/null
@@ -1,529 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-import unittest
-
-import torch
-from monai.networks import eval_mode
-from parameterized import parameterized
-
-from generative.networks.nets import DiffusionModelUNet
-from tests.utils import test_script_save
-
-UNCOND_CASES_2D = [
- [
- {
- "spatial_dims": 2,
- "in_channels": 1,
- "out_channels": 1,
- "num_res_blocks": 1,
- "num_channels": (8, 8, 8),
- "attention_levels": (False, False, False),
- "norm_num_groups": 8,
- }
- ],
- [
- {
- "spatial_dims": 2,
- "in_channels": 1,
- "out_channels": 1,
- "num_res_blocks": (1, 1, 2),
- "num_channels": (8, 8, 8),
- "attention_levels": (False, False, False),
- "norm_num_groups": 8,
- }
- ],
- [
- {
- "spatial_dims": 2,
- "in_channels": 1,
- "out_channels": 1,
- "num_res_blocks": 1,
- "num_channels": (8, 8, 8),
- "attention_levels": (False, False, False),
- "norm_num_groups": 8,
- "resblock_updown": True,
- }
- ],
- [
- {
- "spatial_dims": 2,
- "in_channels": 1,
- "out_channels": 1,
- "num_res_blocks": 1,
- "num_channels": (8, 8, 8),
- "attention_levels": (False, False, True),
- "num_head_channels": 8,
- "norm_num_groups": 8,
- }
- ],
- [
- {
- "spatial_dims": 2,
- "in_channels": 1,
- "out_channels": 1,
- "num_res_blocks": 1,
- "num_channels": (8, 8, 8),
- "attention_levels": (False, False, True),
- "num_head_channels": 8,
- "norm_num_groups": 8,
- "resblock_updown": True,
- }
- ],
- [
- {
- "spatial_dims": 2,
- "in_channels": 1,
- "out_channels": 1,
- "num_res_blocks": 1,
- "num_channels": (8, 8, 8),
- "attention_levels": (False, False, True),
- "num_head_channels": 4,
- "norm_num_groups": 8,
- }
- ],
- [
- {
- "spatial_dims": 2,
- "in_channels": 1,
- "out_channels": 1,
- "num_res_blocks": 1,
- "num_channels": (8, 8, 8),
- "attention_levels": (False, True, True),
- "num_head_channels": (0, 2, 4),
- "norm_num_groups": 8,
- }
- ],
-]
-
-UNCOND_CASES_3D = [
- [
- {
- "spatial_dims": 3,
- "in_channels": 1,
- "out_channels": 1,
- "num_res_blocks": 1,
- "num_channels": (8, 8, 8),
- "attention_levels": (False, False, False),
- "norm_num_groups": 8,
- }
- ],
- [
- {
- "spatial_dims": 3,
- "in_channels": 1,
- "out_channels": 1,
- "num_res_blocks": 1,
- "num_channels": (8, 8, 8),
- "attention_levels": (False, False, False),
- "norm_num_groups": 8,
- "resblock_updown": True,
- }
- ],
- [
- {
- "spatial_dims": 3,
- "in_channels": 1,
- "out_channels": 1,
- "num_res_blocks": 1,
- "num_channels": (8, 8, 8),
- "attention_levels": (False, False, True),
- "num_head_channels": 8,
- "norm_num_groups": 8,
- }
- ],
- [
- {
- "spatial_dims": 3,
- "in_channels": 1,
- "out_channels": 1,
- "num_res_blocks": 1,
- "num_channels": (8, 8, 8),
- "attention_levels": (False, False, True),
- "num_head_channels": 8,
- "norm_num_groups": 8,
- "resblock_updown": True,
- }
- ],
- [
- {
- "spatial_dims": 3,
- "in_channels": 1,
- "out_channels": 1,
- "num_res_blocks": 1,
- "num_channels": (8, 8, 8),
- "attention_levels": (False, False, True),
- "num_head_channels": 4,
- "norm_num_groups": 8,
- }
- ],
- [
- {
- "spatial_dims": 3,
- "in_channels": 1,
- "out_channels": 1,
- "num_res_blocks": 1,
- "num_channels": (8, 8, 8),
- "attention_levels": (False, False, True),
- "num_head_channels": (0, 0, 4),
- "norm_num_groups": 8,
- }
- ],
-]
-
-COND_CASES_2D = [
- [
- {
- "spatial_dims": 2,
- "in_channels": 1,
- "out_channels": 1,
- "num_res_blocks": 1,
- "num_channels": (8, 8, 8),
- "attention_levels": (False, False, True),
- "num_head_channels": 4,
- "norm_num_groups": 8,
- "with_conditioning": True,
- "transformer_num_layers": 1,
- "cross_attention_dim": 3,
- }
- ],
- [
- {
- "spatial_dims": 2,
- "in_channels": 1,
- "out_channels": 1,
- "num_res_blocks": 1,
- "num_channels": (8, 8, 8),
- "attention_levels": (False, False, True),
- "num_head_channels": 4,
- "norm_num_groups": 8,
- "with_conditioning": True,
- "transformer_num_layers": 1,
- "cross_attention_dim": 3,
- "resblock_updown": True,
- }
- ],
- [
- {
- "spatial_dims": 2,
- "in_channels": 1,
- "out_channels": 1,
- "num_res_blocks": 1,
- "num_channels": (8, 8, 8),
- "attention_levels": (False, False, True),
- "num_head_channels": 4,
- "norm_num_groups": 8,
- "with_conditioning": True,
- "transformer_num_layers": 1,
- "cross_attention_dim": 3,
- "upcast_attention": True,
- }
- ],
-]
-
-
-class TestDiffusionModelUNet2D(unittest.TestCase):
- @parameterized.expand(UNCOND_CASES_2D)
- def test_shape_unconditioned_models(self, input_param):
- net = DiffusionModelUNet(**input_param)
- with eval_mode(net):
- result = net.forward(torch.rand((1, 1, 16, 16)), torch.randint(0, 1000, (1,)).long())
- self.assertEqual(result.shape, (1, 1, 16, 16))
-
- def test_timestep_with_wrong_shape(self):
- net = DiffusionModelUNet(
- spatial_dims=2,
- in_channels=1,
- out_channels=1,
- num_res_blocks=1,
- num_channels=(8, 8, 8),
- attention_levels=(False, False, False),
- norm_num_groups=8,
- )
- with self.assertRaises(ValueError):
- with eval_mode(net):
- net.forward(torch.rand((1, 1, 16, 16)), torch.randint(0, 1000, (1, 1)).long())
-
- def test_shape_with_different_in_channel_out_channel(self):
- in_channels = 6
- out_channels = 3
- net = DiffusionModelUNet(
- spatial_dims=2,
- in_channels=in_channels,
- out_channels=out_channels,
- num_res_blocks=1,
- num_channels=(8, 8, 8),
- attention_levels=(False, False, False),
- norm_num_groups=8,
- )
- with eval_mode(net):
- result = net.forward(torch.rand((1, in_channels, 16, 16)), torch.randint(0, 1000, (1,)).long())
- self.assertEqual(result.shape, (1, out_channels, 16, 16))
-
- def test_model_channels_not_multiple_of_norm_num_group(self):
- with self.assertRaises(ValueError):
- DiffusionModelUNet(
- spatial_dims=2,
- in_channels=1,
- out_channels=1,
- num_res_blocks=1,
- num_channels=(8, 8, 12),
- attention_levels=(False, False, False),
- norm_num_groups=8,
- )
-
- def test_attention_levels_with_different_length_num_head_channels(self):
- with self.assertRaises(ValueError):
- DiffusionModelUNet(
- spatial_dims=2,
- in_channels=1,
- out_channels=1,
- num_res_blocks=1,
- num_channels=(8, 8, 8),
- attention_levels=(False, False, False),
- num_head_channels=(0, 2),
- norm_num_groups=8,
- )
-
- def test_num_res_blocks_with_different_length_num_channels(self):
- with self.assertRaises(ValueError):
- DiffusionModelUNet(
- spatial_dims=2,
- in_channels=1,
- out_channels=1,
- num_res_blocks=(1, 1),
- num_channels=(8, 8, 8),
- attention_levels=(False, False, False),
- norm_num_groups=8,
- )
-
- def test_shape_conditioned_models(self):
- net = DiffusionModelUNet(
- spatial_dims=2,
- in_channels=1,
- out_channels=1,
- num_res_blocks=1,
- num_channels=(8, 8, 8),
- attention_levels=(False, False, True),
- with_conditioning=True,
- transformer_num_layers=1,
- cross_attention_dim=3,
- norm_num_groups=8,
- num_head_channels=8,
- )
- with eval_mode(net):
- result = net.forward(
- x=torch.rand((1, 1, 16, 32)),
- timesteps=torch.randint(0, 1000, (1,)).long(),
- context=torch.rand((1, 1, 3)),
- )
- self.assertEqual(result.shape, (1, 1, 16, 32))
-
- def test_with_conditioning_cross_attention_dim_none(self):
- with self.assertRaises(ValueError):
- DiffusionModelUNet(
- spatial_dims=2,
- in_channels=1,
- out_channels=1,
- num_res_blocks=1,
- num_channels=(8, 8, 8),
- attention_levels=(False, False, True),
- with_conditioning=True,
- transformer_num_layers=1,
- cross_attention_dim=None,
- norm_num_groups=8,
- )
-
- def test_context_with_conditioning_none(self):
- net = DiffusionModelUNet(
- spatial_dims=2,
- in_channels=1,
- out_channels=1,
- num_res_blocks=1,
- num_channels=(8, 8, 8),
- attention_levels=(False, False, True),
- with_conditioning=False,
- transformer_num_layers=1,
- norm_num_groups=8,
- )
-
- with self.assertRaises(ValueError):
- with eval_mode(net):
- net.forward(
- x=torch.rand((1, 1, 16, 32)),
- timesteps=torch.randint(0, 1000, (1,)).long(),
- context=torch.rand((1, 1, 3)),
- )
-
- def test_shape_conditioned_models_class_conditioning(self):
- net = DiffusionModelUNet(
- spatial_dims=2,
- in_channels=1,
- out_channels=1,
- num_res_blocks=1,
- num_channels=(8, 8, 8),
- attention_levels=(False, False, True),
- norm_num_groups=8,
- num_head_channels=8,
- num_class_embeds=2,
- )
- with eval_mode(net):
- result = net.forward(
- x=torch.rand((1, 1, 16, 32)),
- timesteps=torch.randint(0, 1000, (1,)).long(),
- class_labels=torch.randint(0, 2, (1,)).long(),
- )
- self.assertEqual(result.shape, (1, 1, 16, 32))
-
- def test_conditioned_models_no_class_labels(self):
- net = DiffusionModelUNet(
- spatial_dims=2,
- in_channels=1,
- out_channels=1,
- num_res_blocks=1,
- num_channels=(8, 8, 8),
- attention_levels=(False, False, True),
- norm_num_groups=8,
- num_head_channels=8,
- num_class_embeds=2,
- )
-
- with self.assertRaises(ValueError):
- net.forward(x=torch.rand((1, 1, 16, 32)), timesteps=torch.randint(0, 1000, (1,)).long())
-
- def test_model_num_channels_not_same_size_of_attention_levels(self):
- with self.assertRaises(ValueError):
- DiffusionModelUNet(
- spatial_dims=2,
- in_channels=1,
- out_channels=1,
- num_res_blocks=1,
- num_channels=(8, 8, 8),
- attention_levels=(False, False),
- norm_num_groups=8,
- num_head_channels=8,
- num_class_embeds=2,
- )
-
- def test_script_unconditioned_2d_models(self):
- net = DiffusionModelUNet(
- spatial_dims=2,
- in_channels=1,
- out_channels=1,
- num_res_blocks=1,
- num_channels=(8, 8, 8),
- attention_levels=(False, False, True),
- norm_num_groups=8,
- )
- test_script_save(net, torch.rand((1, 1, 16, 16)), torch.randint(0, 1000, (1,)).long())
-
- def test_script_conditioned_2d_models(self):
- net = DiffusionModelUNet(
- spatial_dims=2,
- in_channels=1,
- out_channels=1,
- num_res_blocks=1,
- num_channels=(8, 8, 8),
- attention_levels=(False, False, True),
- norm_num_groups=8,
- with_conditioning=True,
- transformer_num_layers=1,
- cross_attention_dim=3,
- )
- test_script_save(net, torch.rand((1, 1, 16, 16)), torch.randint(0, 1000, (1,)).long(), torch.rand((1, 1, 3)))
-
- @parameterized.expand(COND_CASES_2D)
- def test_conditioned_2d_models_shape(self, input_param):
- net = DiffusionModelUNet(**input_param)
- with eval_mode(net):
- result = net.forward(torch.rand((1, 1, 16, 16)), torch.randint(0, 1000, (1,)).long(), torch.rand((1, 1, 3)))
- self.assertEqual(result.shape, (1, 1, 16, 16))
-
-
-class TestDiffusionModelUNet3D(unittest.TestCase):
- @parameterized.expand(UNCOND_CASES_3D)
- def test_shape_unconditioned_models(self, input_param):
- net = DiffusionModelUNet(**input_param)
- with eval_mode(net):
- result = net.forward(torch.rand((1, 1, 16, 16, 16)), torch.randint(0, 1000, (1,)).long())
- self.assertEqual(result.shape, (1, 1, 16, 16, 16))
-
- def test_shape_with_different_in_channel_out_channel(self):
- in_channels = 6
- out_channels = 3
- net = DiffusionModelUNet(
- spatial_dims=3,
- in_channels=in_channels,
- out_channels=out_channels,
- num_res_blocks=1,
- num_channels=(8, 8, 8),
- attention_levels=(False, False, True),
- norm_num_groups=4,
- )
- with eval_mode(net):
- result = net.forward(torch.rand((1, in_channels, 16, 16, 16)), torch.randint(0, 1000, (1,)).long())
- self.assertEqual(result.shape, (1, out_channels, 16, 16, 16))
-
- def test_shape_conditioned_models(self):
- net = DiffusionModelUNet(
- spatial_dims=3,
- in_channels=1,
- out_channels=1,
- num_res_blocks=1,
- num_channels=(16, 16, 16),
- attention_levels=(False, False, True),
- norm_num_groups=16,
- with_conditioning=True,
- transformer_num_layers=1,
- cross_attention_dim=3,
- )
- with eval_mode(net):
- result = net.forward(
- x=torch.rand((1, 1, 16, 16, 16)),
- timesteps=torch.randint(0, 1000, (1,)).long(),
- context=torch.rand((1, 1, 3)),
- )
- self.assertEqual(result.shape, (1, 1, 16, 16, 16))
-
- def test_script_unconditioned_3d_models(self):
- net = DiffusionModelUNet(
- spatial_dims=3,
- in_channels=1,
- out_channels=1,
- num_res_blocks=1,
- num_channels=(8, 8, 8),
- attention_levels=(False, False, True),
- norm_num_groups=8,
- )
- test_script_save(net, torch.rand((1, 1, 16, 16, 16)), torch.randint(0, 1000, (1,)).long())
-
- def test_script_conditioned_3d_models(self):
- net = DiffusionModelUNet(
- spatial_dims=3,
- in_channels=1,
- out_channels=1,
- num_res_blocks=1,
- num_channels=(8, 8, 8),
- attention_levels=(False, False, True),
- norm_num_groups=8,
- with_conditioning=True,
- transformer_num_layers=1,
- cross_attention_dim=3,
- )
- test_script_save(
- net, torch.rand((1, 1, 16, 16, 16)), torch.randint(0, 1000, (1,)).long(), torch.rand((1, 1, 3))
- )
-
-
-if __name__ == "__main__":
- unittest.main()
diff --git a/tests/test_encoder_modules.py b/tests/test_encoder_modules.py
deleted file mode 100644
index 04639177..00000000
--- a/tests/test_encoder_modules.py
+++ /dev/null
@@ -1,130 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-import unittest
-
-import torch
-from parameterized import parameterized
-
-from generative.networks.blocks import SpatialRescaler
-
-device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
-
-CASES = [
- [
- {
- "spatial_dims": 2,
- "n_stages": 1,
- "method": "bilinear",
- "multiplier": 0.5,
- "in_channels": None,
- "out_channels": None,
- },
- (1, 1, 16, 16),
- (1, 1, 8, 8),
- ],
- [
- {
- "spatial_dims": 2,
- "n_stages": 1,
- "method": "bilinear",
- "multiplier": 0.5,
- "in_channels": 3,
- "out_channels": 2,
- },
- (1, 3, 16, 16),
- (1, 2, 8, 8),
- ],
- [
- {
- "spatial_dims": 3,
- "n_stages": 1,
- "method": "trilinear",
- "multiplier": 0.5,
- "in_channels": None,
- "out_channels": None,
- },
- (1, 1, 16, 16, 16),
- (1, 1, 8, 8, 8),
- ],
- [
- {
- "spatial_dims": 3,
- "n_stages": 1,
- "method": "trilinear",
- "multiplier": 0.5,
- "in_channels": 3,
- "out_channels": 2,
- },
- (1, 3, 16, 16, 16),
- (1, 2, 8, 8, 8),
- ],
- [
- {
- "spatial_dims": 3,
- "n_stages": 1,
- "method": "trilinear",
- "multiplier": (0.25, 0.5, 0.75),
- "in_channels": 3,
- "out_channels": 2,
- },
- (1, 3, 20, 20, 20),
- (1, 2, 5, 10, 15),
- ],
- [
- {"spatial_dims": 2, "n_stages": 1, "size": (8, 8), "method": "bilinear", "in_channels": 3, "out_channels": 2},
- (1, 3, 16, 16),
- (1, 2, 8, 8),
- ],
- [
- {
- "spatial_dims": 3,
- "n_stages": 1,
- "size": (8, 8, 8),
- "method": "trilinear",
- "in_channels": None,
- "out_channels": None,
- },
- (1, 1, 16, 16, 16),
- (1, 1, 8, 8, 8),
- ],
-]
-
-
-class TestSpatialRescaler(unittest.TestCase):
- @parameterized.expand(CASES)
- def test_shape(self, input_param, input_shape, expected_shape):
- module = SpatialRescaler(**input_param).to(device)
-
- result = module(torch.randn(input_shape).to(device))
- self.assertEqual(result.shape, expected_shape)
-
- def test_method_not_in_available_options(self):
- with self.assertRaises(AssertionError):
- SpatialRescaler(method="none")
-
- def test_n_stages_is_negative(self):
- with self.assertRaises(AssertionError):
- SpatialRescaler(n_stages=-1)
-
- def test_use_size_but_n_stages_is_not_one(self):
- with self.assertRaises(ValueError):
- SpatialRescaler(n_stages=2, size=[8, 8, 8])
-
- def test_both_size_and_multiplier_defined(self):
- with self.assertRaises(ValueError):
- SpatialRescaler(size=[1, 2, 3], multiplier=0.5)
-
-
-if __name__ == "__main__":
- unittest.main()
diff --git a/tests/test_integration_workflows_adversarial.py b/tests/test_integration_workflows_adversarial.py
deleted file mode 100644
index 4ce46554..00000000
--- a/tests/test_integration_workflows_adversarial.py
+++ /dev/null
@@ -1,171 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-import os
-import shutil
-import tempfile
-import unittest
-from glob import glob
-
-import monai
-import nibabel as nib
-import numpy as np
-import torch
-from monai.data import create_test_image_2d
-from monai.handlers import CheckpointSaver, StatsHandler, TensorBoardStatsHandler
-from monai.networks.nets import AutoEncoder, Discriminator
-from monai.transforms import AsChannelFirstd, Compose, LoadImaged, RandFlipd, ScaleIntensityd
-from monai.utils import CommonKeys, set_determinism
-
-from generative.engines import AdversarialTrainer
-from generative.utils import AdversarialKeys as Keys
-from tests.utils import DistTestCase, TimedCall, skip_if_quick
-
-
-def run_training_test(root_dir, device="cuda:0"):
- learning_rate = 2e-4
- real_label = 1
- fake_label = 0
-
- real_images = sorted(glob(os.path.join(root_dir, "img*.nii.gz")))
- train_files = [{CommonKeys.IMAGE: img, CommonKeys.LABEL: img} for img in zip(real_images)]
-
- # prepare real data
- train_transforms = Compose(
- [
- LoadImaged(keys=[CommonKeys.IMAGE, CommonKeys.LABEL]),
- AsChannelFirstd(keys=[CommonKeys.IMAGE, CommonKeys.LABEL]),
- ScaleIntensityd(keys=[CommonKeys.IMAGE]),
- RandFlipd(keys=[CommonKeys.IMAGE, CommonKeys.LABEL], prob=0.5),
- ]
- )
- train_ds = monai.data.CacheDataset(data=train_files, transform=train_transforms, cache_rate=0.5)
- train_loader = monai.data.DataLoader(train_ds, batch_size=2, shuffle=True, num_workers=4)
-
- # Create Discriminator
- discriminator_net = Discriminator(
- in_shape=(1, 64, 64), channels=(8, 16, 32, 64, 1), strides=(2, 2, 2, 2, 1), num_res_units=1, kernel_size=5
- ).to(device)
- discriminator_opt = torch.optim.Adam(discriminator_net.parameters(), learning_rate)
- discriminator_loss_criterion = torch.nn.BCELoss()
-
- def discriminator_loss(real_logits, fake_logits):
- real_target = real_logits.new_full((real_logits.shape[0], 1), real_label)
- fake_target = fake_logits.new_full((fake_logits.shape[0], 1), fake_label)
- real_loss = discriminator_loss_criterion(real_logits, real_target)
- fake_loss = discriminator_loss_criterion(fake_logits.detach(), fake_target)
- return torch.div(torch.add(real_loss, fake_loss), 2)
-
- # Create Generator
- generator_network = AutoEncoder(
- spatial_dims=2,
- in_channels=1,
- out_channels=1,
- channels=(8, 16, 32, 64),
- strides=(2, 2, 2, 2),
- num_res_units=1,
- num_inter_units=1,
- )
- generator_network = generator_network.to(device)
- generator_optimiser = torch.optim.Adam(generator_network.parameters(), learning_rate)
- generator_loss_criterion = torch.nn.MSELoss()
-
- def reconstruction_loss(recon_images, real_images):
- return generator_loss_criterion(recon_images, real_images)
-
- def generator_loss(fake_logits):
- fake_target = fake_logits.new_full((fake_logits.shape[0], 1), real_label)
- recon_loss = discriminator_loss_criterion(fake_logits.detach(), fake_target)
- return recon_loss
-
- key_train_metric = None
-
- train_handlers = [
- StatsHandler(
- name="training_loss",
- output_transform=lambda x: {
- Keys.RECONSTRUCTION_LOSS: x[Keys.RECONSTRUCTION_LOSS],
- Keys.DISCRIMINATOR_LOSS: x[Keys.DISCRIMINATOR_LOSS],
- Keys.GENERATOR_LOSS: x[Keys.GENERATOR_LOSS],
- },
- ),
- TensorBoardStatsHandler(
- log_dir=root_dir,
- tag_name="training_loss",
- output_transform=lambda x: {
- Keys.RECONSTRUCTION_LOSS: x[Keys.RECONSTRUCTION_LOSS],
- Keys.DISCRIMINATOR_LOSS: x[Keys.DISCRIMINATOR_LOSS],
- Keys.GENERATOR_LOSS: x[Keys.GENERATOR_LOSS],
- },
- ),
- CheckpointSaver(
- save_dir=root_dir,
- save_dict={"g_net": generator_network, "d_net": discriminator_net},
- save_interval=2,
- epoch_level=True,
- ),
- ]
-
- num_epochs = 5
-
- trainer = AdversarialTrainer(
- device=device,
- max_epochs=num_epochs,
- train_data_loader=train_loader,
- g_network=generator_network,
- g_optimizer=generator_optimiser,
- g_loss_function=generator_loss,
- recon_loss_function=reconstruction_loss,
- d_network=discriminator_net,
- d_optimizer=discriminator_opt,
- d_loss_function=discriminator_loss,
- non_blocking=True,
- key_train_metric=key_train_metric,
- train_handlers=train_handlers,
- )
- trainer.run()
-
- return trainer.state
-
-
-@skip_if_quick
-class IntegrationWorkflowsAdversarialTrainer(DistTestCase):
- def setUp(self):
- set_determinism(seed=0)
-
- self.data_dir = tempfile.mkdtemp()
- for i in range(40):
- im, _ = create_test_image_2d(64, 64, num_objs=3, rad_max=14, num_seg_classes=1, channel_dim=-1)
- n = nib.Nifti1Image(im, np.eye(4))
- nib.save(n, os.path.join(self.data_dir, f"img{i:d}.nii.gz"))
-
- self.device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu:0")
- monai.config.print_config()
-
- def tearDown(self):
- set_determinism(seed=None)
- shutil.rmtree(self.data_dir)
-
- @TimedCall(seconds=200, daemon=False)
- def test_training(self):
- torch.manual_seed(0)
-
- finish_state = run_training_test(self.data_dir, device=self.device)
-
- # Assert AdversarialTrainer training finished
- self.assertEqual(finish_state.iteration, 100)
- self.assertEqual(finish_state.epoch, 5)
-
-
-if __name__ == "__main__":
- unittest.main()
diff --git a/tests/test_latent_diffusion_inferer.py b/tests/test_latent_diffusion_inferer.py
deleted file mode 100644
index ba607c34..00000000
--- a/tests/test_latent_diffusion_inferer.py
+++ /dev/null
@@ -1,447 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-import unittest
-
-import torch
-from parameterized import parameterized
-
-from generative.inferers import LatentDiffusionInferer
-from generative.networks.nets import VQVAE, AutoencoderKL, DiffusionModelUNet
-from generative.networks.schedulers import DDPMScheduler
-
-TEST_CASES = [
- [
- "AutoencoderKL",
- {
- "spatial_dims": 2,
- "in_channels": 1,
- "out_channels": 1,
- "num_channels": (4, 4),
- "latent_channels": 3,
- "attention_levels": [False, False],
- "num_res_blocks": 1,
- "with_encoder_nonlocal_attn": False,
- "with_decoder_nonlocal_attn": False,
- "norm_num_groups": 4,
- },
- {
- "spatial_dims": 2,
- "in_channels": 3,
- "out_channels": 3,
- "num_channels": [4, 4],
- "norm_num_groups": 4,
- "attention_levels": [False, False],
- "num_res_blocks": 1,
- "num_head_channels": 4,
- },
- (1, 1, 8, 8),
- (1, 3, 4, 4),
- ],
- [
- "VQVAE",
- {
- "spatial_dims": 2,
- "in_channels": 1,
- "out_channels": 1,
- "num_channels": [4, 4],
- "num_res_layers": 1,
- "num_res_channels": [4, 4],
- "downsample_parameters": ((2, 4, 1, 1), (2, 4, 1, 1)),
- "upsample_parameters": ((2, 4, 1, 1, 0), (2, 4, 1, 1, 0)),
- "num_embeddings": 16,
- "embedding_dim": 3,
- },
- {
- "spatial_dims": 2,
- "in_channels": 3,
- "out_channels": 3,
- "num_channels": [8, 8],
- "norm_num_groups": 8,
- "attention_levels": [False, False],
- "num_res_blocks": 1,
- "num_head_channels": 8,
- },
- (1, 1, 16, 16),
- (1, 3, 4, 4),
- ],
- [
- "VQVAE",
- {
- "spatial_dims": 3,
- "in_channels": 1,
- "out_channels": 1,
- "num_channels": [4, 4],
- "num_res_layers": 1,
- "num_res_channels": [4, 4],
- "downsample_parameters": ((2, 4, 1, 1), (2, 4, 1, 1)),
- "upsample_parameters": ((2, 4, 1, 1, 0), (2, 4, 1, 1, 0)),
- "num_embeddings": 16,
- "embedding_dim": 3,
- },
- {
- "spatial_dims": 3,
- "in_channels": 3,
- "out_channels": 3,
- "num_channels": [8, 8],
- "norm_num_groups": 8,
- "attention_levels": [False, False],
- "num_res_blocks": 1,
- "num_head_channels": 8,
- },
- (1, 1, 16, 16, 16),
- (1, 3, 4, 4, 4),
- ],
-]
-TEST_CASES_DIFF_SHAPES = [
- [
- "AutoencoderKL",
- {
- "spatial_dims": 2,
- "in_channels": 1,
- "out_channels": 1,
- "num_channels": (4, 4),
- "latent_channels": 3,
- "attention_levels": [False, False],
- "num_res_blocks": 1,
- "with_encoder_nonlocal_attn": False,
- "with_decoder_nonlocal_attn": False,
- "norm_num_groups": 4,
- },
- {
- "spatial_dims": 2,
- "in_channels": 3,
- "out_channels": 3,
- "num_channels": [4, 4],
- "norm_num_groups": 4,
- "attention_levels": [False, False],
- "num_res_blocks": 1,
- "num_head_channels": 4,
- },
- (1, 1, 12, 12),
- (1, 3, 8, 8),
- ],
- [
- "VQVAE",
- {
- "spatial_dims": 2,
- "in_channels": 1,
- "out_channels": 1,
- "num_channels": [4, 4],
- "num_res_layers": 1,
- "num_res_channels": [4, 4],
- "downsample_parameters": ((2, 4, 1, 1), (2, 4, 1, 1)),
- "upsample_parameters": ((2, 4, 1, 1, 0), (2, 4, 1, 1, 0)),
- "num_embeddings": 16,
- "embedding_dim": 3,
- },
- {
- "spatial_dims": 2,
- "in_channels": 3,
- "out_channels": 3,
- "num_channels": [8, 8],
- "norm_num_groups": 8,
- "attention_levels": [False, False],
- "num_res_blocks": 1,
- "num_head_channels": 8,
- },
- (1, 1, 12, 12),
- (1, 3, 8, 8),
- ],
- [
- "VQVAE",
- {
- "spatial_dims": 3,
- "in_channels": 1,
- "out_channels": 1,
- "num_channels": [4, 4],
- "num_res_layers": 1,
- "num_res_channels": [4, 4],
- "downsample_parameters": ((2, 4, 1, 1), (2, 4, 1, 1)),
- "upsample_parameters": ((2, 4, 1, 1, 0), (2, 4, 1, 1, 0)),
- "num_embeddings": 16,
- "embedding_dim": 3,
- },
- {
- "spatial_dims": 3,
- "in_channels": 3,
- "out_channels": 3,
- "num_channels": [8, 8],
- "norm_num_groups": 8,
- "attention_levels": [False, False],
- "num_res_blocks": 1,
- "num_head_channels": 8,
- },
- (1, 1, 12, 12, 12),
- (1, 3, 8, 8, 8),
- ],
-]
-
-
-class TestDiffusionSamplingInferer(unittest.TestCase):
- @parameterized.expand(TEST_CASES)
- def test_prediction_shape(self, model_type, autoencoder_params, stage_2_params, input_shape, latent_shape):
- if model_type == "AutoencoderKL":
- stage_1 = AutoencoderKL(**autoencoder_params)
- if model_type == "VQVAE":
- stage_1 = VQVAE(**autoencoder_params)
- stage_2 = DiffusionModelUNet(**stage_2_params)
-
- device = "cuda:0" if torch.cuda.is_available() else "cpu"
- stage_1.to(device)
- stage_2.to(device)
- stage_1.eval()
- stage_2.eval()
-
- input = torch.randn(input_shape).to(device)
- noise = torch.randn(latent_shape).to(device)
- scheduler = DDPMScheduler(num_train_timesteps=10)
- inferer = LatentDiffusionInferer(scheduler=scheduler, scale_factor=1.0)
- scheduler.set_timesteps(num_inference_steps=10)
-
- timesteps = torch.randint(0, scheduler.num_train_timesteps, (input_shape[0],), device=input.device).long()
- prediction = inferer(
- inputs=input, autoencoder_model=stage_1, diffusion_model=stage_2, noise=noise, timesteps=timesteps
- )
- self.assertEqual(prediction.shape, latent_shape)
-
- @parameterized.expand(TEST_CASES)
- def test_sample_shape(self, model_type, autoencoder_params, stage_2_params, input_shape, latent_shape):
- if model_type == "AutoencoderKL":
- stage_1 = AutoencoderKL(**autoencoder_params)
- if model_type == "VQVAE":
- stage_1 = VQVAE(**autoencoder_params)
- stage_2 = DiffusionModelUNet(**stage_2_params)
-
- device = "cuda:0" if torch.cuda.is_available() else "cpu"
- stage_1.to(device)
- stage_2.to(device)
- stage_1.eval()
- stage_2.eval()
-
- noise = torch.randn(latent_shape).to(device)
- scheduler = DDPMScheduler(num_train_timesteps=10)
- inferer = LatentDiffusionInferer(scheduler=scheduler, scale_factor=1.0)
- scheduler.set_timesteps(num_inference_steps=10)
-
- sample = inferer.sample(
- input_noise=noise, autoencoder_model=stage_1, diffusion_model=stage_2, scheduler=scheduler
- )
- self.assertEqual(sample.shape, input_shape)
-
- @parameterized.expand(TEST_CASES)
- def test_sample_intermediates(self, model_type, autoencoder_params, stage_2_params, input_shape, latent_shape):
- if model_type == "AutoencoderKL":
- stage_1 = AutoencoderKL(**autoencoder_params)
- if model_type == "VQVAE":
- stage_1 = VQVAE(**autoencoder_params)
- stage_2 = DiffusionModelUNet(**stage_2_params)
-
- device = "cuda:0" if torch.cuda.is_available() else "cpu"
- stage_1.to(device)
- stage_2.to(device)
- stage_1.eval()
- stage_2.eval()
-
- noise = torch.randn(latent_shape).to(device)
- scheduler = DDPMScheduler(num_train_timesteps=10)
- inferer = LatentDiffusionInferer(scheduler=scheduler, scale_factor=1.0)
- scheduler.set_timesteps(num_inference_steps=10)
-
- sample, intermediates = inferer.sample(
- input_noise=noise,
- autoencoder_model=stage_1,
- diffusion_model=stage_2,
- scheduler=scheduler,
- save_intermediates=True,
- intermediate_steps=1,
- )
- self.assertEqual(len(intermediates), 10)
- self.assertEqual(intermediates[0].shape, input_shape)
-
- @parameterized.expand(TEST_CASES)
- def test_get_likelihoods(self, model_type, autoencoder_params, stage_2_params, input_shape, latent_shape):
- if model_type == "AutoencoderKL":
- stage_1 = AutoencoderKL(**autoencoder_params)
- if model_type == "VQVAE":
- stage_1 = VQVAE(**autoencoder_params)
- stage_2 = DiffusionModelUNet(**stage_2_params)
-
- device = "cuda:0" if torch.cuda.is_available() else "cpu"
- stage_1.to(device)
- stage_2.to(device)
- stage_1.eval()
- stage_2.eval()
-
- input = torch.randn(input_shape).to(device)
- scheduler = DDPMScheduler(num_train_timesteps=10)
- inferer = LatentDiffusionInferer(scheduler=scheduler, scale_factor=1.0)
- scheduler.set_timesteps(num_inference_steps=10)
-
- sample, intermediates = inferer.get_likelihood(
- inputs=input,
- autoencoder_model=stage_1,
- diffusion_model=stage_2,
- scheduler=scheduler,
- save_intermediates=True,
- )
- self.assertEqual(len(intermediates), 10)
- self.assertEqual(intermediates[0].shape, latent_shape)
-
- @parameterized.expand(TEST_CASES)
- def test_resample_likelihoods(self, model_type, autoencoder_params, stage_2_params, input_shape, latent_shape):
- if model_type == "AutoencoderKL":
- stage_1 = AutoencoderKL(**autoencoder_params)
- if model_type == "VQVAE":
- stage_1 = VQVAE(**autoencoder_params)
- stage_2 = DiffusionModelUNet(**stage_2_params)
-
- device = "cuda:0" if torch.cuda.is_available() else "cpu"
- stage_1.to(device)
- stage_2.to(device)
- stage_1.eval()
- stage_2.eval()
-
- input = torch.randn(input_shape).to(device)
- scheduler = DDPMScheduler(num_train_timesteps=10)
- inferer = LatentDiffusionInferer(scheduler=scheduler, scale_factor=1.0)
- scheduler.set_timesteps(num_inference_steps=10)
-
- sample, intermediates = inferer.get_likelihood(
- inputs=input,
- autoencoder_model=stage_1,
- diffusion_model=stage_2,
- scheduler=scheduler,
- save_intermediates=True,
- resample_latent_likelihoods=True,
- )
- self.assertEqual(len(intermediates), 10)
- self.assertEqual(intermediates[0].shape[2:], input_shape[2:])
-
- @parameterized.expand(TEST_CASES)
- def test_prediction_shape_conditioned_concat(
- self, model_type, autoencoder_params, stage_2_params, input_shape, latent_shape
- ):
- if model_type == "AutoencoderKL":
- stage_1 = AutoencoderKL(**autoencoder_params)
- if model_type == "VQVAE":
- stage_1 = VQVAE(**autoencoder_params)
-
- stage_2_params = stage_2_params.copy()
- n_concat_channel = 3
- stage_2_params["in_channels"] = stage_2_params["in_channels"] + n_concat_channel
- stage_2 = DiffusionModelUNet(**stage_2_params)
-
- device = "cuda:0" if torch.cuda.is_available() else "cpu"
- stage_1.to(device)
- stage_2.to(device)
- stage_1.eval()
- stage_2.eval()
-
- input = torch.randn(input_shape).to(device)
- noise = torch.randn(latent_shape).to(device)
- conditioning_shape = list(latent_shape)
- conditioning_shape[1] = n_concat_channel
- conditioning = torch.randn(conditioning_shape).to(device)
-
- scheduler = DDPMScheduler(num_train_timesteps=10)
- inferer = LatentDiffusionInferer(scheduler=scheduler, scale_factor=1.0)
- scheduler.set_timesteps(num_inference_steps=10)
-
- timesteps = torch.randint(0, scheduler.num_train_timesteps, (input_shape[0],), device=input.device).long()
- prediction = inferer(
- inputs=input,
- autoencoder_model=stage_1,
- diffusion_model=stage_2,
- noise=noise,
- timesteps=timesteps,
- condition=conditioning,
- mode="concat",
- )
- self.assertEqual(prediction.shape, latent_shape)
-
- @parameterized.expand(TEST_CASES)
- def test_sample_shape_conditioned_concat(
- self, model_type, autoencoder_params, stage_2_params, input_shape, latent_shape
- ):
- if model_type == "AutoencoderKL":
- stage_1 = AutoencoderKL(**autoencoder_params)
- if model_type == "VQVAE":
- stage_1 = VQVAE(**autoencoder_params)
- stage_2_params = stage_2_params.copy()
- n_concat_channel = 3
- stage_2_params["in_channels"] = stage_2_params["in_channels"] + n_concat_channel
- stage_2 = DiffusionModelUNet(**stage_2_params)
-
- device = "cuda:0" if torch.cuda.is_available() else "cpu"
- stage_1.to(device)
- stage_2.to(device)
- stage_1.eval()
- stage_2.eval()
-
- noise = torch.randn(latent_shape).to(device)
- conditioning_shape = list(latent_shape)
- conditioning_shape[1] = n_concat_channel
- conditioning = torch.randn(conditioning_shape).to(device)
-
- scheduler = DDPMScheduler(num_train_timesteps=10)
- inferer = LatentDiffusionInferer(scheduler=scheduler, scale_factor=1.0)
- scheduler.set_timesteps(num_inference_steps=10)
-
- sample = inferer.sample(
- input_noise=noise,
- autoencoder_model=stage_1,
- diffusion_model=stage_2,
- scheduler=scheduler,
- conditioning=conditioning,
- mode="concat",
- )
- self.assertEqual(sample.shape, input_shape)
-
- @parameterized.expand(TEST_CASES_DIFF_SHAPES)
- def test_sample_shape_different_latents(self,
- model_type,
- autoencoder_params,
- stage_2_params,
- input_shape,
- latent_shape
- ):
- if model_type == "AutoencoderKL":
- stage_1 = AutoencoderKL(**autoencoder_params)
- if model_type == "VQVAE":
- stage_1 = VQVAE(**autoencoder_params)
- stage_2 = DiffusionModelUNet(**stage_2_params)
-
- device = "cuda:0" if torch.cuda.is_available() else "cpu"
- stage_1.to(device)
- stage_2.to(device)
- stage_1.eval()
- stage_2.eval()
-
- input = torch.randn(input_shape).to(device)
- noise = torch.randn(latent_shape).to(device)
- scheduler = DDPMScheduler(num_train_timesteps=10)
- # We infer the VAE shape
- autoencoder_latent_shape = [i//(2**(len(autoencoder_params['num_channels'])-1)) for i in input_shape[2:]]
- inferer = LatentDiffusionInferer(scheduler=scheduler, scale_factor=1.0,
- ldm_latent_shape=list(latent_shape[2:]),
- autoencoder_latent_shape=autoencoder_latent_shape)
- scheduler.set_timesteps(num_inference_steps=10)
-
- timesteps = torch.randint(0, scheduler.num_train_timesteps, (input_shape[0],), device=input.device).long()
- prediction = inferer(
- inputs=input, autoencoder_model=stage_1, diffusion_model=stage_2, noise=noise, timesteps=timesteps
- )
- self.assertEqual(prediction.shape, latent_shape)
-if __name__ == "__main__":
- unittest.main()
diff --git a/tests/test_misc.py b/tests/test_misc.py
deleted file mode 100644
index e0625321..00000000
--- a/tests/test_misc.py
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-import unittest
-
-import numpy as np
-import torch
-from parameterized import parameterized
-
-from generative.utils import unsqueeze_left, unsqueeze_right
-
-RIGHT_CASES = [(np.random.rand(3, 4), 5, (3, 4, 1, 1, 1)), (torch.rand(3, 4), 5, (3, 4, 1, 1, 1))]
-
-LEFT_CASES = [(np.random.rand(3, 4), 5, (1, 1, 1, 3, 4)), (torch.rand(3, 4), 5, (1, 1, 1, 3, 4))]
-
-ALL_CASES = [
- (np.random.rand(3, 4), 2, (3, 4)),
- (np.random.rand(3, 4), 0, (3, 4)),
- (np.random.rand(3, 4), -1, (3, 4)),
- (np.array(3), 4, (1, 1, 1, 1)),
- (np.array(3), 0, ()),
- (torch.rand(3, 4), 2, (3, 4)),
- (torch.rand(3, 4), 0, (3, 4)),
- (torch.rand(3, 4), -1, (3, 4)),
- (torch.tensor(3), 4, (1, 1, 1, 1)),
- (torch.tensor(3), 0, ()),
-]
-
-
-class TestUnsqueeze(unittest.TestCase):
- @parameterized.expand(RIGHT_CASES + ALL_CASES)
- def test_unsqueeze_right(self, arr, ndim, shape):
- self.assertEqual(unsqueeze_right(arr, ndim).shape, shape)
-
- @parameterized.expand(LEFT_CASES + ALL_CASES)
- def test_unsqueeze_left(self, arr, ndim, shape):
- self.assertEqual(unsqueeze_left(arr, ndim).shape, shape)
diff --git a/tests/test_ordering.py b/tests/test_ordering.py
deleted file mode 100644
index 8aea5447..00000000
--- a/tests/test_ordering.py
+++ /dev/null
@@ -1,318 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-import unittest
-
-import numpy as np
-from parameterized import parameterized
-
-from generative.utils.enums import OrderingTransformations, OrderingType
-from generative.utils.ordering import Ordering
-
-TEST_2D_NON_RANDOM = [
- [
- {
- "ordering_type": OrderingType.RASTER_SCAN,
- "spatial_dims": 2,
- "dimensions": (1, 2, 2),
- "reflected_spatial_dims": (),
- "transpositions_axes": (),
- "rot90_axes": (),
- "transformation_order": (
- OrderingTransformations.TRANSPOSE.value,
- OrderingTransformations.ROTATE_90.value,
- OrderingTransformations.REFLECT.value,
- ),
- },
- [0, 1, 2, 3],
- ],
- [
- {
- "ordering_type": OrderingType.S_CURVE,
- "spatial_dims": 2,
- "dimensions": (1, 2, 2),
- "reflected_spatial_dims": (),
- "transpositions_axes": (),
- "rot90_axes": (),
- "transformation_order": (
- OrderingTransformations.TRANSPOSE.value,
- OrderingTransformations.ROTATE_90.value,
- OrderingTransformations.REFLECT.value,
- ),
- },
- [0, 1, 3, 2],
- ],
- [
- {
- "ordering_type": OrderingType.RASTER_SCAN,
- "spatial_dims": 2,
- "dimensions": (1, 2, 2),
- "reflected_spatial_dims": (True, False),
- "transpositions_axes": (),
- "rot90_axes": (),
- "transformation_order": (
- OrderingTransformations.TRANSPOSE.value,
- OrderingTransformations.ROTATE_90.value,
- OrderingTransformations.REFLECT.value,
- ),
- },
- [2, 3, 0, 1],
- ],
- [
- {
- "ordering_type": OrderingType.S_CURVE,
- "spatial_dims": 2,
- "dimensions": (1, 2, 2),
- "reflected_spatial_dims": (True, False),
- "transpositions_axes": (),
- "rot90_axes": (),
- "transformation_order": (
- OrderingTransformations.TRANSPOSE.value,
- OrderingTransformations.ROTATE_90.value,
- OrderingTransformations.REFLECT.value,
- ),
- },
- [2, 3, 1, 0],
- ],
- [
- {
- "ordering_type": OrderingType.RASTER_SCAN,
- "spatial_dims": 2,
- "dimensions": (1, 2, 2),
- "reflected_spatial_dims": (),
- "transpositions_axes": ((1, 0),),
- "rot90_axes": (),
- "transformation_order": (
- OrderingTransformations.TRANSPOSE.value,
- OrderingTransformations.ROTATE_90.value,
- OrderingTransformations.REFLECT.value,
- ),
- },
- [0, 2, 1, 3],
- ],
- [
- {
- "ordering_type": OrderingType.S_CURVE,
- "spatial_dims": 2,
- "dimensions": (1, 2, 2),
- "reflected_spatial_dims": (),
- "transpositions_axes": ((1, 0),),
- "rot90_axes": (),
- "transformation_order": (
- OrderingTransformations.TRANSPOSE.value,
- OrderingTransformations.ROTATE_90.value,
- OrderingTransformations.REFLECT.value,
- ),
- },
- [0, 2, 3, 1],
- ],
- [
- {
- "ordering_type": OrderingType.RASTER_SCAN,
- "spatial_dims": 2,
- "dimensions": (1, 2, 2),
- "reflected_spatial_dims": (),
- "transpositions_axes": (),
- "rot90_axes": ((0, 1),),
- "transformation_order": (
- OrderingTransformations.TRANSPOSE.value,
- OrderingTransformations.ROTATE_90.value,
- OrderingTransformations.REFLECT.value,
- ),
- },
- [1, 3, 0, 2],
- ],
- [
- {
- "ordering_type": OrderingType.S_CURVE,
- "spatial_dims": 2,
- "dimensions": (1, 2, 2),
- "reflected_spatial_dims": (),
- "transpositions_axes": (),
- "rot90_axes": ((0, 1),),
- "transformation_order": (
- OrderingTransformations.TRANSPOSE.value,
- OrderingTransformations.ROTATE_90.value,
- OrderingTransformations.REFLECT.value,
- ),
- },
- [1, 3, 2, 0],
- ],
- [
- {
- "ordering_type": OrderingType.RASTER_SCAN,
- "spatial_dims": 2,
- "dimensions": (1, 2, 2),
- "reflected_spatial_dims": (True, False),
- "transpositions_axes": ((1, 0),),
- "rot90_axes": ((0, 1),),
- "transformation_order": (
- OrderingTransformations.TRANSPOSE.value,
- OrderingTransformations.ROTATE_90.value,
- OrderingTransformations.REFLECT.value,
- ),
- },
- [0, 1, 2, 3],
- ],
- [
- {
- "ordering_type": OrderingType.S_CURVE,
- "spatial_dims": 2,
- "dimensions": (1, 2, 2),
- "reflected_spatial_dims": (True, False),
- "transpositions_axes": ((1, 0),),
- "rot90_axes": ((0, 1),),
- "transformation_order": (
- OrderingTransformations.TRANSPOSE.value,
- OrderingTransformations.ROTATE_90.value,
- OrderingTransformations.REFLECT.value,
- ),
- },
- [0, 1, 3, 2],
- ],
-]
-
-TEST_2D_RANDOM = [
- [
- {
- "ordering_type": OrderingType.RANDOM,
- "spatial_dims": 2,
- "dimensions": (1, 2, 2),
- "reflected_spatial_dims": (True, False),
- "transpositions_axes": ((1, 0),),
- "rot90_axes": ((0, 1),),
- "transformation_order": (
- OrderingTransformations.TRANSPOSE.value,
- OrderingTransformations.ROTATE_90.value,
- OrderingTransformations.REFLECT.value,
- ),
- },
- [[0, 1, 2, 3], [0, 1, 3, 2]],
- ]
-]
-
-TEST_3D = [
- [
- {
- "ordering_type": OrderingType.RASTER_SCAN,
- "spatial_dims": 3,
- "dimensions": (1, 2, 2, 2),
- "reflected_spatial_dims": (),
- "transpositions_axes": (),
- "rot90_axes": (),
- "transformation_order": (
- OrderingTransformations.TRANSPOSE.value,
- OrderingTransformations.ROTATE_90.value,
- OrderingTransformations.REFLECT.value,
- ),
- },
- [0, 1, 2, 3, 4, 5, 6, 7],
- ]
-]
-
-TEST_ORDERING_TYPE_FAILURE = [
- [
- {
- "ordering_type": "hilbert",
- "spatial_dims": 2,
- "dimensions": (1, 2, 2),
- "reflected_spatial_dims": (True, False),
- "transpositions_axes": ((1, 0),),
- "rot90_axes": ((0, 1),),
- "transformation_order": (
- OrderingTransformations.TRANSPOSE.value,
- OrderingTransformations.ROTATE_90.value,
- OrderingTransformations.REFLECT.value,
- ),
- }
- ]
-]
-
-TEST_ORDERING_TRANSFORMATION_FAILURE = [
- [
- {
- "ordering_type": OrderingType.S_CURVE,
- "spatial_dims": 2,
- "dimensions": (1, 2, 2),
- "reflected_spatial_dims": (True, False),
- "transpositions_axes": ((1, 0),),
- "rot90_axes": ((0, 1),),
- "transformation_order": (
- OrderingTransformations.TRANSPOSE.value,
- OrderingTransformations.ROTATE_90.value,
- "flip",
- ),
- }
- ]
-]
-
-TEST_REVERT = [
- [
- {
- "ordering_type": OrderingType.S_CURVE,
- "spatial_dims": 2,
- "dimensions": (1, 2, 2),
- "reflected_spatial_dims": (True, False),
- "transpositions_axes": (),
- "rot90_axes": (),
- "transformation_order": (
- OrderingTransformations.TRANSPOSE.value,
- OrderingTransformations.ROTATE_90.value,
- OrderingTransformations.REFLECT.value,
- ),
- }
- ]
-]
-
-
-class TestOrdering(unittest.TestCase):
- @parameterized.expand(TEST_2D_NON_RANDOM + TEST_3D)
- def test_ordering(self, input_param, expected_sequence_ordering):
- ordering = Ordering(**input_param)
- self.assertTrue(np.array_equal(ordering.get_sequence_ordering(), expected_sequence_ordering, equal_nan=True))
-
- @parameterized.expand(TEST_ORDERING_TYPE_FAILURE)
- def test_ordering_type_failure(self, input_param):
- with self.assertRaises(ValueError):
- Ordering(**input_param)
-
- @parameterized.expand(TEST_ORDERING_TRANSFORMATION_FAILURE)
- def test_ordering_transformation_failure(self, input_param):
- with self.assertRaises(ValueError):
- Ordering(**input_param)
-
- @parameterized.expand(TEST_2D_RANDOM)
- def test_random(self, input_param, not_in_expected_sequence_ordering):
- ordering = Ordering(**input_param)
-
- not_in = [
- np.array_equal(sequence, ordering.get_sequence_ordering(), equal_nan=True)
- for sequence in not_in_expected_sequence_ordering
- ]
-
- self.assertFalse(np.any(not_in))
-
- @parameterized.expand(TEST_REVERT)
- def test_revert(self, input_param):
- sequence = np.random.randint(0, 100, size=input_param["dimensions"]).flatten()
-
- ordering = Ordering(**input_param)
-
- reverted_sequence = sequence[ordering.get_sequence_ordering()]
- reverted_sequence = reverted_sequence[ordering.get_revert_sequence_ordering()]
-
- self.assertTrue(np.array_equal(sequence, reverted_sequence, equal_nan=True))
-
-
-if __name__ == "__main__":
- unittest.main()
diff --git a/tests/test_patch_gan.py b/tests/test_patch_gan.py
deleted file mode 100644
index 50bab99e..00000000
--- a/tests/test_patch_gan.py
+++ /dev/null
@@ -1,116 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-import unittest
-
-import torch
-from monai.networks import eval_mode
-from parameterized import parameterized
-
-from generative.networks.nets.patchgan_discriminator import MultiScalePatchDiscriminator
-from tests.utils import test_script_save
-
-TEST_2D = [
- {
- "num_d": 2,
- "num_layers_d": 3,
- "spatial_dims": 2,
- "num_channels": 8,
- "in_channels": 3,
- "out_channels": 1,
- "kernel_size": 3,
- "activation": "LEAKYRELU",
- "norm": "instance",
- "bias": False,
- "dropout": 0.1,
- "minimum_size_im": 256,
- },
- torch.rand([1, 3, 256, 512]),
- [(1, 1, 32, 64), (1, 1, 4, 8)],
- [4, 7],
-]
-TEST_3D = [
- {
- "num_d": 2,
- "num_layers_d": 3,
- "spatial_dims": 3,
- "num_channels": 8,
- "in_channels": 3,
- "out_channels": 1,
- "kernel_size": 3,
- "activation": "LEAKYRELU",
- "norm": "instance",
- "bias": False,
- "dropout": 0.1,
- "minimum_size_im": 256,
- },
- torch.rand([1, 3, 256, 512, 256]),
- [(1, 1, 32, 64, 32), (1, 1, 4, 8, 4)],
- [4, 7],
-]
-TEST_TOO_SMALL_SIZE = [
- {
- "num_d": 2,
- "num_layers_d": 6,
- "spatial_dims": 2,
- "num_channels": 8,
- "in_channels": 3,
- "out_channels": 1,
- "kernel_size": 3,
- "activation": "LEAKYRELU",
- "norm": "instance",
- "bias": False,
- "dropout": 0.1,
- "minimum_size_im": 256,
- }
-]
-
-CASES = [TEST_2D, TEST_3D]
-
-
-class TestPatchGAN(unittest.TestCase):
- @parameterized.expand(CASES)
- def test_shape(self, input_param, input_data, expected_shape, features_lengths=None):
- net = MultiScalePatchDiscriminator(**input_param)
- with eval_mode(net):
- result, features = net.forward(input_data)
- for r_ind, r in enumerate(result):
- self.assertEqual(tuple(r.shape), expected_shape[r_ind])
- for o_d_ind, o_d in enumerate(features):
- self.assertEqual(len(o_d), features_lengths[o_d_ind])
-
- def test_too_small_shape(self):
- with self.assertRaises(AssertionError):
- MultiScalePatchDiscriminator(**TEST_TOO_SMALL_SIZE[0])
-
- def test_script(self):
- net = MultiScalePatchDiscriminator(
- num_d=2,
- num_layers_d=3,
- spatial_dims=2,
- num_channels=8,
- in_channels=3,
- out_channels=1,
- kernel_size=3,
- activation="LEAKYRELU",
- norm="instance",
- bias=False,
- dropout=0.1,
- minimum_size_im=256,
- )
- i = torch.rand([1, 3, 256, 512])
- test_script_save(net, i)
-
-
-if __name__ == "__main__":
- unittest.main()
diff --git a/tests/test_perceptual_loss.py b/tests/test_perceptual_loss.py
deleted file mode 100644
index fee375dd..00000000
--- a/tests/test_perceptual_loss.py
+++ /dev/null
@@ -1,82 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-import unittest
-
-import torch
-from parameterized import parameterized
-
-from generative.losses import PerceptualLoss
-
-TEST_CASES = [
- [{"spatial_dims": 2, "network_type": "squeeze"}, (2, 1, 64, 64), (2, 1, 64, 64)],
- [
- {"spatial_dims": 3, "network_type": "squeeze", "is_fake_3d": True, "fake_3d_ratio": 0.1},
- (2, 1, 64, 64, 64),
- (2, 1, 64, 64, 64),
- ],
- [{"spatial_dims": 2, "network_type": "radimagenet_resnet50"}, (2, 1, 64, 64), (2, 1, 64, 64)],
- [{"spatial_dims": 2, "network_type": "radimagenet_resnet50"}, (2, 3, 64, 64), (2, 3, 64, 64)],
- [
- {"spatial_dims": 3, "network_type": "radimagenet_resnet50", "is_fake_3d": True, "fake_3d_ratio": 0.1},
- (2, 1, 64, 64, 64),
- (2, 1, 64, 64, 64),
- ],
- [
- {"spatial_dims": 3, "network_type": "medicalnet_resnet10_23datasets", "is_fake_3d": False},
- (2, 1, 64, 64, 64),
- (2, 1, 64, 64, 64),
- ],
- [
- {"spatial_dims": 3, "network_type": "resnet50", "is_fake_3d": True, "pretrained": True, "fake_3d_ratio": 0.2},
- (2, 1, 64, 64, 64),
- (2, 1, 64, 64, 64),
- ],
-]
-
-
-class TestPerceptualLoss(unittest.TestCase):
- @parameterized.expand(TEST_CASES)
- def test_shape(self, input_param, input_shape, target_shape):
- loss = PerceptualLoss(**input_param)
- result = loss(torch.randn(input_shape), torch.randn(target_shape))
- self.assertEqual(result.shape, torch.Size([]))
-
- @parameterized.expand(TEST_CASES)
- def test_identical_input(self, input_param, input_shape, target_shape):
- loss = PerceptualLoss(**input_param)
- tensor = torch.randn(input_shape)
- result = loss(tensor, tensor)
- self.assertEqual(result, torch.Tensor([0.0]))
-
- def test_different_shape(self):
- loss = PerceptualLoss(spatial_dims=2, network_type="squeeze")
- tensor = torch.randn(2, 1, 64, 64)
- target = torch.randn(2, 1, 32, 32)
- with self.assertRaises(ValueError):
- loss(tensor, target)
-
- def test_1d(self):
- with self.assertRaises(NotImplementedError):
- PerceptualLoss(spatial_dims=1)
-
- def test_medicalnet_on_2d_data(self):
- with self.assertRaises(ValueError):
- PerceptualLoss(spatial_dims=2, network_type="medicalnet_resnet10_23datasets")
-
- with self.assertRaises(ValueError):
- PerceptualLoss(spatial_dims=2, network_type="medicalnet_resnet50_23datasets")
-
-
-if __name__ == "__main__":
- unittest.main()
diff --git a/tests/test_scheduler_ddim.py b/tests/test_scheduler_ddim.py
deleted file mode 100644
index 3c64b42c..00000000
--- a/tests/test_scheduler_ddim.py
+++ /dev/null
@@ -1,67 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-import unittest
-
-import torch
-from parameterized import parameterized
-
-from generative.networks.schedulers import DDIMScheduler
-
-TEST_2D_CASE = []
-for beta_schedule in ["linear_beta", "scaled_linear_beta"]:
- TEST_2D_CASE.append([{"schedule": beta_schedule}, (2, 6, 16, 16), (2, 6, 16, 16)])
-
-TEST_3D_CASE = []
-for beta_schedule in ["linear_beta", "scaled_linear_beta"]:
- TEST_3D_CASE.append([{"schedule": beta_schedule}, (2, 6, 16, 16, 16), (2, 6, 16, 16, 16)])
-
-TEST_CASES = TEST_2D_CASE + TEST_3D_CASE
-
-
-class TestDDPMScheduler(unittest.TestCase):
- @parameterized.expand(TEST_CASES)
- def test_add_noise_2d_shape(self, input_param, input_shape, expected_shape):
- scheduler = DDIMScheduler(**input_param)
- scheduler.set_timesteps(num_inference_steps=100)
- original_sample = torch.zeros(input_shape)
- noise = torch.randn_like(original_sample)
- timesteps = torch.randint(0, scheduler.num_train_timesteps, (original_sample.shape[0],)).long()
-
- noisy = scheduler.add_noise(original_samples=original_sample, noise=noise, timesteps=timesteps)
- self.assertEqual(noisy.shape, expected_shape)
-
- @parameterized.expand(TEST_CASES)
- def test_step_shape(self, input_param, input_shape, expected_shape):
- scheduler = DDIMScheduler(**input_param)
- scheduler.set_timesteps(num_inference_steps=100)
- model_output = torch.randn(input_shape)
- sample = torch.randn(input_shape)
- output_step = scheduler.step(model_output=model_output, timestep=500, sample=sample)
- self.assertEqual(output_step[0].shape, expected_shape)
- self.assertEqual(output_step[1].shape, expected_shape)
-
- def test_set_timesteps(self):
- scheduler = DDIMScheduler(num_train_timesteps=1000)
- scheduler.set_timesteps(num_inference_steps=100)
- self.assertEqual(scheduler.num_inference_steps, 100)
- self.assertEqual(len(scheduler.timesteps), 100)
-
- def test_set_timesteps_with_num_inference_steps_bigger_than_num_train_timesteps(self):
- scheduler = DDIMScheduler(num_train_timesteps=1000)
- with self.assertRaises(ValueError):
- scheduler.set_timesteps(num_inference_steps=2000)
-
-
-if __name__ == "__main__":
- unittest.main()
diff --git a/tests/test_scheduler_ddpm.py b/tests/test_scheduler_ddpm.py
deleted file mode 100644
index 835537fe..00000000
--- a/tests/test_scheduler_ddpm.py
+++ /dev/null
@@ -1,88 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-import unittest
-
-import torch
-from parameterized import parameterized
-
-from generative.networks.schedulers import DDPMScheduler
-
-TEST_2D_CASE = []
-for beta_schedule in ["linear_beta", "scaled_linear_beta"]:
- for variance_type in ["fixed_small", "fixed_large"]:
- TEST_2D_CASE.append(
- [{"schedule": beta_schedule, "variance_type": variance_type}, (2, 6, 16, 16), (2, 6, 16, 16)]
- )
-
-TEST_3D_CASE = []
-for beta_schedule in ["linear_beta", "scaled_linear_beta"]:
- for variance_type in ["fixed_small", "fixed_large"]:
- TEST_3D_CASE.append(
- [{"schedule": beta_schedule, "variance_type": variance_type}, (2, 6, 16, 16, 16), (2, 6, 16, 16, 16)]
- )
-
-TEST_CASES = TEST_2D_CASE + TEST_3D_CASE
-
-
-class TestDDPMScheduler(unittest.TestCase):
- @parameterized.expand(TEST_CASES)
- def test_add_noise_2d_shape(self, input_param, input_shape, expected_shape):
- scheduler = DDPMScheduler(**input_param)
- original_sample = torch.zeros(input_shape)
- noise = torch.randn_like(original_sample)
- timesteps = torch.randint(0, scheduler.num_train_timesteps, (original_sample.shape[0],)).long()
-
- noisy = scheduler.add_noise(original_samples=original_sample, noise=noise, timesteps=timesteps)
- self.assertEqual(noisy.shape, expected_shape)
-
- @parameterized.expand(TEST_CASES)
- def test_step_shape(self, input_param, input_shape, expected_shape):
- scheduler = DDPMScheduler(**input_param)
- model_output = torch.randn(input_shape)
- sample = torch.randn(input_shape)
- output_step = scheduler.step(model_output=model_output, timestep=500, sample=sample)
- self.assertEqual(output_step[0].shape, expected_shape)
- self.assertEqual(output_step[1].shape, expected_shape)
-
- @parameterized.expand(TEST_CASES)
- def test_get_velocity_shape(self, input_param, input_shape, expected_shape):
- scheduler = DDPMScheduler(**input_param)
- sample = torch.randn(input_shape)
- timesteps = torch.randint(0, scheduler.num_train_timesteps, (input_shape[0],)).long()
- velocity = scheduler.get_velocity(sample=sample, noise=sample, timesteps=timesteps)
- self.assertEqual(velocity.shape, expected_shape)
-
- def test_step_learned(self):
- for variance_type in ["learned", "learned_range"]:
- scheduler = DDPMScheduler(variance_type=variance_type)
- model_output = torch.randn(2, 6, 16, 16)
- sample = torch.randn(2, 3, 16, 16)
- output_step = scheduler.step(model_output=model_output, timestep=500, sample=sample)
- self.assertEqual(output_step[0].shape, sample.shape)
- self.assertEqual(output_step[1].shape, sample.shape)
-
- def test_set_timesteps(self):
- scheduler = DDPMScheduler(num_train_timesteps=1000)
- scheduler.set_timesteps(num_inference_steps=100)
- self.assertEqual(scheduler.num_inference_steps, 100)
- self.assertEqual(len(scheduler.timesteps), 100)
-
- def test_set_timesteps_with_num_inference_steps_bigger_than_num_train_timesteps(self):
- scheduler = DDPMScheduler(num_train_timesteps=1000)
- with self.assertRaises(ValueError):
- scheduler.set_timesteps(num_inference_steps=2000)
-
-
-if __name__ == "__main__":
- unittest.main()
diff --git a/tests/test_scheduler_pndm.py b/tests/test_scheduler_pndm.py
deleted file mode 100644
index 4e0dbb97..00000000
--- a/tests/test_scheduler_pndm.py
+++ /dev/null
@@ -1,71 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-import unittest
-
-import torch
-from parameterized import parameterized
-
-from generative.networks.schedulers import PNDMScheduler
-
-TEST_2D_CASE = []
-for beta_schedule in ["linear_beta", "scaled_linear_beta"]:
- TEST_2D_CASE.append([{"schedule": beta_schedule}, (2, 6, 16, 16), (2, 6, 16, 16)])
-
-TEST_3D_CASE = []
-for beta_schedule in ["linear_beta", "scaled_linear_beta"]:
- TEST_3D_CASE.append([{"schedule": beta_schedule}, (2, 6, 16, 16, 16), (2, 6, 16, 16, 16)])
-
-TEST_CASES = TEST_2D_CASE + TEST_3D_CASE
-
-
-class TestDDPMScheduler(unittest.TestCase):
- @parameterized.expand(TEST_CASES)
- def test_add_noise_2d_shape(self, input_param, input_shape, expected_shape):
- scheduler = PNDMScheduler(**input_param)
- original_sample = torch.zeros(input_shape)
- noise = torch.randn_like(original_sample)
- timesteps = torch.randint(0, scheduler.num_train_timesteps, (original_sample.shape[0],)).long()
- noisy = scheduler.add_noise(original_samples=original_sample, noise=noise, timesteps=timesteps)
- self.assertEqual(noisy.shape, expected_shape)
-
- @parameterized.expand(TEST_CASES)
- def test_step_shape(self, input_param, input_shape, expected_shape):
- scheduler = PNDMScheduler(**input_param)
- scheduler.set_timesteps(600)
- model_output = torch.randn(input_shape)
- sample = torch.randn(input_shape)
- output_step = scheduler.step(model_output=model_output, timestep=500, sample=sample)
- self.assertEqual(output_step[0].shape, expected_shape)
- self.assertEqual(output_step[1], None)
-
- def test_set_timesteps(self):
- scheduler = PNDMScheduler(num_train_timesteps=1000, skip_prk_steps=True)
- scheduler.set_timesteps(num_inference_steps=100)
- self.assertEqual(scheduler.num_inference_steps, 100)
- self.assertEqual(len(scheduler.timesteps), 100)
-
- def test_set_timesteps_prk(self):
- scheduler = PNDMScheduler(num_train_timesteps=1000, skip_prk_steps=False)
- scheduler.set_timesteps(num_inference_steps=100)
- self.assertEqual(scheduler.num_inference_steps, 109)
- self.assertEqual(len(scheduler.timesteps), 109)
-
- def test_set_timesteps_with_num_inference_steps_bigger_than_num_train_timesteps(self):
- scheduler = PNDMScheduler(num_train_timesteps=1000)
- with self.assertRaises(ValueError):
- scheduler.set_timesteps(num_inference_steps=2000)
-
-
-if __name__ == "__main__":
- unittest.main()
diff --git a/tests/test_selfattention.py b/tests/test_selfattention.py
deleted file mode 100644
index d5081981..00000000
--- a/tests/test_selfattention.py
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-import unittest
-
-import torch
-from monai.networks import eval_mode
-from parameterized import parameterized
-
-from generative.networks.blocks.selfattention import SABlock
-
-TEST_CASE_SABLOCK = [
- [
- {"hidden_size": 16, "num_heads": 8, "dropout_rate": 0.2, "causal": False, "sequence_length": None},
- (2, 4, 16),
- (2, 4, 16),
- ],
- [
- {"hidden_size": 16, "num_heads": 8, "dropout_rate": 0.2, "causal": True, "sequence_length": 4},
- (2, 4, 16),
- (2, 4, 16),
- ],
-]
-
-
-class TestResBlock(unittest.TestCase):
- @parameterized.expand(TEST_CASE_SABLOCK)
- def test_shape(self, input_param, input_shape, expected_shape):
- net = SABlock(**input_param)
- with eval_mode(net):
- result = net(torch.randn(input_shape))
- self.assertEqual(result.shape, expected_shape)
-
- def test_ill_arg(self):
- with self.assertRaises(ValueError):
- SABlock(hidden_size=12, num_heads=4, dropout_rate=6.0)
-
- with self.assertRaises(ValueError):
- SABlock(hidden_size=12, num_heads=4, dropout_rate=-6.0)
-
- with self.assertRaises(ValueError):
- SABlock(hidden_size=20, num_heads=8, dropout_rate=0.4)
-
- with self.assertRaises(ValueError):
- SABlock(hidden_size=12, num_heads=4, dropout_rate=0.4, causal=True, sequence_length=None)
-
-
-if __name__ == "__main__":
- unittest.main()
diff --git a/tests/test_spade_vaegan.py b/tests/test_spade_vaegan.py
deleted file mode 100644
index e030b81e..00000000
--- a/tests/test_spade_vaegan.py
+++ /dev/null
@@ -1,131 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-import unittest
-
-import numpy as np
-import torch
-from monai.networks import eval_mode
-from parameterized import parameterized
-
-from generative.networks.nets.spade_network import SPADE_Net
-
-CASE_2D = [[[2, 1, 1, 3, [64, 64], [16, 32, 64, 128], 16, True]]]
-CASE_2D_BIS = [[[2, 1, 1, 3, [64, 64], [16, 32, 64, 128], 16, True]]]
-CASE_3D = [[[3, 1, 1, 3, [64, 64, 64], [16, 32, 64, 128], 16, True]]]
-
-
-def create_semantic_data(shape: list, semantic_regions: int):
- """
- To create semantic and image mock inputs for the network.
- Args:
- shape: input shape
- semantic_regions: number of semantic regions
- Returns:
- """
- out_label = torch.zeros(shape)
- out_image = torch.zeros(shape) + torch.randn(shape) * 0.01
- for i in range(1, semantic_regions):
- shape_square = [i // np.random.choice(list(range(2, i // 2))) for i in shape]
- start_point = [np.random.choice(list(range(shape[ind] - shape_square[ind]))) for ind, i in enumerate(shape)]
- if len(shape) == 2:
- out_label[
- start_point[0] : (start_point[0] + shape_square[0]), start_point[1] : (start_point[1] + shape_square[1])
- ] = i
- base_intensity = torch.ones(shape_square) * np.random.randn()
- out_image[
- start_point[0] : (start_point[0] + shape_square[0]), start_point[1] : (start_point[1] + shape_square[1])
- ] = (base_intensity + torch.randn(shape_square) * 0.1)
- elif len(shape) == 3:
- out_label[
- start_point[0] : (start_point[0] + shape_square[0]),
- start_point[1] : (start_point[1] + shape_square[1]),
- start_point[2] : (start_point[2] + shape_square[2]),
- ] = i
- base_intensity = torch.ones(shape_square) * np.random.randn()
- out_image[
- start_point[0] : (start_point[0] + shape_square[0]),
- start_point[1] : (start_point[1] + shape_square[1]),
- start_point[2] : (start_point[2] + shape_square[2]),
- ] = (base_intensity + torch.randn(shape_square) * 0.1)
- else:
- ValueError("Supports only 2D and 3D tensors")
-
- # One hot encode label
- out_label_ = torch.zeros([semantic_regions] + list(out_label.shape))
- for ch in range(semantic_regions):
- out_label_[ch, ...] = out_label == ch
-
- return out_label_.unsqueeze(0), out_image.unsqueeze(0).unsqueeze(0)
-
-
-class TestDiffusionModelUNet2D(unittest.TestCase):
- @parameterized.expand(CASE_2D)
- def test_forward_2d(self, input_param):
- """
- Check that forward method is called correctly and output shape matches.
- """
- net = SPADE_Net(*input_param)
- in_label, in_image = create_semantic_data(input_param[4], input_param[3])
- with eval_mode(net):
- out, kld = net(in_label, in_image)
- self.assertEqual(
- False,
- True in torch.isnan(out)
- or True in torch.isinf(out)
- or True in torch.isinf(kld)
- or True in torch.isinf(kld),
- )
- self.assertEqual(list(out.shape), [1, 1, 64, 64])
-
- @parameterized.expand(CASE_2D_BIS)
- def test_encoder_decoder(self, input_param):
- """
- Check that forward method is called correctly and output shape matches.
- """
- net = SPADE_Net(*input_param)
- in_label, in_image = create_semantic_data(input_param[4], input_param[3])
- with eval_mode(net):
- out_z = net.encode(in_image)
- self.assertEqual(list(out_z.shape), [1, 16])
- out_i = net.decode(in_label, out_z)
- self.assertEqual(list(out_i.shape), [1, 1, 64, 64])
-
- @parameterized.expand(CASE_3D)
- def test_forward_3d(self, input_param):
- """
- Check that forward method is called correctly and output shape matches.
- """
- net = SPADE_Net(*input_param)
- in_label, in_image = create_semantic_data(input_param[4], input_param[3])
- with eval_mode(net):
- out, kld = net(in_label, in_image)
- self.assertEqual(
- False,
- True in torch.isnan(out)
- or True in torch.isinf(out)
- or True in torch.isinf(kld)
- or True in torch.isinf(kld),
- )
- self.assertEqual(list(out.shape), [1, 1, 64, 64, 64])
-
- def test_shape_wrong(self):
- """
- We input an input shape that isn't divisible by 2**(n downstream steps)
- """
- with self.assertRaises(ValueError):
- net = SPADE_Net(1, 1, 8, [16, 16], [16, 32, 64, 128], 16, True)
-
-
-if __name__ == "__main__":
- unittest.main()
diff --git a/tests/test_spectral_loss.py b/tests/test_spectral_loss.py
deleted file mode 100644
index 2bd2d970..00000000
--- a/tests/test_spectral_loss.py
+++ /dev/null
@@ -1,86 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-import unittest
-
-import numpy as np
-import torch
-from parameterized import parameterized
-
-from generative.losses import JukeboxLoss
-from tests.utils import test_script_save
-
-TEST_CASES = [
- [
- {"spatial_dims": 2},
- {
- "input": torch.tensor([[[[1.0, 1.0, 0.0], [0.0, 0.0, 1.0]], [[1.0, 0.0, 1.0], [0.0, 1.0, 0.0]]]]),
- "target": torch.tensor([[[[1.0, 0.0, 0.0], [0.0, 0.0, 1.0]], [[1.0, 0.0, 1.0], [0.0, 1.0, 0.0]]]]),
- },
- 0.070648,
- ],
- [
- {"spatial_dims": 2, "reduction": "sum"},
- {
- "input": torch.tensor([[[[1.0, 1.0, 0.0], [0.0, 0.0, 1.0]], [[1.0, 0.0, 1.0], [0.0, 1.0, 0.0]]]]),
- "target": torch.tensor([[[[1.0, 0.0, 0.0], [0.0, 0.0, 1.0]], [[1.0, 0.0, 1.0], [0.0, 1.0, 0.0]]]]),
- },
- 0.8478,
- ],
- [
- {"spatial_dims": 3},
- {
- "input": torch.tensor(
- [
- [
- [[[1.0, 1.0, 0.0], [0.0, 0.0, 1.0]], [[1.0, 0.0, 1.0], [0.0, 1.0, 0.0]]],
- [[[1.0, 1.0, 0.0], [0.0, 0.0, 1.0]], [[1.0, 0.0, 1.0], [0.0, 1.0, 0.0]]],
- ]
- ]
- ),
- "target": torch.tensor(
- [
- [
- [[[1.0, 0.0, 0.0], [0.0, 0.0, 1.0]], [[1.0, 0.0, 1.0], [0.0, 1.0, 0.0]]],
- [[[1.0, 1.0, 0.0], [0.0, 0.0, 1.0]], [[1.0, 0.0, 1.0], [0.0, 1.0, 0.0]]],
- ]
- ]
- ),
- },
- 0.03838,
- ],
-]
-
-
-class TestJukeboxLoss(unittest.TestCase):
- @parameterized.expand(TEST_CASES)
- def test_results(self, input_param, input_data, expected_val):
- results = JukeboxLoss(**input_param).forward(**input_data)
- np.testing.assert_allclose(results.detach().cpu().numpy(), expected_val, rtol=1e-4)
-
- def test_2d_shape(self):
- results = JukeboxLoss(spatial_dims=2, reduction="none").forward(**TEST_CASES[0][1])
- self.assertEqual(results.shape, (1, 2, 2, 3))
-
- def test_3d_shape(self):
- results = JukeboxLoss(spatial_dims=3, reduction="none").forward(**TEST_CASES[2][1])
- self.assertEqual(results.shape, (1, 2, 2, 2, 3))
-
- def test_script(self):
- loss = JukeboxLoss(spatial_dims=2)
- test_input = torch.ones(2, 1, 8, 8)
- test_script_save(loss, test_input, test_input)
-
-
-if __name__ == "__main__":
- unittest.main()
diff --git a/tests/test_transformer.py b/tests/test_transformer.py
deleted file mode 100644
index 492806b1..00000000
--- a/tests/test_transformer.py
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-import unittest
-
-import torch
-from monai.networks import eval_mode
-
-from generative.networks.nets import DecoderOnlyTransformer
-
-
-class TestDecoderOnlyTransformer(unittest.TestCase):
- def test_unconditioned_models(self):
- net = DecoderOnlyTransformer(
- num_tokens=10, max_seq_len=16, attn_layers_dim=8, attn_layers_depth=2, attn_layers_heads=2
- )
- with eval_mode(net):
- net.forward(torch.randint(0, 10, (1, 16)))
-
- def test_conditioned_models(self):
- net = DecoderOnlyTransformer(
- num_tokens=10,
- max_seq_len=16,
- attn_layers_dim=8,
- attn_layers_depth=2,
- attn_layers_heads=2,
- with_cross_attention=True,
- embedding_dropout_rate=0,
- )
- with eval_mode(net):
- net.forward(torch.randint(0, 10, (1, 16)), context=torch.randn(1, 4, 8))
-
-
-if __name__ == "__main__":
- unittest.main()
diff --git a/tests/test_vector_quantizer.py b/tests/test_vector_quantizer.py
deleted file mode 100644
index d4c9e209..00000000
--- a/tests/test_vector_quantizer.py
+++ /dev/null
@@ -1,82 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-import unittest
-
-import torch
-
-from generative.networks.layers import EMAQuantizer, VectorQuantizer
-
-
-class TestEMA(unittest.TestCase):
- def test_ema_shape(self):
- layer = EMAQuantizer(spatial_dims=2, num_embeddings=16, embedding_dim=8)
- input_shape = (1, 8, 8, 8)
- x = torch.randn(input_shape)
- layer = layer.train()
- outputs = layer(x)
- self.assertEqual(outputs[0].shape, input_shape)
- self.assertEqual(outputs[2].shape, (1, 8, 8))
-
- layer = layer.eval()
- outputs = layer(x)
- self.assertEqual(outputs[0].shape, input_shape)
- self.assertEqual(outputs[2].shape, (1, 8, 8))
-
- def test_ema_quantize(self):
- layer = EMAQuantizer(spatial_dims=2, num_embeddings=16, embedding_dim=8)
- input_shape = (1, 8, 8, 8)
- x = torch.randn(input_shape)
- outputs = layer.quantize(x)
- self.assertEqual(outputs[0].shape, (64, 8)) # (HxW, C)
- self.assertEqual(outputs[1].shape, (64, 16)) # (HxW, E)
- self.assertEqual(outputs[2].shape, (1, 8, 8)) # (1, H, W)
-
- def test_ema(self):
- layer = EMAQuantizer(spatial_dims=2, num_embeddings=2, embedding_dim=2, epsilon=0, decay=0)
- original_weight_0 = layer.embedding.weight[0].clone()
- original_weight_1 = layer.embedding.weight[1].clone()
- x_0 = original_weight_0
- x_0 = x_0.unsqueeze(0).unsqueeze(-1).unsqueeze(-1)
- x_0 = x_0.repeat(1, 1, 1, 2) + 0.001
-
- x_1 = original_weight_1
- x_1 = x_1.unsqueeze(0).unsqueeze(-1).unsqueeze(-1)
- x_1 = x_1.repeat(1, 1, 1, 2)
-
- x = torch.cat([x_0, x_1], dim=0)
- layer = layer.train()
- _ = layer(x)
-
- self.assertTrue(all(layer.embedding.weight[0] != original_weight_0))
- self.assertTrue(all(layer.embedding.weight[1] == original_weight_1))
-
-
-class TestVectorQuantizer(unittest.TestCase):
- def test_vector_quantizer_shape(self):
- layer = VectorQuantizer(EMAQuantizer(spatial_dims=2, num_embeddings=16, embedding_dim=8))
- input_shape = (1, 8, 8, 8)
- x = torch.randn(input_shape)
- outputs = layer(x)
- self.assertEqual(outputs[1].shape, input_shape)
-
- def test_vector_quantizer_quantize(self):
- layer = VectorQuantizer(EMAQuantizer(spatial_dims=2, num_embeddings=16, embedding_dim=8))
- input_shape = (1, 8, 8, 8)
- x = torch.randn(input_shape)
- outputs = layer.quantize(x)
- self.assertEqual(outputs.shape, (1, 8, 8))
-
-
-if __name__ == "__main__":
- unittest.main()
diff --git a/tests/test_vqvae.py b/tests/test_vqvae.py
deleted file mode 100644
index d2e17636..00000000
--- a/tests/test_vqvae.py
+++ /dev/null
@@ -1,272 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-import unittest
-
-import torch
-from monai.networks import eval_mode
-from parameterized import parameterized
-
-from generative.networks.nets.vqvae import VQVAE
-
-TEST_CASES = [
- [
- {
- "spatial_dims": 2,
- "in_channels": 1,
- "out_channels": 1,
- "num_channels": (4, 4),
- "num_res_layers": 1,
- "num_res_channels": (4, 4),
- "downsample_parameters": ((2, 4, 1, 1),) * 2,
- "upsample_parameters": ((2, 4, 1, 1, 0),) * 2,
- "num_embeddings": 8,
- "embedding_dim": 8,
- },
- (1, 1, 8, 8),
- (1, 1, 8, 8),
- ],
- [
- {
- "spatial_dims": 2,
- "in_channels": 1,
- "out_channels": 1,
- "num_channels": (4, 4),
- "num_res_layers": 1,
- "num_res_channels": 4,
- "downsample_parameters": ((2, 4, 1, 1),) * 2,
- "upsample_parameters": ((2, 4, 1, 1, 0),) * 2,
- "num_embeddings": 8,
- "embedding_dim": 8,
- },
- (1, 1, 8, 8),
- (1, 1, 8, 8),
- ],
- [
- {
- "spatial_dims": 2,
- "in_channels": 1,
- "out_channels": 1,
- "num_channels": (4, 4),
- "num_res_layers": 1,
- "num_res_channels": (4, 4),
- "downsample_parameters": (2, 4, 1, 1),
- "upsample_parameters": ((2, 4, 1, 1, 0),) * 2,
- "num_embeddings": 8,
- "embedding_dim": 8,
- },
- (1, 1, 8, 8),
- (1, 1, 8, 8),
- ],
- [
- {
- "spatial_dims": 2,
- "in_channels": 1,
- "out_channels": 1,
- "num_channels": (4, 4),
- "num_res_layers": 1,
- "num_res_channels": (4, 4),
- "downsample_parameters": ((2, 4, 1, 1),) * 2,
- "upsample_parameters": (2, 4, 1, 1, 0),
- "num_embeddings": 8,
- "embedding_dim": 8,
- },
- (1, 1, 8, 8),
- (1, 1, 8, 8),
- ],
-]
-
-TEST_LATENT_SHAPE = {
- "spatial_dims": 2,
- "in_channels": 1,
- "out_channels": 1,
- "downsample_parameters": ((2, 4, 1, 1),) * 2,
- "upsample_parameters": ((2, 4, 1, 1, 0),) * 2,
- "num_res_layers": 1,
- "num_channels": (8, 8),
- "num_res_channels": (8, 8),
- "num_embeddings": 16,
- "embedding_dim": 8,
-}
-
-
-class TestVQVAE(unittest.TestCase):
- @parameterized.expand(TEST_CASES)
- def test_shape(self, input_param, input_shape, expected_shape):
- device = "cuda" if torch.cuda.is_available() else "cpu"
-
- net = VQVAE(**input_param).to(device)
-
- with eval_mode(net):
- result, _ = net(torch.randn(input_shape).to(device))
-
- self.assertEqual(result.shape, expected_shape)
-
- @parameterized.expand(TEST_CASES)
- def test_shape_with_checkpoint(self, input_param, input_shape, expected_shape):
- device = "cuda" if torch.cuda.is_available() else "cpu"
- input_param = input_param.copy()
- input_param.update({"use_checkpointing": True})
-
- net = VQVAE(**input_param).to(device)
-
- with eval_mode(net):
- result, _ = net(torch.randn(input_shape).to(device))
-
- self.assertEqual(result.shape, expected_shape)
-
- # Removed this test case since TorchScript currently does not support activation checkpoint.
- # def test_script(self):
- # net = VQVAE(
- # spatial_dims=2,
- # in_channels=1,
- # out_channels=1,
- # downsample_parameters=((2, 4, 1, 1),) * 2,
- # upsample_parameters=((2, 4, 1, 1, 0),) * 2,
- # num_res_layers=1,
- # num_channels=(8, 8),
- # num_res_channels=(8, 8),
- # num_embeddings=16,
- # embedding_dim=8,
- # ddp_sync=False,
- # )
- # test_data = torch.randn(1, 1, 16, 16)
- # test_script_save(net, test_data)
-
- def test_num_channels_not_same_size_of_num_res_channels(self):
- with self.assertRaises(ValueError):
- VQVAE(
- spatial_dims=2,
- in_channels=1,
- out_channels=1,
- num_channels=(16, 16),
- num_res_channels=(16, 16, 16),
- downsample_parameters=((2, 4, 1, 1),) * 2,
- upsample_parameters=((2, 4, 1, 1, 0),) * 2,
- )
-
- def test_num_channels_not_same_size_of_downsample_parameters(self):
- with self.assertRaises(ValueError):
- VQVAE(
- spatial_dims=2,
- in_channels=1,
- out_channels=1,
- num_channels=(16, 16),
- num_res_channels=(16, 16),
- downsample_parameters=((2, 4, 1, 1),) * 3,
- upsample_parameters=((2, 4, 1, 1, 0),) * 2,
- )
-
- def test_num_channels_not_same_size_of_upsample_parameters(self):
- with self.assertRaises(ValueError):
- VQVAE(
- spatial_dims=2,
- in_channels=1,
- out_channels=1,
- num_channels=(16, 16),
- num_res_channels=(16, 16),
- downsample_parameters=((2, 4, 1, 1),) * 2,
- upsample_parameters=((2, 4, 1, 1, 0),) * 3,
- )
-
- def test_downsample_parameters_not_sequence_or_int(self):
- with self.assertRaises(ValueError):
- VQVAE(
- spatial_dims=2,
- in_channels=1,
- out_channels=1,
- num_channels=(16, 16),
- num_res_channels=(16, 16, 16),
- downsample_parameters=(("test", 4, 1, 1),) * 2,
- upsample_parameters=((2, 4, 1, 1, 0),) * 2,
- )
-
- def test_upsample_parameters_not_sequence_or_int(self):
- with self.assertRaises(ValueError):
- VQVAE(
- spatial_dims=2,
- in_channels=1,
- out_channels=1,
- num_channels=(16, 16),
- num_res_channels=(16, 16, 16),
- downsample_parameters=((2, 4, 1, 1),) * 2,
- upsample_parameters=(("test", 4, 1, 1, 0),) * 2,
- )
-
- def test_downsample_parameter_length_different_4(self):
- with self.assertRaises(ValueError):
- VQVAE(
- spatial_dims=2,
- in_channels=1,
- out_channels=1,
- num_channels=(16, 16),
- num_res_channels=(16, 16, 16),
- downsample_parameters=((2, 4, 1),) * 2,
- upsample_parameters=((2, 4, 1, 1, 0),) * 3,
- )
-
- def test_upsample_parameter_length_different_5(self):
- with self.assertRaises(ValueError):
- VQVAE(
- spatial_dims=2,
- in_channels=1,
- out_channels=1,
- num_channels=(16, 16),
- num_res_channels=(16, 16, 16),
- downsample_parameters=((2, 4, 1, 1),) * 2,
- upsample_parameters=((2, 4, 1, 1, 0, 1),) * 3,
- )
-
- def test_encode_shape(self):
- device = "cuda" if torch.cuda.is_available() else "cpu"
-
- net = VQVAE(**TEST_LATENT_SHAPE).to(device)
-
- with eval_mode(net):
- latent = net.encode(torch.randn(1, 1, 32, 32).to(device))
-
- self.assertEqual(latent.shape, (1, 8, 8, 8))
-
- def test_index_quantize_shape(self):
- device = "cuda" if torch.cuda.is_available() else "cpu"
-
- net = VQVAE(**TEST_LATENT_SHAPE).to(device)
-
- with eval_mode(net):
- latent = net.index_quantize(torch.randn(1, 1, 32, 32).to(device))
-
- self.assertEqual(latent.shape, (1, 8, 8))
-
- def test_decode_shape(self):
- device = "cuda" if torch.cuda.is_available() else "cpu"
-
- net = VQVAE(**TEST_LATENT_SHAPE).to(device)
-
- with eval_mode(net):
- latent = net.decode(torch.randn(1, 8, 8, 8).to(device))
-
- self.assertEqual(latent.shape, (1, 1, 32, 32))
-
- def test_decode_samples_shape(self):
- device = "cuda" if torch.cuda.is_available() else "cpu"
-
- net = VQVAE(**TEST_LATENT_SHAPE).to(device)
-
- with eval_mode(net):
- latent = net.decode_samples(torch.randint(low=0, high=16, size=(1, 8, 8)).to(device))
-
- self.assertEqual(latent.shape, (1, 1, 32, 32))
-
-
-if __name__ == "__main__":
- unittest.main()
diff --git a/tests/test_vqvaetransformer_inferer.py b/tests/test_vqvaetransformer_inferer.py
deleted file mode 100644
index 7ec9b687..00000000
--- a/tests/test_vqvaetransformer_inferer.py
+++ /dev/null
@@ -1,284 +0,0 @@
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-import unittest
-
-import torch
-from parameterized import parameterized
-
-from generative.inferers import VQVAETransformerInferer
-from generative.networks.nets import VQVAE, DecoderOnlyTransformer
-from generative.utils.ordering import Ordering, OrderingType
-
-TEST_CASES = [
- [
- {
- "spatial_dims": 2,
- "in_channels": 1,
- "out_channels": 1,
- "num_channels": (8, 8),
- "num_res_channels": (8, 8),
- "downsample_parameters": ((2, 4, 1, 1),) * 2,
- "upsample_parameters": ((2, 4, 1, 1, 0),) * 2,
- "num_res_layers": 1,
- "num_embeddings": 16,
- "embedding_dim": 8,
- },
- {
- "num_tokens": 16 + 1,
- "max_seq_len": 4,
- "attn_layers_dim": 4,
- "attn_layers_depth": 2,
- "attn_layers_heads": 1,
- "with_cross_attention": False,
- },
- {"ordering_type": OrderingType.RASTER_SCAN.value, "spatial_dims": 2, "dimensions": (2, 2, 2)},
- (2, 1, 8, 8),
- (2, 4, 17),
- (2, 2, 2),
- ],
- [
- {
- "spatial_dims": 3,
- "in_channels": 1,
- "out_channels": 1,
- "num_channels": (8, 8),
- "num_res_channels": (8, 8),
- "downsample_parameters": ((2, 4, 1, 1),) * 2,
- "upsample_parameters": ((2, 4, 1, 1, 0),) * 2,
- "num_res_layers": 1,
- "num_embeddings": 16,
- "embedding_dim": 8,
- },
- {
- "num_tokens": 16 + 1,
- "max_seq_len": 8,
- "attn_layers_dim": 4,
- "attn_layers_depth": 2,
- "attn_layers_heads": 1,
- "with_cross_attention": False,
- },
- {"ordering_type": OrderingType.RASTER_SCAN.value, "spatial_dims": 3, "dimensions": (2, 2, 2, 2)},
- (2, 1, 8, 8, 8),
- (2, 8, 17),
- (2, 2, 2, 2),
- ],
-]
-
-
-class TestVQVAETransformerInferer(unittest.TestCase):
- @parameterized.expand(TEST_CASES)
- def test_prediction_shape(
- self, stage_1_params, stage_2_params, ordering_params, input_shape, logits_shape, latent_shape
- ):
- stage_1 = VQVAE(**stage_1_params)
- stage_2 = DecoderOnlyTransformer(**stage_2_params)
- ordering = Ordering(**ordering_params)
-
- device = "cuda:0" if torch.cuda.is_available() else "cpu"
- stage_1.to(device)
- stage_2.to(device)
- stage_1.eval()
- stage_2.eval()
-
- input = torch.randn(input_shape).to(device)
-
- inferer = VQVAETransformerInferer()
- prediction = inferer(inputs=input, vqvae_model=stage_1, transformer_model=stage_2, ordering=ordering)
- self.assertEqual(prediction.shape, logits_shape)
-
- @parameterized.expand(TEST_CASES)
- def test_prediction_shape_shorter_sequence(
- self, stage_1_params, stage_2_params, ordering_params, input_shape, logits_shape, latent_shape
- ):
- stage_1 = VQVAE(**stage_1_params)
- max_seq_len = 3
- stage_2_params_shorter = dict(stage_2_params)
- stage_2_params_shorter["max_seq_len"] = max_seq_len
- stage_2 = DecoderOnlyTransformer(**stage_2_params_shorter)
- ordering = Ordering(**ordering_params)
-
- device = "cuda:0" if torch.cuda.is_available() else "cpu"
- stage_1.to(device)
- stage_2.to(device)
- stage_1.eval()
- stage_2.eval()
-
- input = torch.randn(input_shape).to(device)
-
- inferer = VQVAETransformerInferer()
- prediction = inferer(inputs=input, vqvae_model=stage_1, transformer_model=stage_2, ordering=ordering)
- cropped_logits_shape = (logits_shape[0], max_seq_len, logits_shape[2])
- self.assertEqual(prediction.shape, cropped_logits_shape)
-
- def test_sample(self):
- stage_1 = VQVAE(
- spatial_dims=2,
- in_channels=1,
- out_channels=1,
- num_channels=(8, 8),
- num_res_channels=(8, 8),
- downsample_parameters=((2, 4, 1, 1),) * 2,
- upsample_parameters=((2, 4, 1, 1, 0),) * 2,
- num_res_layers=1,
- num_embeddings=16,
- embedding_dim=8,
- )
- stage_2 = DecoderOnlyTransformer(
- num_tokens=16 + 1,
- max_seq_len=4,
- attn_layers_dim=4,
- attn_layers_depth=2,
- attn_layers_heads=1,
- with_cross_attention=False,
- )
- ordering = Ordering(ordering_type=OrderingType.RASTER_SCAN.value, spatial_dims=2, dimensions=(2, 2, 2))
-
- device = "cuda:0" if torch.cuda.is_available() else "cpu"
- stage_1.to(device)
- stage_2.to(device)
- stage_1.eval()
- stage_2.eval()
-
- inferer = VQVAETransformerInferer()
-
- starting_token = 16 # from stage_1 num_embeddings
-
- sample = inferer.sample(
- latent_spatial_dim=(2, 2),
- starting_tokens=starting_token * torch.ones((2, 1), device=device),
- vqvae_model=stage_1,
- transformer_model=stage_2,
- ordering=ordering,
- )
- self.assertEqual(sample.shape, (2, 1, 8, 8))
-
- def test_sample_shorter_sequence(self):
- stage_1 = VQVAE(
- spatial_dims=2,
- in_channels=1,
- out_channels=1,
- num_channels=(8, 8),
- num_res_channels=(8, 8),
- downsample_parameters=((2, 4, 1, 1),) * 2,
- upsample_parameters=((2, 4, 1, 1, 0),) * 2,
- num_res_layers=1,
- num_embeddings=16,
- embedding_dim=8,
- )
- stage_2 = DecoderOnlyTransformer(
- num_tokens=16 + 1,
- max_seq_len=2,
- attn_layers_dim=4,
- attn_layers_depth=2,
- attn_layers_heads=1,
- with_cross_attention=False,
- )
- ordering = Ordering(ordering_type=OrderingType.RASTER_SCAN.value, spatial_dims=2, dimensions=(2, 2, 2))
-
- device = "cuda:0" if torch.cuda.is_available() else "cpu"
- stage_1.to(device)
- stage_2.to(device)
- stage_1.eval()
- stage_2.eval()
-
- inferer = VQVAETransformerInferer()
-
- starting_token = 16 # from stage_1 num_embeddings
-
- sample = inferer.sample(
- latent_spatial_dim=(2, 2),
- starting_tokens=starting_token * torch.ones((2, 1), device=device),
- vqvae_model=stage_1,
- transformer_model=stage_2,
- ordering=ordering,
- )
- self.assertEqual(sample.shape, (2, 1, 8, 8))
-
- @parameterized.expand(TEST_CASES)
- def test_get_likelihood(
- self, stage_1_params, stage_2_params, ordering_params, input_shape, logits_shape, latent_shape
- ):
- stage_1 = VQVAE(**stage_1_params)
- stage_2 = DecoderOnlyTransformer(**stage_2_params)
- ordering = Ordering(**ordering_params)
-
- device = "cuda:0" if torch.cuda.is_available() else "cpu"
- stage_1.to(device)
- stage_2.to(device)
- stage_1.eval()
- stage_2.eval()
-
- input = torch.randn(input_shape).to(device)
-
- inferer = VQVAETransformerInferer()
- likelihood = inferer.get_likelihood(
- inputs=input, vqvae_model=stage_1, transformer_model=stage_2, ordering=ordering
- )
- self.assertEqual(likelihood.shape, latent_shape)
-
- @parameterized.expand(TEST_CASES)
- def test_get_likelihood_shorter_sequence(
- self, stage_1_params, stage_2_params, ordering_params, input_shape, logits_shape, latent_shape
- ):
- stage_1 = VQVAE(**stage_1_params)
- max_seq_len = 3
- stage_2_params_shorter = dict(stage_2_params)
- stage_2_params_shorter["max_seq_len"] = max_seq_len
- stage_2 = DecoderOnlyTransformer(**stage_2_params_shorter)
- ordering = Ordering(**ordering_params)
-
- device = "cuda:0" if torch.cuda.is_available() else "cpu"
- stage_1.to(device)
- stage_2.to(device)
- stage_1.eval()
- stage_2.eval()
-
- input = torch.randn(input_shape).to(device)
-
- inferer = VQVAETransformerInferer()
- likelihood = inferer.get_likelihood(
- inputs=input, vqvae_model=stage_1, transformer_model=stage_2, ordering=ordering
- )
- self.assertEqual(likelihood.shape, latent_shape)
-
- @parameterized.expand(TEST_CASES)
- def test_get_likelihood_resampling(
- self, stage_1_params, stage_2_params, ordering_params, input_shape, logits_shape, latent_shape
- ):
- stage_1 = VQVAE(**stage_1_params)
- stage_2 = DecoderOnlyTransformer(**stage_2_params)
- ordering = Ordering(**ordering_params)
-
- device = "cuda:0" if torch.cuda.is_available() else "cpu"
- stage_1.to(device)
- stage_2.to(device)
- stage_1.eval()
- stage_2.eval()
-
- input = torch.randn(input_shape).to(device)
-
- inferer = VQVAETransformerInferer()
- likelihood = inferer.get_likelihood(
- inputs=input,
- vqvae_model=stage_1,
- transformer_model=stage_2,
- ordering=ordering,
- resample_latent_likelihoods=True,
- resample_interpolation_mode="nearest",
- )
- self.assertEqual(likelihood.shape, input_shape)
-
-
-if __name__ == "__main__":
- unittest.main()
diff --git a/tests/utils.py b/tests/utils.py
deleted file mode 100644
index c2c81dde..00000000
--- a/tests/utils.py
+++ /dev/null
@@ -1,819 +0,0 @@
-# COPIED FROM https://github.com/Project-MONAI/MONAI/blob/fdd07f36ecb91cfcd491533f4792e1a67a9f89fc/tests/utils.py
-# ---------------------------------------------------------------
-#
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-from __future__ import annotations
-
-import copy
-import datetime
-import functools
-import importlib
-import json
-import operator
-import os
-import queue
-import ssl
-import subprocess
-import sys
-import tempfile
-import time
-import traceback
-import unittest
-import warnings
-from contextlib import contextmanager
-from functools import partial, reduce
-from subprocess import PIPE, Popen
-from typing import Callable
-from urllib.error import ContentTooShortError, HTTPError
-
-import numpy as np
-import torch
-import torch.distributed as dist
-from monai.apps.utils import download_url
-from monai.config import NdarrayTensor
-from monai.config.deviceconfig import USE_COMPILED
-from monai.config.type_definitions import NdarrayOrTensor
-from monai.data import create_test_image_2d, create_test_image_3d
-from monai.data.meta_tensor import MetaTensor, get_track_meta
-from monai.networks import convert_to_torchscript
-from monai.utils import optional_import
-from monai.utils.module import pytorch_after, version_leq
-from monai.utils.type_conversion import convert_data_type
-
-nib, _ = optional_import("nibabel")
-http_error, has_req = optional_import("requests", name="HTTPError")
-
-quick_test_var = "QUICKTEST"
-_tf32_enabled = None
-_test_data_config: dict = {}
-
-
-def testing_data_config(*keys):
- """get _test_data_config[keys0][keys1]...[keysN]"""
- if not _test_data_config:
- with open(os.path.join(os.path.dirname(__file__), "testing_data", "data_config.json")) as c:
- _config = json.load(c)
- for k, v in _config.items():
- _test_data_config[k] = v
- return reduce(operator.getitem, keys, _test_data_config)
-
-
-def get_testing_algo_template_path():
- """
- a local folder to the testing algorithm template or a url to the compressed template file.
- Default to None, which effectively uses bundle_gen's ``default_algo_zip`` path.
-
- https://github.com/Project-MONAI/MONAI/blob/1.1.0/monai/apps/auto3dseg/bundle_gen.py#L380-L381
- """
- return os.environ.get("MONAI_TESTING_ALGO_TEMPLATE", None)
-
-
-def clone(data: NdarrayTensor) -> NdarrayTensor:
- """
- Clone data independent of type.
-
- Args:
- data (NdarrayTensor): This can be a Pytorch Tensor or numpy array.
-
- Returns:
- Any: Cloned data object
- """
- return copy.deepcopy(data)
-
-
-def assert_allclose(
- actual: NdarrayOrTensor,
- desired: NdarrayOrTensor,
- type_test: bool | str = True,
- device_test: bool = False,
- *args,
- **kwargs,
-):
- """
- Assert that types and all values of two data objects are close.
-
- Args:
- actual: Pytorch Tensor or numpy array for comparison.
- desired: Pytorch Tensor or numpy array to compare against.
- type_test: whether to test that `actual` and `desired` are both numpy arrays or torch tensors.
- if type_test == "tensor", it checks whether the `actual` is a torch.tensor or metatensor according to
- `get_track_meta`.
- device_test: whether to test the device property.
- args: extra arguments to pass on to `np.testing.assert_allclose`.
- kwargs: extra arguments to pass on to `np.testing.assert_allclose`.
-
-
- """
- if isinstance(type_test, str) and type_test == "tensor":
- if get_track_meta():
- np.testing.assert_equal(isinstance(actual, MetaTensor), True, "must be a MetaTensor")
- else:
- np.testing.assert_equal(
- isinstance(actual, torch.Tensor) and not isinstance(actual, MetaTensor), True, "must be a torch.Tensor"
- )
- elif type_test:
- # check both actual and desired are of the same type
- np.testing.assert_equal(isinstance(actual, np.ndarray), isinstance(desired, np.ndarray), "numpy type")
- np.testing.assert_equal(isinstance(actual, torch.Tensor), isinstance(desired, torch.Tensor), "torch type")
-
- if isinstance(desired, torch.Tensor) or isinstance(actual, torch.Tensor):
- if device_test:
- np.testing.assert_equal(str(actual.device), str(desired.device), "torch device check") # type: ignore
- actual = actual.detach().cpu().numpy() if isinstance(actual, torch.Tensor) else actual
- desired = desired.detach().cpu().numpy() if isinstance(desired, torch.Tensor) else desired
- np.testing.assert_allclose(actual, desired, *args, **kwargs)
-
-
-@contextmanager
-def skip_if_downloading_fails():
- try:
- yield
- except (ContentTooShortError, HTTPError, ConnectionError) + (http_error,) if has_req else () as e: # noqa: B030
- raise unittest.SkipTest(f"error while downloading: {e}") from e
- except ssl.SSLError as ssl_e:
- if "decryption failed" in str(ssl_e):
- raise unittest.SkipTest(f"SSL error while downloading: {ssl_e}") from ssl_e
- except (RuntimeError, OSError) as rt_e:
- err_str = str(rt_e)
- if any(
- k in err_str
- for k in (
- "unexpected EOF", # incomplete download
- "network issue",
- "gdown dependency", # gdown not installed
- "md5 check",
- "limit", # HTTP Error 503: Egress is over the account limit
- "authenticate",
- )
- ):
- raise unittest.SkipTest(f"error while downloading: {rt_e}") from rt_e # incomplete download
-
- raise rt_e
-
-
-def test_pretrained_networks(network, input_param, device):
- with skip_if_downloading_fails():
- return network(**input_param).to(device)
-
-
-def test_is_quick():
- return os.environ.get(quick_test_var, "").lower() == "true"
-
-
-def is_tf32_env():
- """
- The environment variable NVIDIA_TF32_OVERRIDE=0 will override any defaults
- or programmatic configuration of NVIDIA libraries, and consequently,
- cuBLAS will not accelerate FP32 computations with TF32 tensor cores.
- """
- global _tf32_enabled
- if _tf32_enabled is None:
- _tf32_enabled = False
- if (
- torch.cuda.is_available()
- and not version_leq(f"{torch.version.cuda}", "10.100")
- and os.environ.get("NVIDIA_TF32_OVERRIDE", "1") != "0"
- and torch.cuda.device_count() > 0 # at least 11.0
- ):
- try:
- # with TF32 enabled, the speed is ~8x faster, but the precision has ~2 digits less in the result
- g_gpu = torch.Generator(device="cuda")
- g_gpu.manual_seed(2147483647)
- a_full = torch.randn(1024, 1024, dtype=torch.double, device="cuda", generator=g_gpu)
- b_full = torch.randn(1024, 1024, dtype=torch.double, device="cuda", generator=g_gpu)
- _tf32_enabled = (a_full.float() @ b_full.float() - a_full @ b_full).abs().max().item() > 0.001 # 0.1713
- except BaseException:
- pass
- print(f"tf32 enabled: {_tf32_enabled}")
- return _tf32_enabled
-
-
-def skip_if_quick(obj):
- """
- Skip the unit tests if environment variable `quick_test_var=true`.
- For example, the user can skip the relevant tests by setting ``export QUICKTEST=true``.
- """
- is_quick = test_is_quick()
-
- return unittest.skipIf(is_quick, "Skipping slow tests")(obj)
-
-
-class SkipIfNoModule:
- """Decorator to be used if test should be skipped
- when optional module is not present."""
-
- def __init__(self, module_name):
- self.module_name = module_name
- self.module_missing = not optional_import(self.module_name)[1]
-
- def __call__(self, obj):
- return unittest.skipIf(self.module_missing, f"optional module not present: {self.module_name}")(obj)
-
-
-class SkipIfModule:
- """Decorator to be used if test should be skipped
- when optional module is present."""
-
- def __init__(self, module_name):
- self.module_name = module_name
- self.module_avail = optional_import(self.module_name)[1]
-
- def __call__(self, obj):
- return unittest.skipIf(self.module_avail, f"Skipping because optional module present: {self.module_name}")(obj)
-
-
-def skip_if_no_cpp_extension(obj):
- """
- Skip the unit tests if the cpp extension is not available.
- """
- return unittest.skipUnless(USE_COMPILED, "Skipping cpp extension tests")(obj)
-
-
-def skip_if_no_cuda(obj):
- """
- Skip the unit tests if torch.cuda.is_available is False.
- """
- return unittest.skipUnless(torch.cuda.is_available(), "Skipping CUDA-based tests")(obj)
-
-
-def skip_if_windows(obj):
- """
- Skip the unit tests if platform is win32.
- """
- return unittest.skipIf(sys.platform == "win32", "Skipping tests on Windows")(obj)
-
-
-def skip_if_darwin(obj):
- """
- Skip the unit tests if platform is macOS (Darwin).
- """
- return unittest.skipIf(sys.platform == "darwin", "Skipping tests on macOS/Darwin")(obj)
-
-
-class SkipIfBeforePyTorchVersion:
- """Decorator to be used if test should be skipped
- with PyTorch versions older than that given."""
-
- def __init__(self, pytorch_version_tuple):
- self.min_version = pytorch_version_tuple
- self.version_too_old = not pytorch_after(*pytorch_version_tuple)
-
- def __call__(self, obj):
- return unittest.skipIf(
- self.version_too_old, f"Skipping tests that fail on PyTorch versions before: {self.min_version}"
- )(obj)
-
-
-class SkipIfAtLeastPyTorchVersion:
- """Decorator to be used if test should be skipped
- with PyTorch versions newer than or equal to that given."""
-
- def __init__(self, pytorch_version_tuple):
- self.max_version = pytorch_version_tuple
- self.version_too_new = pytorch_after(*pytorch_version_tuple)
-
- def __call__(self, obj):
- return unittest.skipIf(
- self.version_too_new, f"Skipping tests that fail on PyTorch versions at least: {self.max_version}"
- )(obj)
-
-
-def is_main_test_process():
- ps = torch.multiprocessing.current_process()
- if not ps or not hasattr(ps, "name"):
- return False
- return ps.name.startswith("Main")
-
-
-def has_cupy():
- """
- Returns True if the user has installed a version of cupy.
- """
- cp, has_cp = optional_import("cupy")
- if not is_main_test_process():
- return has_cp # skip the check if we are running in subprocess
- if not has_cp:
- return False
- try: # test cupy installation with a basic example
- x = cp.arange(6, dtype="f").reshape(2, 3)
- y = cp.arange(3, dtype="f")
- kernel = cp.ElementwiseKernel(
- "float32 x, float32 y", "float32 z", """ if (x - 2 > y) { z = x * y; } else { z = x + y; } """, "my_kernel"
- )
- flag = kernel(x, y)[0, 0] == 0
- del x, y, kernel
- cp.get_default_memory_pool().free_all_blocks()
- return flag
- except Exception:
- return False
-
-
-HAS_CUPY = has_cupy()
-
-
-def make_nifti_image(
- array: NdarrayOrTensor, affine=None, dir=None, fname=None, suffix=".nii.gz", verbose=False, dtype=float
-):
- """
- Create a temporary nifti image on the disk and return the image name.
- User is responsible for deleting the temporary file when done with it.
- """
- if isinstance(array, torch.Tensor):
- array, *_ = convert_data_type(array, np.ndarray)
- if isinstance(affine, torch.Tensor):
- affine, *_ = convert_data_type(affine, np.ndarray)
- if affine is None:
- affine = np.eye(4)
- test_image = nib.Nifti1Image(array.astype(dtype), affine) # type: ignore
-
- # if dir not given, create random. Else, make sure it exists.
- if dir is None:
- dir = tempfile.mkdtemp()
- else:
- os.makedirs(dir, exist_ok=True)
-
- # If fname not given, get random one. Else, concat dir, fname and suffix.
- if fname is None:
- temp_f, fname = tempfile.mkstemp(suffix=suffix, dir=dir)
- os.close(temp_f)
- else:
- fname = os.path.join(dir, fname + suffix)
-
- nib.save(test_image, fname)
- if verbose:
- print(f"File written: {fname}.")
- return fname
-
-
-def make_rand_affine(ndim: int = 3, random_state: np.random.RandomState | None = None):
- """Create random affine transformation (with values == -1, 0 or 1)."""
- rs = np.random.random.__self__ if random_state is None else random_state # type: ignore
-
- vals = rs.choice([-1, 1], size=ndim)
- positions = rs.choice(range(ndim), size=ndim, replace=False)
- af = np.zeros([ndim + 1, ndim + 1])
- af[ndim, ndim] = 1
- for i, (v, p) in enumerate(zip(vals, positions)):
- af[i, p] = v
- return af
-
-
-def get_arange_img(size, dtype=np.float32, offset=0):
- """
- Returns an image as a numpy array (complete with channel as dim 0)
- with contents that iterate like an arange.
- """
- n_elem = np.prod(size)
- img = np.arange(offset, offset + n_elem, dtype=dtype).reshape(size)
- return np.expand_dims(img, 0)
-
-
-class DistTestCase(unittest.TestCase):
- """
- testcase without _outcome, so that it's picklable.
- """
-
- def __getstate__(self):
- self_dict = self.__dict__.copy()
- del self_dict["_outcome"]
- return self_dict
-
- def __setstate__(self, data_dict):
- self.__dict__.update(data_dict)
-
-
-class DistCall:
- """
- Wrap a test case so that it will run in multiple processes on a single machine using `torch.distributed`.
- It is designed to be used with `tests.utils.DistTestCase`.
-
- Usage:
-
- decorate a unittest testcase method with a `DistCall` instance::
-
- class MyTests(unittest.TestCase):
- @DistCall(nnodes=1, nproc_per_node=3, master_addr="localhost")
- def test_compute(self):
- ...
-
- the `test_compute` method should trigger different worker logic according to `dist.get_rank()`.
-
- Multi-node tests require a fixed master_addr:master_port, with node_rank set manually in multiple scripts
- or from environment variable "NODE_RANK".
- """
-
- def __init__(
- self,
- nnodes: int = 1,
- nproc_per_node: int = 1,
- master_addr: str = "localhost",
- master_port: int | None = None,
- node_rank: int | None = None,
- timeout=60,
- init_method=None,
- backend: str | None = None,
- daemon: bool | None = None,
- method: str | None = "spawn",
- verbose: bool = False,
- ):
- """
-
- Args:
- nnodes: The number of nodes to use for distributed call.
- nproc_per_node: The number of processes to call on each node.
- master_addr: Master node (rank 0)'s address, should be either the IP address or the hostname of node 0.
- master_port: Master node (rank 0)'s free port.
- node_rank: The rank of the node, this could be set via environment variable "NODE_RANK".
- timeout: Timeout for operations executed against the process group.
- init_method: URL specifying how to initialize the process group.
- Default is "env://" or "file:///d:/a_temp" (windows) if unspecified.
- If ``"no_init"``, the `dist.init_process_group` must be called within the code to be tested.
- backend: The backend to use. Depending on build-time configurations,
- valid values include ``mpi``, ``gloo``, and ``nccl``.
- daemon: the process’s daemon flag.
- When daemon=None, the initial value is inherited from the creating process.
- method: set the method which should be used to start a child process.
- method can be 'fork', 'spawn' or 'forkserver'.
- verbose: whether to print NCCL debug info.
- """
- self.nnodes = int(nnodes)
- self.nproc_per_node = int(nproc_per_node)
- if self.nnodes < 1 or self.nproc_per_node < 1:
- raise ValueError(
- f"number of nodes and processes per node must be >= 1, got {self.nnodes} and {self.nproc_per_node}"
- )
- self.node_rank = int(os.environ.get("NODE_RANK", "0")) if node_rank is None else int(node_rank)
- self.master_addr = master_addr
- self.master_port = np.random.randint(10000, 20000) if master_port is None else master_port
-
- if backend is None:
- self.backend = "nccl" if torch.distributed.is_nccl_available() and torch.cuda.is_available() else "gloo"
- else:
- self.backend = backend
- self.init_method = init_method
- if self.init_method is None and sys.platform == "win32":
- self.init_method = "file:///d:/a_temp"
- self.timeout = datetime.timedelta(0, timeout)
- self.daemon = daemon
- self.method = method
- self.verbose = verbose
-
- def run_process(self, func, local_rank, args, kwargs, results):
- _env = os.environ.copy() # keep the original system env
- try:
- os.environ["MASTER_ADDR"] = self.master_addr
- os.environ["MASTER_PORT"] = str(self.master_port)
- os.environ["LOCAL_RANK"] = str(local_rank)
- if self.verbose:
- os.environ["NCCL_DEBUG"] = "INFO"
- os.environ["NCCL_DEBUG_SUBSYS"] = "ALL"
- os.environ["NCCL_BLOCKING_WAIT"] = str(1)
- os.environ["OMP_NUM_THREADS"] = str(1)
- os.environ["WORLD_SIZE"] = str(self.nproc_per_node * self.nnodes)
- os.environ["RANK"] = str(self.nproc_per_node * self.node_rank + local_rank)
-
- if torch.cuda.is_available():
- torch.cuda.set_device(int(local_rank)) # using device ids from CUDA_VISIBILE_DEVICES
-
- if self.init_method != "no_init":
- dist.init_process_group(
- backend=self.backend,
- init_method=self.init_method,
- timeout=self.timeout,
- world_size=int(os.environ["WORLD_SIZE"]),
- rank=int(os.environ["RANK"]),
- )
- func(*args, **kwargs)
- # the primary node lives longer to
- # avoid _store_based_barrier, RuntimeError: Broken pipe
- # as the TCP store daemon is on the rank 0
- if int(os.environ["RANK"]) == 0:
- time.sleep(0.1)
- results.put(True)
- except Exception as e:
- results.put(False)
- raise e
- finally:
- os.environ.clear()
- os.environ.update(_env)
- try:
- dist.destroy_process_group()
- except RuntimeError as e:
- warnings.warn(f"While closing process group: {e}.")
-
- def __call__(self, obj):
- if not torch.distributed.is_available():
- return unittest.skipIf(True, "Skipping distributed tests because not torch.distributed.is_available()")(obj)
- if torch.cuda.is_available() and torch.cuda.device_count() < self.nproc_per_node:
- return unittest.skipIf(
- True,
- f"Skipping distributed tests because it requires {self.nnodes} devices "
- f"but got {torch.cuda.device_count()}",
- )(obj)
-
- _cache_original_func(obj)
-
- @functools.wraps(obj)
- def _wrapper(*args, **kwargs):
- tmp = torch.multiprocessing.get_context(self.method)
- processes = []
- results = tmp.Queue()
- func = _call_original_func
- args = [obj.__name__, obj.__module__] + list(args)
- for proc_rank in range(self.nproc_per_node):
- p = tmp.Process(
- target=self.run_process, args=(func, proc_rank, args, kwargs, results), daemon=self.daemon
- )
- p.start()
- processes.append(p)
- for p in processes:
- p.join()
- assert results.get(), "Distributed call failed."
- _del_original_func(obj)
-
- return _wrapper
-
-
-class TimedCall:
- """
- Wrap a test case so that it will run in a new process, raises a TimeoutError if the decorated method takes
- more than `seconds` to finish. It is designed to be used with `tests.utils.DistTestCase`.
- """
-
- def __init__(
- self,
- seconds: float = 60.0,
- daemon: bool | None = None,
- method: str | None = "spawn",
- force_quit: bool = True,
- skip_timing=False,
- ):
- """
-
- Args:
- seconds: timeout seconds.
- daemon: the process’s daemon flag.
- When daemon=None, the initial value is inherited from the creating process.
- method: set the method which should be used to start a child process.
- method can be 'fork', 'spawn' or 'forkserver'.
- force_quit: whether to terminate the child process when `seconds` elapsed.
- skip_timing: whether to skip the timing constraint.
- this is useful to include some system conditions such as
- `torch.cuda.is_available()`.
- """
- self.timeout_seconds = seconds
- self.daemon = daemon
- self.force_quit = force_quit
- self.skip_timing = skip_timing
- self.method = method
-
- @staticmethod
- def run_process(func, args, kwargs, results):
- try:
- output = func(*args, **kwargs)
- results.put(output)
- except Exception as e:
- e.traceback = traceback.format_exc()
- results.put(e)
-
- def __call__(self, obj):
- if self.skip_timing:
- return obj
-
- _cache_original_func(obj)
-
- @functools.wraps(obj)
- def _wrapper(*args, **kwargs):
- tmp = torch.multiprocessing.get_context(self.method)
- func = _call_original_func
- args = [obj.__name__, obj.__module__] + list(args)
- results = tmp.Queue()
- p = tmp.Process(target=TimedCall.run_process, args=(func, args, kwargs, results), daemon=self.daemon)
- p.start()
-
- p.join(timeout=self.timeout_seconds)
-
- timeout_error = None
- try:
- if p.is_alive():
- # create an Exception
- timeout_error = torch.multiprocessing.TimeoutError(
- f"'{obj.__name__}' in '{obj.__module__}' did not finish in {self.timeout_seconds}s."
- )
- if self.force_quit:
- p.terminate()
- else:
- warnings.warn(
- f"TimedCall: deadline ({self.timeout_seconds}s) "
- f"reached but waiting for {obj.__name__} to finish."
- )
- finally:
- p.join()
-
- _del_original_func(obj)
- res = None
- try:
- res = results.get(block=False)
- except queue.Empty: # no result returned, took too long
- pass
- if isinstance(res, Exception): # other errors from obj
- if hasattr(res, "traceback"):
- raise RuntimeError(res.traceback) from res
- raise res
- if timeout_error: # no force_quit finished
- raise timeout_error
- return res
-
- return _wrapper
-
-
-_original_funcs = {}
-
-
-def _cache_original_func(obj) -> None:
- """cache the original function by name, so that the decorator doesn't shadow it."""
- _original_funcs[obj.__name__] = obj
-
-
-def _del_original_func(obj):
- """pop the original function from cache."""
- _original_funcs.pop(obj.__name__, None)
- if torch.cuda.is_available(): # clean up the cached function
- torch.cuda.synchronize()
- torch.cuda.empty_cache()
-
-
-def _call_original_func(name, module, *args, **kwargs):
- if name not in _original_funcs:
- _original_module = importlib.import_module(module) # reimport, refresh _original_funcs
- if not hasattr(_original_module, name):
- # refresh module doesn't work
- raise RuntimeError(f"Could not recover the original {name} from {module}: {_original_funcs}.")
- f = _original_funcs[name]
- return f(*args, **kwargs)
-
-
-class NumpyImageTestCase2D(unittest.TestCase):
- im_shape = (128, 64)
- input_channels = 1
- output_channels = 4
- num_classes = 3
-
- def setUp(self):
- im, msk = create_test_image_2d(
- self.im_shape[0], self.im_shape[1], num_objs=4, rad_max=20, noise_max=0.0, num_seg_classes=self.num_classes
- )
-
- self.imt = im[None, None]
- self.seg1 = (msk[None, None] > 0).astype(np.float32)
- self.segn = msk[None, None]
-
-
-class TorchImageTestCase2D(NumpyImageTestCase2D):
- def setUp(self):
- NumpyImageTestCase2D.setUp(self)
- self.imt = torch.tensor(self.imt)
- self.seg1 = torch.tensor(self.seg1)
- self.segn = torch.tensor(self.segn)
-
-
-class NumpyImageTestCase3D(unittest.TestCase):
- im_shape = (64, 48, 80)
- input_channels = 1
- output_channels = 4
- num_classes = 3
-
- def setUp(self):
- im, msk = create_test_image_3d(
- self.im_shape[0],
- self.im_shape[1],
- self.im_shape[2],
- num_objs=4,
- rad_max=20,
- noise_max=0.0,
- num_seg_classes=self.num_classes,
- )
-
- self.imt = im[None, None]
- self.seg1 = (msk[None, None] > 0).astype(np.float32)
- self.segn = msk[None, None]
-
-
-class TorchImageTestCase3D(NumpyImageTestCase3D):
- def setUp(self):
- NumpyImageTestCase3D.setUp(self)
- self.imt = torch.tensor(self.imt)
- self.seg1 = torch.tensor(self.seg1)
- self.segn = torch.tensor(self.segn)
-
-
-def test_script_save(net, *inputs, device=None, rtol=1e-4, atol=0.0):
- """
- Test the ability to save `net` as a Torchscript object, reload it, and apply inference. The value `inputs` is
- forward-passed through the original and loaded copy of the network and their results returned.
- The forward pass for both is done without gradient accumulation.
-
- The test will be performed with CUDA if available, else CPU.
- """
- # TODO: would be nice to use GPU if available, but it currently causes CI failures.
- device = "cpu"
- try:
- with tempfile.TemporaryDirectory() as tempdir:
- convert_to_torchscript(
- model=net,
- filename_or_obj=os.path.join(tempdir, "model.ts"),
- verify=True,
- inputs=inputs,
- device=device,
- rtol=rtol,
- atol=atol,
- )
- except (RuntimeError, AttributeError):
- if sys.version_info.major == 3 and sys.version_info.minor == 11:
- warnings.warn("skipping py 3.11")
- return
-
-
-def download_url_or_skip_test(*args, **kwargs):
- """``download_url`` and skip the tests if any downloading error occurs."""
- with skip_if_downloading_fails():
- download_url(*args, **kwargs)
-
-
-def query_memory(n=2):
- """
- Find best n idle devices and return a string of device ids using the `nvidia-smi` command.
- """
- bash_string = "nvidia-smi --query-gpu=power.draw,temperature.gpu,memory.used --format=csv,noheader,nounits"
-
- try:
- p1 = Popen(bash_string.split(), stdout=PIPE)
- output, error = p1.communicate()
- free_memory = [x.split(",") for x in output.decode("utf-8").split("\n")[:-1]]
- free_memory = np.asarray(free_memory, dtype=float).T
- free_memory[1] += free_memory[0] # combine 0/1 column measures
- ids = np.lexsort(free_memory)[:n]
- except (TypeError, ValueError, IndexError, OSError):
- ids = range(n) if isinstance(n, int) else []
- return ",".join(f"{int(x)}" for x in ids)
-
-
-def test_local_inversion(invertible_xform, to_invert, im, dict_key=None):
- """test that invertible_xform can bring to_invert back to im"""
- im_item = im if dict_key is None else im[dict_key]
- if not isinstance(im_item, MetaTensor):
- return
- im_ref = copy.deepcopy(im)
- im_inv = invertible_xform.inverse(to_invert)
- if dict_key:
- im_inv = im_inv[dict_key]
- im_ref = im_ref[dict_key]
- np.testing.assert_array_equal(im_inv.applied_operations, [])
- assert_allclose(im_inv.shape, im_ref.shape)
- assert_allclose(im_inv.affine, im_ref.affine, atol=1e-3, rtol=1e-3)
-
-
-def command_line_tests(cmd, copy_env=True):
- test_env = os.environ.copy() if copy_env else os.environ
- print(f"CUDA_VISIBLE_DEVICES in {__file__}", test_env.get("CUDA_VISIBLE_DEVICES"))
- try:
- normal_out = subprocess.run(cmd, env=test_env, check=True, capture_output=True)
- print(repr(normal_out).replace("\\n", "\n").replace("\\t", "\t"))
- except subprocess.CalledProcessError as e:
- output = repr(e.stdout).replace("\\n", "\n").replace("\\t", "\t")
- errors = repr(e.stderr).replace("\\n", "\n").replace("\\t", "\t")
- raise RuntimeError(f"subprocess call error {e.returncode}: {errors}, {output}") from e
-
-
-TEST_TORCH_TENSORS: tuple = (torch.as_tensor,)
-if torch.cuda.is_available():
- gpu_tensor: Callable = partial(torch.as_tensor, device="cuda")
- TEST_TORCH_TENSORS = TEST_TORCH_TENSORS + (gpu_tensor,)
-
-DEFAULT_TEST_AFFINE = torch.tensor(
- [[2.0, 0.0, 0.0, 0.0], [0.0, 2.0, 0.0, 0.0], [0.0, 0.0, 2.0, 0.0], [0.0, 0.0, 0.0, 1.0]]
-)
-_metatensor_creator = partial(MetaTensor, meta={"a": "b", "affine": DEFAULT_TEST_AFFINE})
-TEST_NDARRAYS_NO_META_TENSOR: tuple[Callable] = (np.array,) + TEST_TORCH_TENSORS # type: ignore
-TEST_NDARRAYS: tuple[Callable] = TEST_NDARRAYS_NO_META_TENSOR + (_metatensor_creator,) # type: ignore
-TEST_TORCH_AND_META_TENSORS: tuple[Callable] = TEST_TORCH_TENSORS + (_metatensor_creator,) # type: ignore
-# alias for branch tests
-TEST_NDARRAYS_ALL = TEST_NDARRAYS
-
-TEST_DEVICES = [[torch.device("cpu")]]
-if torch.cuda.is_available():
- TEST_DEVICES.append([torch.device("cuda")])
-
-if __name__ == "__main__":
- print("\n", query_memory(), sep="\n") # print to stdout
- sys.exit(0)
diff --git a/tutorials/README.md b/tutorials/README.md
deleted file mode 100644
index 89f87547..00000000
--- a/tutorials/README.md
+++ /dev/null
@@ -1,113 +0,0 @@
-# MONAI Generative Models Tutorials
-This directory hosts the MONAI Generative Models tutorials.
-
-## Requirements
-To run the tutorials, you will need to install the Generative Models package.
-Besides that, most of the examples and tutorials require
-[matplotlib](https://matplotlib.org/) and [Jupyter Notebook](https://jupyter.org/).
-
-These can be installed with the following:
-
-```bash
-python -m pip install -U pip
-python -m pip install -U matplotlib
-python -m pip install -U notebook
-```
-
-Some of the examples may require optional dependencies. In case of any optional import errors,
-please install the relevant packages according to MONAI's [installation guide](https://docs.monai.io/en/latest/installation.html).
-Or install all optional requirements with the following:
-
-```bash
-pip install -r requirements-dev.txt
-```
-
-## List of notebooks and examples
-
-### Table of Contents
-1. [Diffusion Models](#1-diffusion-models)
-2. [Latent Diffusion Models](#2-latent-diffusion-models)
-3. [VQ-VAE + Transformers](#3-vq-vae--transformers)
-
-
-### 1. Diffusion Models
-
-#### Image synthesis with Diffusion Models
-
-* [Training a 3D Denoising Diffusion Probabilistic Model](./generative/3d_ddpm/3d_ddpm_tutorial.ipynb): This tutorial shows how to easily
-train a DDPM on 3D medical data. In this example, we use a downsampled version of the BraTS dataset. We will show how to
-make use of the UNet model and the Noise Scheduler necessary to train a diffusion model. Besides that, we show how to
-use the DiffusionInferer class to simplify the training and sampling processes. Finally, after training the model, we
-show how to use a Noise Scheduler with fewer timesteps to sample synthetic images.
-
-* [Training a 2D Denoising Diffusion Probabilistic Model](./generative/2d_ddpm/2d_ddpm_tutorial.ipynb): This tutorial shows how to easily
-train a DDPM on medical data. In this example, we use the MedNIST dataset, which is very suitable for beginners as a tutorial.
-
-* [Comparing different noise schedulers](./generative/2d_ddpm/2d_ddpm_compare_schedulers.ipynb): In this tutorial, we compare the
-performance of different noise schedulers. We will show how to sample a diffusion model using the DDPM, DDIM, and PNDM
-schedulers and how different numbers of timesteps affect the quality of the samples.
-
-* [Training a 2D Denoising Diffusion Probabilistic Model with different parameterisation](./generative/2d_ddpm/2d_ddpm_tutorial_v_prediction.ipynb):
-In MONAI Generative Models, we support different parameterizations for the diffusion model (epsilon, sample, and
-v-prediction). In this tutorial, we show how to train a DDPM using the v-prediction parameterization, which improves the
-stability and convergence of the model.
-
-* [Training a 2D DDPM using Pytorch Ignite](./generative/2d_ddpm/2d_ddpm_compare_schedulers.ipynb): Here, we show how to train a DDPM
-on medical data using Pytorch Ignite. We will show how to use the DiffusionPrepareBatch to prepare the model inputs and MONAI's SupervisedTrainer and SupervisedEvaluator to train DDPMs.
-
-* [Using a 2D DDPM to inpaint images](./generative/2d_ddpm/2d_ddpm_inpainting.ipynb): In this tutorial, we show how to use a DDPM to
-inpaint of 2D images from the MedNIST dataset using the RePaint method.
-
-* [Generating conditional samples with a 2D DDPM using classifier-free guidance](./generative/classifier_free_guidance/2d_ddpm_classifier_free_guidance_tutorial.ipynb):
-This tutorial shows how easily we can train a Diffusion Model and generate conditional samples using classifier-free guidance in
-the MONAI's framework.
-
-* [Training Diffusion models with Distributed Data Parallel](./generative/distributed_training/ddpm_training_ddp.py): This example shows how to execute distributed training and evaluation based on PyTorch native DistributedDataParallel
-module with torch.distributed.launch.
-
-#### Anomaly Detection with Diffusion Models
-
-* [Weakly Supervised Anomaly Detection with Implicit Guidance](./generative/anomaly_detection/2d_classifierfree_guidance_anomalydetection_tutorial.ipynb):
-This tutorial shows how to use a DDPM to perform weakly supervised anomaly detection using classifier-free (implicit) guidance based on the
-method proposed by Sanchez et al. [What is Healthy? Generative Counterfactual Diffusion for Lesion Localization](https://arxiv.org/abs/2207.12268). DGM 4 MICCAI 2022
-
-
-### 2. Latent Diffusion Models
-
-#### Image synthesis with Latent Diffusion Models
-
-* [Training a 3D Latent Diffusion Model](./generative/3d_ldm/3d_ldm_tutorial.ipynb): This tutorial shows how to train a LDM on 3D medical
-data. In this example, we use the BraTS dataset. We show how to train an AutoencoderKL and connect it to an LDM. We also
-comment on the importance of the scaling factor in the LDM used to scale the latent representation of the AEKL to a suitable
-range for the diffusion model. Finally, we show how to use the LatentDiffusionInferer class to simplify the training and sampling.
-
-* [Training a 2D Latent Diffusion Model](./generative/2d_ldm/2d_ldm_tutorial.ipynb): This tutorial shows how to train an LDM on medical
-on the MedNIST dataset. We show how to train an AutoencoderKL and connect it to an LDM.
-
-* Training Autoencoder with KL-regularization: In this section, we focus on training an AutoencoderKL on [2D](./generative/2d_autoencoderkl/2d_autoencoderkl_tutorial.ipynb) and [3D](./generative/3d_autoencoderkl/3d_autoencoderkl_tutorial.ipynb) medical data,
-that can be used as the compression model used in a Latent Diffusion Model.
-
-#### Super-resolution with Latent Diffusion Models
-
-* [Super-resolution using Stable Diffusion Upscalers method](./generative/2d_super_resolution/2d_stable_diffusion_v2_super_resolution.ipynb):
-In this tutorial, we show how to perform super-resolution on 2D images from the MedNIST dataset using the Stable
-Diffusion Upscalers method. In this example, we will show how to condition a latent diffusion model on a low-resolution image
-as well as how to use the DiffusionModelUNet's class_labels conditioning to condition the model on the level of noise added to the image
-(aka "noise conditioning augmentation")
-
-
-### 3. VQ-VAE + Transformers
-
-#### Image synthesis with VQ-VAE + Transformers
-
-* [Training a 2D VQ-VAE + Autoregressive Transformers](./generative/2d_vqvae_transformer/2d_vqvae_transformer_tutorial.ipynb): This tutorial shows how to train
-a Vector-Quantized Variation Autoencoder + Transformers on the MedNIST dataset.
-
-* Training VQ-VAEs and VQ-GANs: In this section, we show how to train Vector Quantized Variation Autoencoder (on [2D](./generative/2d_vqvae/2d_vqvae_tutorial.ipynb) and [3D](./generative/3d_autoencoderkl/3d_autoencoderkl_tutorial.ipynb) data) and
-show how to use the PatchDiscriminator class to train a [VQ-GAN](./generative/2d_vqgan/2d_vqgan_tutorial.ipynb) and improve the quality of the generated images.
-
-#### Anomaly Detection with VQ-VAE + Transformers
-
-* [Anomaly Detection with 2D VQ-VAE + Autoregressive Transformers](./generative/anomaly_detection/anomaly_detection_with_transformers.ipynb): This tutorial shows how to
- train a Vector-Quantized Variation Autoencoder + Transformers on the MedNIST dataset and use it to extract the likelihood of
-testing images to be part of the in-distribution class (used during training).
diff --git a/tutorials/generative/2d_autoencoderkl/2d_autoencoderkl_tutorial.ipynb b/tutorials/generative/2d_autoencoderkl/2d_autoencoderkl_tutorial.ipynb
deleted file mode 100644
index 2b398ee5..00000000
--- a/tutorials/generative/2d_autoencoderkl/2d_autoencoderkl_tutorial.ipynb
+++ /dev/null
@@ -1,1238 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "99d4a6b2",
- "metadata": {},
- "outputs": [],
- "source": [
- "# Copyright (c) MONAI Consortium\n",
- "# Licensed under the Apache License, Version 2.0 (the \"License\");\n",
- "# you may not use this file except in compliance with the License.\n",
- "# You may obtain a copy of the License at\n",
- "# http://www.apache.org/licenses/LICENSE-2.0\n",
- "# Unless required by applicable law or agreed to in writing, software\n",
- "# distributed under the License is distributed on an \"AS IS\" BASIS,\n",
- "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
- "# See the License for the specific language governing permissions and\n",
- "# limitations under the License."
- ]
- },
- {
- "cell_type": "markdown",
- "id": "d6ae75bf",
- "metadata": {},
- "source": [
- "# AutoencoderKL\n",
- "\n",
- "This demo is a toy example of how to use MONAI's `AutoencoderKL` class. In particular, it uses\n",
- "the Autoencoder with a Kullback-Leibler regularisation as implemented by Rombach et. al [1].\n",
- "\n",
- "[1] Rombach et. al \"High-Resolution Image Synthesis with Latent Diffusion Models\" https://arxiv.org/pdf/2112.10752.pdf\n",
- "\n",
- "\n",
- "\n",
- "This tutorial was based on:\n",
- "\n",
- "[Registration Mednist](https://github.com/Project-MONAI/tutorials/blob/main/2d_registration/registration_mednist.ipynb)\n",
- "\n",
- "[Mednist Tutorial](https://github.com/Project-MONAI/tutorials/blob/main/2d_classification/mednist_tutorial.ipynb)\n",
- "\n",
- "\n"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "2caa73e1",
- "metadata": {},
- "source": [
- "## Set up environment using Colab"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "id": "c942c848",
- "metadata": {},
- "outputs": [],
- "source": [
- "!python -c \"import monai\" || pip install -q \"monai-weekly[tqdm]\"\n",
- "!python -c \"import matplotlib\" || pip install -q matplotlib\n",
- "%matplotlib inline"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "76b639ff",
- "metadata": {},
- "source": [
- "## Setup imports"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 1,
- "id": "350736c2",
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "MONAI version: 1.2.dev2304\n",
- "Numpy version: 1.23.5\n",
- "Pytorch version: 1.13.1+cu117\n",
- "MONAI flags: HAS_EXT = False, USE_COMPILED = False, USE_META_DICT = False\n",
- "MONAI rev id: 9a57be5aab9f2c2a134768c0c146399150e247a0\n",
- "MONAI __file__: /home/vf19/PycharmProjects/GenerativeModels/venv/lib/python3.9/site-packages/monai/__init__.py\n",
- "\n",
- "Optional dependencies:\n",
- "Pytorch Ignite version: 0.4.10\n",
- "ITK version: 5.3.0\n",
- "Nibabel version: 5.0.0\n",
- "scikit-image version: 0.19.3\n",
- "Pillow version: 9.4.0\n",
- "Tensorboard version: 2.12.0\n",
- "gdown version: 4.6.3\n",
- "TorchVision version: 0.14.1+cu117\n",
- "tqdm version: 4.64.1\n",
- "lmdb version: 1.4.0\n",
- "psutil version: 5.9.4\n",
- "pandas version: 1.5.3\n",
- "einops version: 0.6.0\n",
- "transformers version: 4.21.3\n",
- "mlflow version: 2.1.1\n",
- "pynrrd version: 1.0.0\n",
- "\n",
- "For details about installing the optional dependencies, please visit:\n",
- " https://docs.monai.io/en/latest/installation.html#installing-the-recommended-dependencies\n",
- "\n"
- ]
- }
- ],
- "source": [
- "import os\n",
- "import shutil\n",
- "import tempfile\n",
- "import time\n",
- "from pathlib import Path\n",
- "import matplotlib.pyplot as plt\n",
- "import numpy as np\n",
- "import torch\n",
- "from monai import transforms\n",
- "from monai.apps import MedNISTDataset\n",
- "from monai.config import print_config\n",
- "from monai.data import DataLoader, Dataset\n",
- "from monai.networks.layers import Act\n",
- "from monai.utils import first, set_determinism\n",
- "from torch.nn import L1Loss\n",
- "from tqdm import tqdm\n",
- "\n",
- "from generative.losses import PatchAdversarialLoss, PerceptualLoss\n",
- "from generative.networks.nets import AutoencoderKL, PatchDiscriminator\n",
- "\n",
- "print_config()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "id": "c9552991",
- "metadata": {},
- "outputs": [],
- "source": [
- "# for reproducibility purposes set a seed\n",
- "set_determinism(42)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "6e3aacc9",
- "metadata": {},
- "source": [
- "## Setup a data directory and download dataset"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "4c821bb6",
- "metadata": {},
- "source": [
- "Specify a `MONAI_DATA_DIRECTORY` variable, where the data will be downloaded. If not\n",
- "specified a temporary directory will be used."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "id": "dbad31d5",
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "/tmp/tmpveta1y62\n"
- ]
- }
- ],
- "source": [
- "directory = os.environ.get(\"MONAI_DATA_DIRECTORY\")\n",
- "root_dir = tempfile.mkdtemp() if directory is None else directory\n",
- "print(root_dir)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "6cb6282d",
- "metadata": {},
- "source": [
- "### Download the training set"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 6,
- "id": "83d59e68",
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "MedNIST.tar.gz: 59.0MB [00:03, 16.5MB/s] "
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "2022-12-04 21:11:27,009 - INFO - Downloaded: /tmp/tmpveta1y62/MedNIST.tar.gz\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "\n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "2022-12-04 21:11:27,079 - INFO - Verified 'MedNIST.tar.gz', md5: 0bc7306e7427e00ad1c5526a6677552d.\n",
- "2022-12-04 21:11:27,080 - INFO - Writing into directory: /tmp/tmpveta1y62.\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Loading dataset: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47164/47164 [00:14<00:00, 3298.72it/s]\n"
- ]
- }
- ],
- "source": [
- "train_data = MedNISTDataset(root_dir=root_dir, section=\"training\", download=True, seed=0)\n",
- "train_datalist = [{\"image\": item[\"image\"]} for item in train_data.data if item[\"class_name\"] == \"Hand\"]\n",
- "image_size = 64\n",
- "train_transforms = transforms.Compose(\n",
- " [\n",
- " transforms.LoadImaged(keys=[\"image\"]),\n",
- " transforms.EnsureChannelFirstd(keys=[\"image\"]),\n",
- " transforms.ScaleIntensityRanged(keys=[\"image\"], a_min=0.0, a_max=255.0, b_min=0.0, b_max=1.0, clip=True),\n",
- " transforms.RandAffined(\n",
- " keys=[\"image\"],\n",
- " rotate_range=[(-np.pi / 36, np.pi / 36), (-np.pi / 36, np.pi / 36)],\n",
- " translate_range=[(-1, 1), (-1, 1)],\n",
- " scale_range=[(-0.05, 0.05), (-0.05, 0.05)],\n",
- " spatial_size=[image_size, image_size],\n",
- " padding_mode=\"zeros\",\n",
- " prob=0.5,\n",
- " ),\n",
- " ]\n",
- ")\n",
- "train_ds = Dataset(data=train_datalist, transform=train_transforms)\n",
- "train_loader = DataLoader(train_ds, batch_size=64, shuffle=True, num_workers=4, persistent_workers=True)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "8e3d936d",
- "metadata": {},
- "source": [
- "### Visualise examples from the training set"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 7,
- "id": "ebeb6144",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "# Plot 3 examples from the training set\n",
- "check_data = first(train_loader)\n",
- "fig, ax = plt.subplots(nrows=1, ncols=3)\n",
- "for image_n in range(3):\n",
- " ax[image_n].imshow(check_data[\"image\"][image_n, 0, :, :], cmap=\"gray\")\n",
- " ax[image_n].axis(\"off\")"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "f00f0f19",
- "metadata": {},
- "source": [
- "### Download the validation set"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 8,
- "id": "53c9eb04",
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "2022-12-04 21:11:46,339 - INFO - Verified 'MedNIST.tar.gz', md5: 0bc7306e7427e00ad1c5526a6677552d.\n",
- "2022-12-04 21:11:46,340 - INFO - File exists: /tmp/tmpveta1y62/MedNIST.tar.gz, skipped downloading.\n",
- "2022-12-04 21:11:46,340 - INFO - Non-empty folder exists in /tmp/tmpveta1y62/MedNIST, skipped extracting.\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Loading dataset: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 5895/5895 [00:01<00:00, 3265.53it/s]\n"
- ]
- }
- ],
- "source": [
- "val_data = MedNISTDataset(root_dir=root_dir, section=\"validation\", download=True, seed=0)\n",
- "val_datalist = [{\"image\": item[\"image\"]} for item in val_data.data if item[\"class_name\"] == \"Hand\"]\n",
- "val_transforms = transforms.Compose(\n",
- " [\n",
- " transforms.LoadImaged(keys=[\"image\"]),\n",
- " transforms.EnsureChannelFirstd(keys=[\"image\"]),\n",
- " transforms.ScaleIntensityRanged(keys=[\"image\"], a_min=0.0, a_max=255.0, b_min=0.0, b_max=1.0, clip=True),\n",
- " ]\n",
- ")\n",
- "val_ds = Dataset(data=val_datalist, transform=val_transforms)\n",
- "val_loader = DataLoader(val_ds, batch_size=64, shuffle=True, num_workers=4, persistent_workers=True)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "083aea1b",
- "metadata": {},
- "source": [
- "## Define the network"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 9,
- "id": "86b34ad5",
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Using cuda\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- "AutoencoderKL(\n",
- " (encoder): Encoder(\n",
- " (blocks): ModuleList(\n",
- " (0): Convolution(\n",
- " (conv): Conv2d(1, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
- " )\n",
- " (1): ResBlock(\n",
- " (norm1): GroupNorm(32, 128, eps=1e-06, affine=True)\n",
- " (conv1): Convolution(\n",
- " (conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
- " )\n",
- " (norm2): GroupNorm(32, 128, eps=1e-06, affine=True)\n",
- " (conv2): Convolution(\n",
- " (conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
- " )\n",
- " (nin_shortcut): Identity()\n",
- " )\n",
- " (2): Downsample(\n",
- " (conv): Convolution(\n",
- " (conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(2, 2))\n",
- " )\n",
- " )\n",
- " (3): ResBlock(\n",
- " (norm1): GroupNorm(32, 128, eps=1e-06, affine=True)\n",
- " (conv1): Convolution(\n",
- " (conv): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
- " )\n",
- " (norm2): GroupNorm(32, 256, eps=1e-06, affine=True)\n",
- " (conv2): Convolution(\n",
- " (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
- " )\n",
- " (nin_shortcut): Convolution(\n",
- " (conv): Conv2d(128, 256, kernel_size=(1, 1), stride=(1, 1))\n",
- " )\n",
- " )\n",
- " (4): Downsample(\n",
- " (conv): Convolution(\n",
- " (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(2, 2))\n",
- " )\n",
- " )\n",
- " (5): ResBlock(\n",
- " (norm1): GroupNorm(32, 256, eps=1e-06, affine=True)\n",
- " (conv1): Convolution(\n",
- " (conv): Conv2d(256, 384, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
- " )\n",
- " (norm2): GroupNorm(32, 384, eps=1e-06, affine=True)\n",
- " (conv2): Convolution(\n",
- " (conv): Conv2d(384, 384, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
- " )\n",
- " (nin_shortcut): Convolution(\n",
- " (conv): Conv2d(256, 384, kernel_size=(1, 1), stride=(1, 1))\n",
- " )\n",
- " )\n",
- " (6): AttnBlock(\n",
- " (norm): GroupNorm(32, 384, eps=1e-06, affine=True)\n",
- " (q): Convolution(\n",
- " (conv): Conv2d(384, 384, kernel_size=(1, 1), stride=(1, 1))\n",
- " )\n",
- " (k): Convolution(\n",
- " (conv): Conv2d(384, 384, kernel_size=(1, 1), stride=(1, 1))\n",
- " )\n",
- " (v): Convolution(\n",
- " (conv): Conv2d(384, 384, kernel_size=(1, 1), stride=(1, 1))\n",
- " )\n",
- " (proj_out): Convolution(\n",
- " (conv): Conv2d(384, 384, kernel_size=(1, 1), stride=(1, 1))\n",
- " )\n",
- " )\n",
- " (7): ResBlock(\n",
- " (norm1): GroupNorm(32, 384, eps=1e-06, affine=True)\n",
- " (conv1): Convolution(\n",
- " (conv): Conv2d(384, 384, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
- " )\n",
- " (norm2): GroupNorm(32, 384, eps=1e-06, affine=True)\n",
- " (conv2): Convolution(\n",
- " (conv): Conv2d(384, 384, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
- " )\n",
- " (nin_shortcut): Identity()\n",
- " )\n",
- " (8): AttnBlock(\n",
- " (norm): GroupNorm(32, 384, eps=1e-06, affine=True)\n",
- " (q): Convolution(\n",
- " (conv): Conv2d(384, 384, kernel_size=(1, 1), stride=(1, 1))\n",
- " )\n",
- " (k): Convolution(\n",
- " (conv): Conv2d(384, 384, kernel_size=(1, 1), stride=(1, 1))\n",
- " )\n",
- " (v): Convolution(\n",
- " (conv): Conv2d(384, 384, kernel_size=(1, 1), stride=(1, 1))\n",
- " )\n",
- " (proj_out): Convolution(\n",
- " (conv): Conv2d(384, 384, kernel_size=(1, 1), stride=(1, 1))\n",
- " )\n",
- " )\n",
- " (9): ResBlock(\n",
- " (norm1): GroupNorm(32, 384, eps=1e-06, affine=True)\n",
- " (conv1): Convolution(\n",
- " (conv): Conv2d(384, 384, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
- " )\n",
- " (norm2): GroupNorm(32, 384, eps=1e-06, affine=True)\n",
- " (conv2): Convolution(\n",
- " (conv): Conv2d(384, 384, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
- " )\n",
- " (nin_shortcut): Identity()\n",
- " )\n",
- " (10): GroupNorm(32, 384, eps=1e-06, affine=True)\n",
- " (11): Convolution(\n",
- " (conv): Conv2d(384, 8, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
- " )\n",
- " )\n",
- " )\n",
- " (decoder): Decoder(\n",
- " (blocks): ModuleList(\n",
- " (0): Convolution(\n",
- " (conv): Conv2d(8, 384, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
- " )\n",
- " (1): ResBlock(\n",
- " (norm1): GroupNorm(32, 384, eps=1e-06, affine=True)\n",
- " (conv1): Convolution(\n",
- " (conv): Conv2d(384, 384, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
- " )\n",
- " (norm2): GroupNorm(32, 384, eps=1e-06, affine=True)\n",
- " (conv2): Convolution(\n",
- " (conv): Conv2d(384, 384, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
- " )\n",
- " (nin_shortcut): Identity()\n",
- " )\n",
- " (2): AttnBlock(\n",
- " (norm): GroupNorm(32, 384, eps=1e-06, affine=True)\n",
- " (q): Convolution(\n",
- " (conv): Conv2d(384, 384, kernel_size=(1, 1), stride=(1, 1))\n",
- " )\n",
- " (k): Convolution(\n",
- " (conv): Conv2d(384, 384, kernel_size=(1, 1), stride=(1, 1))\n",
- " )\n",
- " (v): Convolution(\n",
- " (conv): Conv2d(384, 384, kernel_size=(1, 1), stride=(1, 1))\n",
- " )\n",
- " (proj_out): Convolution(\n",
- " (conv): Conv2d(384, 384, kernel_size=(1, 1), stride=(1, 1))\n",
- " )\n",
- " )\n",
- " (3): ResBlock(\n",
- " (norm1): GroupNorm(32, 384, eps=1e-06, affine=True)\n",
- " (conv1): Convolution(\n",
- " (conv): Conv2d(384, 384, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
- " )\n",
- " (norm2): GroupNorm(32, 384, eps=1e-06, affine=True)\n",
- " (conv2): Convolution(\n",
- " (conv): Conv2d(384, 384, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
- " )\n",
- " (nin_shortcut): Identity()\n",
- " )\n",
- " (4): ResBlock(\n",
- " (norm1): GroupNorm(32, 384, eps=1e-06, affine=True)\n",
- " (conv1): Convolution(\n",
- " (conv): Conv2d(384, 384, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
- " )\n",
- " (norm2): GroupNorm(32, 384, eps=1e-06, affine=True)\n",
- " (conv2): Convolution(\n",
- " (conv): Conv2d(384, 384, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
- " )\n",
- " (nin_shortcut): Identity()\n",
- " )\n",
- " (5): AttnBlock(\n",
- " (norm): GroupNorm(32, 384, eps=1e-06, affine=True)\n",
- " (q): Convolution(\n",
- " (conv): Conv2d(384, 384, kernel_size=(1, 1), stride=(1, 1))\n",
- " )\n",
- " (k): Convolution(\n",
- " (conv): Conv2d(384, 384, kernel_size=(1, 1), stride=(1, 1))\n",
- " )\n",
- " (v): Convolution(\n",
- " (conv): Conv2d(384, 384, kernel_size=(1, 1), stride=(1, 1))\n",
- " )\n",
- " (proj_out): Convolution(\n",
- " (conv): Conv2d(384, 384, kernel_size=(1, 1), stride=(1, 1))\n",
- " )\n",
- " )\n",
- " (6): Upsample(\n",
- " (conv): Convolution(\n",
- " (conv): Conv2d(384, 384, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
- " )\n",
- " )\n",
- " (7): ResBlock(\n",
- " (norm1): GroupNorm(32, 384, eps=1e-06, affine=True)\n",
- " (conv1): Convolution(\n",
- " (conv): Conv2d(384, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
- " )\n",
- " (norm2): GroupNorm(32, 256, eps=1e-06, affine=True)\n",
- " (conv2): Convolution(\n",
- " (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
- " )\n",
- " (nin_shortcut): Convolution(\n",
- " (conv): Conv2d(384, 256, kernel_size=(1, 1), stride=(1, 1))\n",
- " )\n",
- " )\n",
- " (8): Upsample(\n",
- " (conv): Convolution(\n",
- " (conv): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
- " )\n",
- " )\n",
- " (9): ResBlock(\n",
- " (norm1): GroupNorm(32, 256, eps=1e-06, affine=True)\n",
- " (conv1): Convolution(\n",
- " (conv): Conv2d(256, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
- " )\n",
- " (norm2): GroupNorm(32, 128, eps=1e-06, affine=True)\n",
- " (conv2): Convolution(\n",
- " (conv): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
- " )\n",
- " (nin_shortcut): Convolution(\n",
- " (conv): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1))\n",
- " )\n",
- " )\n",
- " (10): GroupNorm(32, 128, eps=1e-06, affine=True)\n",
- " (11): Convolution(\n",
- " (conv): Conv2d(128, 1, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
- " )\n",
- " )\n",
- " )\n",
- " (quant_conv_mu): Convolution(\n",
- " (conv): Conv2d(8, 8, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
- " )\n",
- " (quant_conv_log_sigma): Convolution(\n",
- " (conv): Conv2d(8, 8, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
- " )\n",
- " (post_quant_conv): Convolution(\n",
- " (conv): Conv2d(8, 8, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
- " )\n",
- ")"
- ]
- },
- "execution_count": 9,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n",
- "print(f\"Using {device}\")\n",
- "model = AutoencoderKL(\n",
- " spatial_dims=2,\n",
- " in_channels=1,\n",
- " out_channels=1,\n",
- " num_channels=(128, 256, 384),\n",
- " latent_channels=8,\n",
- " num_res_blocks=1,\n",
- " norm_num_groups=32,\n",
- " attention_levels=(False, False, True),\n",
- ")\n",
- "model.to(device)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 10,
- "id": "671ad579",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "PatchDiscriminator(\n",
- " (initial_conv): Convolution(\n",
- " (conv): Conv2d(1, 64, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1))\n",
- " (adn): ADN(\n",
- " (D): Dropout(p=0.0, inplace=False)\n",
- " (A): LeakyReLU(negative_slope=0.2)\n",
- " )\n",
- " )\n",
- " (0): Convolution(\n",
- " (conv): Conv2d(64, 128, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1), bias=False)\n",
- " (adn): ADN(\n",
- " (N): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
- " (D): Dropout(p=0.0, inplace=False)\n",
- " (A): LeakyReLU(negative_slope=0.2)\n",
- " )\n",
- " )\n",
- " (1): Convolution(\n",
- " (conv): Conv2d(128, 256, kernel_size=(4, 4), stride=(2, 2), padding=(1, 1), bias=False)\n",
- " (adn): ADN(\n",
- " (N): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
- " (D): Dropout(p=0.0, inplace=False)\n",
- " (A): LeakyReLU(negative_slope=0.2)\n",
- " )\n",
- " )\n",
- " (2): Convolution(\n",
- " (conv): Conv2d(256, 512, kernel_size=(4, 4), stride=(1, 1), padding=(1, 1), bias=False)\n",
- " (adn): ADN(\n",
- " (N): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
- " (D): Dropout(p=0.0, inplace=False)\n",
- " (A): LeakyReLU(negative_slope=0.2)\n",
- " )\n",
- " )\n",
- " (final_conv): Convolution(\n",
- " (conv): Conv2d(512, 1, kernel_size=(4, 4), stride=(1, 1), padding=(1, 1))\n",
- " )\n",
- ")"
- ]
- },
- "execution_count": 10,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "discriminator = PatchDiscriminator(\n",
- " spatial_dims=2,\n",
- " num_layers_d=3,\n",
- " num_channels=64,\n",
- " in_channels=1,\n",
- " out_channels=1,\n",
- " kernel_size=4,\n",
- " activation=(Act.LEAKYRELU, {\"negative_slope\": 0.2}),\n",
- " norm=\"BATCH\",\n",
- " bias=False,\n",
- " padding=1,\n",
- ")\n",
- "discriminator.to(device)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 11,
- "id": "7f259580",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "PerceptualLoss(\n",
- " (perceptual_function): LPIPS(\n",
- " (scaling_layer): ScalingLayer()\n",
- " (net): alexnet(\n",
- " (slice1): Sequential(\n",
- " (0): Conv2d(3, 64, kernel_size=(11, 11), stride=(4, 4), padding=(2, 2))\n",
- " (1): ReLU(inplace=True)\n",
- " )\n",
- " (slice2): Sequential(\n",
- " (2): MaxPool2d(kernel_size=3, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
- " (3): Conv2d(64, 192, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2))\n",
- " (4): ReLU(inplace=True)\n",
- " )\n",
- " (slice3): Sequential(\n",
- " (5): MaxPool2d(kernel_size=3, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
- " (6): Conv2d(192, 384, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
- " (7): ReLU(inplace=True)\n",
- " )\n",
- " (slice4): Sequential(\n",
- " (8): Conv2d(384, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
- " (9): ReLU(inplace=True)\n",
- " )\n",
- " (slice5): Sequential(\n",
- " (10): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
- " (11): ReLU(inplace=True)\n",
- " )\n",
- " )\n",
- " (lin0): NetLinLayer(\n",
- " (model): Sequential(\n",
- " (0): Dropout(p=0.5, inplace=False)\n",
- " (1): Conv2d(64, 1, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
- " )\n",
- " )\n",
- " (lin1): NetLinLayer(\n",
- " (model): Sequential(\n",
- " (0): Dropout(p=0.5, inplace=False)\n",
- " (1): Conv2d(192, 1, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
- " )\n",
- " )\n",
- " (lin2): NetLinLayer(\n",
- " (model): Sequential(\n",
- " (0): Dropout(p=0.5, inplace=False)\n",
- " (1): Conv2d(384, 1, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
- " )\n",
- " )\n",
- " (lin3): NetLinLayer(\n",
- " (model): Sequential(\n",
- " (0): Dropout(p=0.5, inplace=False)\n",
- " (1): Conv2d(256, 1, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
- " )\n",
- " )\n",
- " (lin4): NetLinLayer(\n",
- " (model): Sequential(\n",
- " (0): Dropout(p=0.5, inplace=False)\n",
- " (1): Conv2d(256, 1, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
- " )\n",
- " )\n",
- " (lins): ModuleList(\n",
- " (0): NetLinLayer(\n",
- " (model): Sequential(\n",
- " (0): Dropout(p=0.5, inplace=False)\n",
- " (1): Conv2d(64, 1, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
- " )\n",
- " )\n",
- " (1): NetLinLayer(\n",
- " (model): Sequential(\n",
- " (0): Dropout(p=0.5, inplace=False)\n",
- " (1): Conv2d(192, 1, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
- " )\n",
- " )\n",
- " (2): NetLinLayer(\n",
- " (model): Sequential(\n",
- " (0): Dropout(p=0.5, inplace=False)\n",
- " (1): Conv2d(384, 1, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
- " )\n",
- " )\n",
- " (3): NetLinLayer(\n",
- " (model): Sequential(\n",
- " (0): Dropout(p=0.5, inplace=False)\n",
- " (1): Conv2d(256, 1, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
- " )\n",
- " )\n",
- " (4): NetLinLayer(\n",
- " (model): Sequential(\n",
- " (0): Dropout(p=0.5, inplace=False)\n",
- " (1): Conv2d(256, 1, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
- " )\n",
- " )\n",
- " )\n",
- " )\n",
- ")"
- ]
- },
- "execution_count": 11,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "perceptual_loss = PerceptualLoss(spatial_dims=2, network_type=\"alex\")\n",
- "perceptual_loss.to(device)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 12,
- "id": "f39cfd6e",
- "metadata": {},
- "outputs": [],
- "source": [
- "optimizer_g = torch.optim.Adam(params=model.parameters(), lr=1e-4)\n",
- "optimizer_d = torch.optim.Adam(params=discriminator.parameters(), lr=5e-4)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 13,
- "id": "b0656065",
- "metadata": {},
- "outputs": [],
- "source": [
- "l1_loss = L1Loss()\n",
- "adv_loss = PatchAdversarialLoss(criterion=\"least_squares\")\n",
- "adv_weight = 0.01\n",
- "perceptual_weight = 0.001"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "66041923",
- "metadata": {},
- "source": [
- "## Model Training"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 14,
- "id": "ea9e0a54",
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Epoch 0: 100%|███████████| 125/125 [01:21<00:00, 1.53it/s, recons_loss=0.137, gen_loss=0.93, disc_loss=0.437]\n",
- "Epoch 1: 100%|██████████| 125/125 [01:23<00:00, 1.50it/s, recons_loss=0.0754, gen_loss=0.68, disc_loss=0.195]\n",
- "Epoch 2: 100%|█████████| 125/125 [01:24<00:00, 1.48it/s, recons_loss=0.0511, gen_loss=0.571, disc_loss=0.297]\n",
- "Epoch 3: 100%|█████████| 125/125 [01:25<00:00, 1.47it/s, recons_loss=0.0425, gen_loss=0.447, disc_loss=0.268]\n",
- "Epoch 4: 100%|█████████| 125/125 [01:25<00:00, 1.46it/s, recons_loss=0.0388, gen_loss=0.347, disc_loss=0.228]\n",
- "Epoch 5: 100%|█████████| 125/125 [01:25<00:00, 1.46it/s, recons_loss=0.0358, gen_loss=0.345, disc_loss=0.233]\n",
- "Epoch 6: 100%|█████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0333, gen_loss=0.332, disc_loss=0.243]\n",
- "Epoch 7: 100%|█████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0324, gen_loss=0.334, disc_loss=0.244]\n",
- "Epoch 8: 100%|█████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0298, gen_loss=0.328, disc_loss=0.243]\n",
- "Epoch 9: 100%|█████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0288, gen_loss=0.307, disc_loss=0.243]\n",
- "Epoch 10: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0272, gen_loss=0.302, disc_loss=0.245]\n",
- "Epoch 11: 100%|█████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.026, gen_loss=0.303, disc_loss=0.245]\n",
- "Epoch 12: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0251, gen_loss=0.302, disc_loss=0.246]\n",
- "Epoch 13: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0244, gen_loss=0.297, disc_loss=0.247]\n",
- "Epoch 14: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0238, gen_loss=0.288, disc_loss=0.249]\n",
- "Epoch 15: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0226, gen_loss=0.292, disc_loss=0.246]\n",
- "Epoch 16: 100%|█████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0223, gen_loss=0.29, disc_loss=0.242]\n",
- "Epoch 17: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0218, gen_loss=0.294, disc_loss=0.244]\n",
- "Epoch 18: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0212, gen_loss=0.292, disc_loss=0.246]\n",
- "Epoch 19: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0207, gen_loss=0.281, disc_loss=0.247]\n",
- "Epoch 20: 100%|██████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.02, gen_loss=0.283, disc_loss=0.246]\n",
- "Epoch 21: 100%|██████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.02, gen_loss=0.287, disc_loss=0.245]\n",
- "Epoch 22: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0197, gen_loss=0.284, disc_loss=0.245]\n",
- "Epoch 23: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0194, gen_loss=0.285, disc_loss=0.246]\n",
- "Epoch 24: 100%|█████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.019, gen_loss=0.283, disc_loss=0.246]\n",
- "Epoch 25: 100%|█████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.019, gen_loss=0.283, disc_loss=0.247]\n",
- "Epoch 26: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0187, gen_loss=0.281, disc_loss=0.247]\n",
- "Epoch 27: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0183, gen_loss=0.285, disc_loss=0.247]\n",
- "Epoch 28: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0179, gen_loss=0.283, disc_loss=0.245]\n",
- "Epoch 29: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0179, gen_loss=0.286, disc_loss=0.247]\n",
- "Epoch 30: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0175, gen_loss=0.283, disc_loss=0.245]\n",
- "Epoch 31: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0175, gen_loss=0.282, disc_loss=0.245]\n",
- "Epoch 32: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0173, gen_loss=0.287, disc_loss=0.245]\n",
- "Epoch 33: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0171, gen_loss=0.288, disc_loss=0.247]\n",
- "Epoch 34: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0174, gen_loss=0.289, disc_loss=0.248]\n",
- "Epoch 35: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0168, gen_loss=0.282, disc_loss=0.247]\n",
- "Epoch 36: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0166, gen_loss=0.282, disc_loss=0.246]\n",
- "Epoch 37: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0165, gen_loss=0.279, disc_loss=0.245]\n",
- "Epoch 38: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0166, gen_loss=0.287, disc_loss=0.246]\n",
- "Epoch 39: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0163, gen_loss=0.286, disc_loss=0.244]\n",
- "Epoch 40: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0164, gen_loss=0.292, disc_loss=0.245]\n",
- "Epoch 41: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0162, gen_loss=0.292, disc_loss=0.243]\n",
- "Epoch 42: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0163, gen_loss=0.295, disc_loss=0.244]\n",
- "Epoch 43: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0163, gen_loss=0.289, disc_loss=0.245]\n",
- "Epoch 44: 100%|█████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.016, gen_loss=0.293, disc_loss=0.242]\n",
- "Epoch 45: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0162, gen_loss=0.292, disc_loss=0.244]\n",
- "Epoch 46: 100%|██████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.016, gen_loss=0.298, disc_loss=0.24]\n",
- "Epoch 47: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0157, gen_loss=0.302, disc_loss=0.243]\n",
- "Epoch 48: 100%|█████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.016, gen_loss=0.306, disc_loss=0.241]\n",
- "Epoch 49: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0159, gen_loss=0.303, disc_loss=0.238]\n",
- "Epoch 50: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0162, gen_loss=0.314, disc_loss=0.234]\n",
- "Epoch 51: 100%|█████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.016, gen_loss=0.311, disc_loss=0.242]\n",
- "Epoch 52: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0161, gen_loss=0.314, disc_loss=0.234]\n",
- "Epoch 53: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0165, gen_loss=0.326, disc_loss=0.229]\n",
- "Epoch 54: 100%|█████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0166, gen_loss=0.335, disc_loss=0.23]\n",
- "Epoch 55: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0163, gen_loss=0.343, disc_loss=0.226]\n",
- "Epoch 56: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0169, gen_loss=0.349, disc_loss=0.224]\n",
- "Epoch 57: 100%|█████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.017, gen_loss=0.336, disc_loss=0.235]\n",
- "Epoch 58: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0161, gen_loss=0.332, disc_loss=0.232]\n",
- "Epoch 59: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0159, gen_loss=0.329, disc_loss=0.232]\n",
- "Epoch 60: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0166, gen_loss=0.332, disc_loss=0.239]\n",
- "Epoch 61: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0163, gen_loss=0.334, disc_loss=0.233]\n",
- "Epoch 62: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0158, gen_loss=0.323, disc_loss=0.232]\n",
- "Epoch 63: 100%|█████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0162, gen_loss=0.34, disc_loss=0.229]\n",
- "Epoch 64: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0163, gen_loss=0.354, disc_loss=0.225]\n",
- "Epoch 65: 100%|█████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.016, gen_loss=0.348, disc_loss=0.228]\n",
- "Epoch 66: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0162, gen_loss=0.354, disc_loss=0.223]\n",
- "Epoch 67: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0162, gen_loss=0.356, disc_loss=0.233]\n",
- "Epoch 68: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0159, gen_loss=0.362, disc_loss=0.216]\n",
- "Epoch 69: 100%|█████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0169, gen_loss=0.386, disc_loss=0.21]\n",
- "Epoch 70: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0171, gen_loss=0.373, disc_loss=0.218]\n",
- "Epoch 71: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0158, gen_loss=0.377, disc_loss=0.225]\n",
- "Epoch 72: 100%|█████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0161, gen_loss=0.35, disc_loss=0.225]\n",
- "Epoch 73: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0159, gen_loss=0.367, disc_loss=0.219]\n",
- "Epoch 74: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0156, gen_loss=0.373, disc_loss=0.214]\n",
- "Epoch 75: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0164, gen_loss=0.387, disc_loss=0.218]\n",
- "Epoch 76: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0163, gen_loss=0.404, disc_loss=0.196]\n",
- "Epoch 77: 100%|█████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0162, gen_loss=0.38, disc_loss=0.221]\n",
- "Epoch 78: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0169, gen_loss=0.399, disc_loss=0.214]\n",
- "Epoch 79: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0161, gen_loss=0.391, disc_loss=0.207]\n",
- "Epoch 80: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0162, gen_loss=0.405, disc_loss=0.205]\n",
- "Epoch 81: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0163, gen_loss=0.389, disc_loss=0.214]\n",
- "Epoch 82: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0162, gen_loss=0.382, disc_loss=0.218]\n",
- "Epoch 83: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0164, gen_loss=0.399, disc_loss=0.215]\n",
- "Epoch 84: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0168, gen_loss=0.422, disc_loss=0.194]\n",
- "Epoch 85: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0162, gen_loss=0.393, disc_loss=0.217]\n",
- "Epoch 86: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0159, gen_loss=0.392, disc_loss=0.217]\n",
- "Epoch 87: 100%|█████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.016, gen_loss=0.392, disc_loss=0.213]\n",
- "Epoch 88: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0155, gen_loss=0.374, disc_loss=0.221]\n",
- "Epoch 89: 100%|██████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.016, gen_loss=0.38, disc_loss=0.219]\n",
- "Epoch 90: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0165, gen_loss=0.428, disc_loss=0.192]\n",
- "Epoch 91: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0155, gen_loss=0.394, disc_loss=0.214]\n",
- "Epoch 92: 100%|██████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0162, gen_loss=0.429, disc_loss=0.2]\n",
- "Epoch 93: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0157, gen_loss=0.404, disc_loss=0.214]\n",
- "Epoch 94: 100%|█████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0154, gen_loss=0.382, disc_loss=0.22]\n",
- "Epoch 95: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0159, gen_loss=0.402, disc_loss=0.213]\n",
- "Epoch 96: 100%|█████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0151, gen_loss=0.38, disc_loss=0.223]\n",
- "Epoch 97: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0157, gen_loss=0.395, disc_loss=0.209]\n",
- "Epoch 98: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0155, gen_loss=0.381, disc_loss=0.218]\n",
- "Epoch 99: 100%|████████| 125/125 [01:26<00:00, 1.45it/s, recons_loss=0.0153, gen_loss=0.381, disc_loss=0.224]\n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "train completed, total time: 8708.349147081375.\n"
- ]
- }
- ],
- "source": [
- "kl_weight = 1e-6\n",
- "n_epochs = 100\n",
- "val_interval = 25\n",
- "epoch_recon_loss_list = []\n",
- "epoch_gen_loss_list = []\n",
- "epoch_disc_loss_list = []\n",
- "val_recon_epoch_loss_list = []\n",
- "intermediary_images = []\n",
- "n_example_images = 4\n",
- "\n",
- "total_start = time.time()\n",
- "for epoch in range(n_epochs):\n",
- " model.train()\n",
- " discriminator.train()\n",
- " epoch_loss = 0\n",
- " gen_epoch_loss = 0\n",
- " disc_epoch_loss = 0\n",
- " progress_bar = tqdm(enumerate(train_loader), total=len(train_loader), ncols=110)\n",
- " progress_bar.set_description(f\"Epoch {epoch}\")\n",
- " for step, batch in progress_bar:\n",
- " images = batch[\"image\"].to(device)\n",
- " optimizer_g.zero_grad(set_to_none=True)\n",
- "\n",
- " reconstruction, z_mu, z_sigma = model(images)\n",
- "\n",
- " recons_loss = l1_loss(reconstruction.float(), images.float())\n",
- "\n",
- " kl_loss = 0.5 * torch.sum(z_mu.pow(2) + z_sigma.pow(2) - torch.log(z_sigma.pow(2)) - 1, dim=[1, 2, 3])\n",
- " kl_loss = torch.sum(kl_loss) / kl_loss.shape[0]\n",
- "\n",
- " logits_fake = discriminator(reconstruction.contiguous().float())[-1]\n",
- " p_loss = perceptual_loss(reconstruction.float(), images.float())\n",
- " generator_loss = adv_loss(logits_fake, target_is_real=True, for_discriminator=False)\n",
- " loss_g = recons_loss + kl_weight * kl_loss + perceptual_weight * p_loss + adv_weight * generator_loss\n",
- "\n",
- " loss_g.backward()\n",
- " optimizer_g.step()\n",
- "\n",
- " # Discriminator part\n",
- " optimizer_d.zero_grad(set_to_none=True)\n",
- "\n",
- " logits_fake = discriminator(reconstruction.contiguous().detach())[-1]\n",
- " loss_d_fake = adv_loss(logits_fake, target_is_real=False, for_discriminator=True)\n",
- " logits_real = discriminator(images.contiguous().detach())[-1]\n",
- " loss_d_real = adv_loss(logits_real, target_is_real=True, for_discriminator=True)\n",
- " discriminator_loss = (loss_d_fake + loss_d_real) * 0.5\n",
- "\n",
- " loss_d = adv_weight * discriminator_loss\n",
- "\n",
- " loss_d.backward()\n",
- " optimizer_d.step()\n",
- "\n",
- " epoch_loss += recons_loss.item()\n",
- " gen_epoch_loss += generator_loss.item()\n",
- " disc_epoch_loss += discriminator_loss.item()\n",
- "\n",
- " progress_bar.set_postfix(\n",
- " {\n",
- " \"recons_loss\": epoch_loss / (step + 1),\n",
- " \"gen_loss\": gen_epoch_loss / (step + 1),\n",
- " \"disc_loss\": disc_epoch_loss / (step + 1),\n",
- " }\n",
- " )\n",
- " epoch_recon_loss_list.append(epoch_loss / (step + 1))\n",
- " epoch_gen_loss_list.append(gen_epoch_loss / (step + 1))\n",
- " epoch_disc_loss_list.append(disc_epoch_loss / (step + 1))\n",
- "\n",
- " if (epoch + 1) % val_interval == 0:\n",
- " model.eval()\n",
- " val_loss = 0\n",
- " with torch.no_grad():\n",
- " for val_step, batch in enumerate(val_loader, start=1):\n",
- " images = batch[\"image\"].to(device)\n",
- " reconstruction, _, _ = model(images)\n",
- "\n",
- " # get the first sammple from the first validation batch for visualisation\n",
- " # purposes\n",
- " if val_step == 1:\n",
- " intermediary_images.append(reconstruction[:n_example_images, 0])\n",
- "\n",
- " recons_loss = l1_loss(reconstruction.float(), images.float())\n",
- "\n",
- " val_loss += recons_loss.item()\n",
- "\n",
- " val_loss /= val_step\n",
- " val_recon_epoch_loss_list.append(val_loss)\n",
- "\n",
- "total_time = time.time() - total_start\n",
- "print(f\"train completed, total time: {total_time}.\")"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "f17a5406",
- "metadata": {},
- "source": [
- "## Evaluate the training\n",
- "### Visualise the loss"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 15,
- "id": "2a7e9061",
- "metadata": {
- "lines_to_next_cell": 2
- },
- "outputs": [
- {
- "data": {
- "image/png": "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xNy5c+sUhu3BvBYxV5kgIiIish2HDMQAMGPGDOzevRvr1q1Damoq9u7di5UrV2L8+PEICAjAmTNnMGzYMMTHx1uOyc7ORnZ2NnJzcwGYplyY2wwGA0RRxD//+U9ER0dj5MiRlm3mP4687Bpway1irjJBREREZDsOOWUCAIYNG4alS5fis88+w7JlyxAYGIgJEyZg2rRpAACNRoPExESUlJRYjunbt6/VOT744AN88MEHAEzVZUEQcPXq1Ur3BYDp06fjlVdeqa+3VGdyVoiJiIiIbM5hAzEAjB49GqNHj650W8+ePSs8Wa46T5pz5KfR3Y15qTW9QYQoig77mGkiIiIiZ+KwUyaoIj6tjoiIiMj2GIidSPmHcej09bO6BREREVFjw0DsRMpXiHWsEBMRERHZBAOxEylfIXa09fuIiIiInBUDsRNhhZiIiIjI9hiInYhcdmtVCVaIiYiIiGyDgdiJyKVSy2tWiImIiIhsg4HYicjKVYj5tDoiIiIi22AgdiJyGecQExEREdkaA7ETkUm5ygQRERGRrTEQOxGrCjEDMREREZFNMBA7ERkf3UxERERkcwzEToTrEBMRERHZHgOxE5HzSXVERERENsdA7ERkVhVi0Y49ISIiInIdDMROxPqmOoMde0JERETkOhiInYj1TXWsEBMRERHZAgOxE+Gya0RERES2x0DsRORcdo2IiIjI5hiInQgrxERERES2x0DsRGRSwfKa6xATERER2QYDsRPhOsREREREtsdA7ERkfFIdERERkc0xEDsRziEmIiIisj0GYici4yoTRERERDbHQOxEOIeYiIiIyPYYiJ2IVCLAvM4E5xATERER2QYDsRMRBAGym1VinZ6PbiYiIiKyBQZiJ2N+Wh0rxERERES2wUDsZMwVYs4hJiIiIrINBmInwwoxERERkW0xEDsZVoiJiIiIbIuB2MmwQkxERERkWwzETkYuMy28ptcbIYpcaYKIiIiorhiInYy5QiwCMBgZiImIiIjqioHYycjKPa1Ox3nERERERHXGQOxkzBVigPOIiYiIiGyBgdjJlK8Qc6UJIiIiorpjIHYy8vKBmBViIiIiojpjIHYyMinnEBMRERHZEgOxkyk/h1hv4CoTRERERHXFQOxk5FxlgoiIiMimGIidjIyrTBARERHZFAOxk2GFmIiIiMi2GIidjEwqWF5zlQkiIiKiumMgdjJymdTymhViIiIiorpjIHYyclaIiYiIiGyKgdjJyDiHmIiIiMimGIidjJyrTBARERHZFAOxk7F6dDMrxERERER15tCBeNOmTRgxYgSioqIQExOD2NhY6HS6Ox5TUlKCN954A5GRkdiwYYPNzusouA4xERERkW3J7N2Bqmzbtg3z5s3D3LlzMXjwYFy6dAnz5s1DSUkJFixYUOkxly5dwsyZMyEIQqXba3teR2JVIWYgJiIiIqozh60Qr1ixAiNHjsTEiRMRFhaGIUOGYMaMGdi4cSMyMzMrPWblypXo27cvVq1aZdPzOhKrCjGnTBARERHVmUMG4mvXriE5ORn9+/e3au/Xrx+MRiMOHz5c6XFz5szB22+/DZms8sJ3bc/rSKznEIt27AkRERGRa3DIQJyYmAgAaNGihVV7SEgI5HI5EhISKj2uZcuW9XJeR2K9yoTBjj0hIiIicg0OOYe4uLgYAKBUKq3aBUGAUqm0bLf3eSUSARJJ1fOVa0N6M/BKpZV/VnFzu/WkOoNRtFqXmBzH3caRnAPH0TVwHF0Dx9H5OfIYOmQgdhb+/so73sBXF97eHpW261DuehIJ/PyUle5HjqGqcSTnwnF0DRxH18BxdH6OOIYOGYi9vb0BoELFVhRFqNVqy3Z7nzc3V10vFWJvbw8UFmpgqGQViZLisluvNVrk5alten2yjbuNIzkHjqNr4Di6Bo6j87PXGFaneOiQgTg8PBwAkJSUhOjoaEt7SkoKdDod2rZt6xDnNRpFGI31c2ObwWCs9MEbQrkKsVZX+T7kOKoaR3IuHEfXwHF0DRxH5+eIY+h4kzgAhIWFITw8HAcOHLBq37dvH2QyGWJiYhzqvA1JLrsViB3th4mIiIjIGTlkIAaAGTNmYPfu3Vi3bh1SU1Oxd+9erFy5EuPHj0dAQADOnDmDYcOGIT4+3nJMdnY2srOzkZubC8A0NcLcZri5IsPdzuvo+KQ6IiIiIttyyCkTADBs2DAsXboUn332GZYtW4bAwEBMmDAB06ZNAwBoNBokJiaipKTEckzfvn2tzvHBBx/ggw8+AGCqAoeGht71vI5OEATIpAL0BpEVYiIiIiIbcNhADACjR4/G6NGjK93Ws2dPXLp0yart9q9rc15nIJdJoDcYWCEmIiIisgGHnTJBVTNPm+Cjm4mIiIjqjoHYCZkf36xnhZiIiIiozhiInRArxERERES2w0DshG5ViOtnDWQiIiKixoSB2AmxQkxERERkOwzETkh+MxAbRREGI0MxERERUV0wEDsh85QJANDrOW2CiIiIqC4YiJ0Qn1ZHREREZDsMxE6ofIWY84iJiIiI6oaB2AnJpILlNdciJiIiIqobBmInxAoxERERke0wEDshebk5xKwQExEREdUNA7ETkrFCTERERGQzDMROiBViIiIiItthIHZCVnOIGYiJiIiI6oSB2AlZrUPMKRNEREREdcJA7ISsnlRn4JPqiIiIiOqCgdgJWVeIDXbsCREREZHzYyB2QqwQExEREdkOA7ETknMOMREREZHNMBA7Ia5DTERERGQ7DMROyKpCzGXXiIiIiOqEgdgJyWSC5bWeFWIiIiKiOmEgdkKsEBMRERHZDgOxEyo/h5gVYiIiIqK6YSB2QqwQExEREdkOA7ETkrNCTERERGQzDMROiBViIiIiItthIHZCXIeYiIiIyHYYiJ0QH91MREREZDsMxE5IZvXoZoMde0JERETk/BiInVD5OcSsEBMRERHVDQOxE5JIBEglpqfVcQ4xERERUd0wEDsp87QJPVeZICIiIqoTBmInZb6xjhViIiIiorphIHZSMunNKROsEBMRERHVCQOxk2KFmIiIiMg2GIidFOcQExEREdkGA7GTYoWYiIiIyDYYiJ2UeS1ig1GEUeRaxERERES1xUDspMo/vtnAaRNEREREtcZA7KSsH9/MQExERERUWwzETqp8hVjHxzcTERER1RoDsZOyrhAb7NgTIiIiIufGQOykyleI9awQExEREdUaA7GT4hxiIiIiIttgIHZS1hViBmIiIiKi2mIgdlJyVoiJiIiIbKJeA3FeXh70en19XqLRkskEy2sdK8REREREtVbnQHzw4EFMnz7dqu3XX3/FwIED0bt3b/Tq1Qvr1q2r62XoNqwQExEREdlGnQJxfHw8Xn75ZRw8eBBGoymUZWVl4eWXX0Z6ejrat28PiUSCpUuX4sCBAzU+/6ZNmzBixAhERUUhJiYGsbGx0Ol0Ve6v1WoRGxuLfv36ISoqCsOHD8eWLVus9tHr9VizZg0eeughdO7cGb169cJbb72F7OzsGvfPnmTl5xAzEBMRERHVWp0C8VdffQUPDw9s2bIFEonpVN999x00Gg1effVVfP/999izZw+Cg4Px7bff1ujc27Ztw7x58/DEE08gLi4O8+fPx7Zt27Bo0aIqj5k/fz62bt2Kd999Fzt27MDYsWPxzjvvYOfOnZZ9Pv74Y3z88ceYOnUqduzYgY8//hinTp3C1KlTnWp6h1WFmFMmiIiIiGqtToH4zJkzGDp0KCIiIixtBw4cgLu7O8aPHw8A8PX1xZAhQ3Du3LkanXvFihUYOXIkJk6ciLCwMAwZMgQzZszAxo0bkZmZWWH/1NRUbN26FbNmzcKgQYPQsmVLTJgwAcOHD8fHH39s2e/777/HyJEjMWbMGISFhaFnz56YPn06Lly4gMuXL9fyO9HwWCEmIiIiso06BeKcnBy0bNnS8nVBQQEuXLiAbt26QaVSWdqbNGmCgoKCap/32rVrSE5ORv/+/a3a+/XrB6PRiMOHD1c45siRIxBFEQMGDKhwjPl8ZlKp1GofhUJR7b45ivIVYi67RkRERFR7dQrECoUCxcXFlq/NobRPnz5W+xUXF0OpVFb7vImJiQCAFi1aWLWHhIRALpcjISGh0mMUCgWCg4Ot2s3nMB/z1FNPIS4uDsePHwcA3LhxA2vXrsW9996L9u3bV7uP9lZ+HWLeVEdERERUe7K6HNymTRscOHAAr776KiQSCb766isIgoCBAwda7Xf8+HE0b9682uc1h+zbQ7QgCFAqlVYhvPwxlYVuc6W6qKgIADB9+nRoNBo8++yzkMvl0Ol06Nq1Kz799FMIglDh+DuRSARIJDU75m6kNyu/UumdP6u4KW5VuQ2i9RQKsr/qjiM5No6ja+A4ugaOo/Nz5DGsUyB+6KGHsGTJEgwdOhQAkJ6ejn79+qF169YAgJKSEnzyySc4ffo0Xnnllbr31gbWrl2Lb775BvPmzUO3bt2QmpqKf/3rX3jllVfwn//8BzJZ9b8l/v7KGofo6vL29rjjdj9fT8trmVwKP7/qV+Cp4dxtHMk5cBxdA8fRNXAcnZ8jjmGdAvEzzzyDK1eu4Pvvv4der0enTp3w/vvvW7bn5ORg3bp1aN++PSZNmlTt83p7ewNAhUqwKIpQq9WW7eV5eXlBrVZXaDdXhr29vZGfn48PP/wQ06ZNwzPPPAMAaN++PUJDQzFmzBjs3r0bI0eOrHY/c3PV9VIh9vb2QGGhBoY7zA0u02gtr4uKy5CXV/G9k/1UdxzJsXEcXQPH0TVwHJ2fvcawOkXDOgViiUSChQsX4q233oJarUZAQIDV9rCwMLz99tt49NFH4eFR/U8D4eHhAICkpCRER0db2lNSUqDT6dC2bdtKj9FqtUhPT0dISIil/dq1awCAtm3b4vr169DpdFarYgCwVLTN+1aX0SjCaBRrdEx1GQzGO64eUb4yXaY1cKUJB3W3cSTnwHF0DRxH18BxdH6OOIY2mcTh7u5eIQybPfvsszW6oQ4wBenw8PAKD/PYt28fZDIZYmJiKhwTExMDiUSC/fv3W7Xv3bsXkZGRaNasmWUe85UrV6z2uXr1KgDUaJ6zvXGVCSIiIiLbqHMg/vPPP7FkyRKrtosXL+KZZ55BdHQ0Ro4ciV27dtX4vDNmzMDu3buxbt06pKamYu/evVi5ciXGjx+PgIAAnDlzBsOGDUN8fDwAIDg4GOPGjcPy5cuxf/9+pKam4vPPP8eBAwcwa9YsAEBAQABGjBiBL774Aj/88AOSk5MRHx+Pd955B0FBQRVuBnRkMq4yQURERGQTdZoycenSJTzzzDPQarWYO3cuJBIJCgsLMXnyZOTm5sLHxwcJCQmYPXs2goKC0K1bt2qfe9iwYVi6dCk+++wzLFu2DIGBgZgwYQKmTZsGANBoNEhMTERJSYnlmDfffBMqlQrvvvsucnNz0bp1a3z00UdWQXfx4sVYvnw5PvroI2RnZ0OlUqFHjx748MMP4ePjU5dvR4OSS29NmWCFmIiIiKj26hSI165dC71ej1WrVlke3bxp0ybk5uZi3Lhx+Mc//oHr16/jiSeewFdffVWjQAwAo0ePxujRoyvd1rNnT1y6dMmqTSaTYdasWZaKcGU8PT0xd+5czJ07t0Z9cTRy2a1l11ghJiIiIqq9Ok2Z+P333zF06FD069fP0vbTTz9BJpNh+vTpAEwPxhg6dCj++OOPuvWUrMjKVYh1rBATERER1VqdAvGNGzesVnxQq9U4d+4cunTpAn9/f0t78+bNkZubW5dL0W34pDoiIiIi26hTIJZKpSgrK7N8ffz4cej1+gqPbtZoNDVado3uTsZVJoiIiIhsok6BuGXLljh69Kjl6w0bNkAQBAwYMMBqv7NnzyI4OLgul6LbSCUCzEsRMxATERER1V6dbqobOnQoli9fjrFjx0IikeCPP/7Avffeiw4dOgAADAYDNmzYgKNHj2Ly5Mk26TCZCIIAuVQCrd7IKRNEREREdVCnQDxlyhScOHECR44cAQCEhIRg6dKllu3Xrl3DokWL0KxZMwbieiCX3QzEhvp5Wh4RERFRY1CnQOzm5oY1a9bg2rVrKCwsRLt27aBQKCzbw8PDMXHiREyaNMnqJjuyDfM8Yr3eYOeeEBERETmvOgVis1atWlXaLgiC06/368jMK01wygQRERFR7dkkEGdkZGDXrl34888/kZeXB0EQEBAQgKioKIwYMQJ+fn62uAzdxsPNNHwlZXqIoghBEO5yBBERERHdrs6B+D//+Q+WLVsGvd4Uysrbtm0bli1bhoULF+Khhx6q66XoNioPOQBAbxBRpjPAXWGTzzdEREREjUqdEtTBgwfx/vvvw8PDA2PGjEHnzp3h7+8Po9GI3NxcnDhxArt378bcuXPRokULdO7c2Vb9JgDKm4EYAIo1OgZiIiIiolqoU4Jav349fHx8sHHjRrRs2bLC9rFjx2Lq1Kl46qmn8MUXX2D58uV1uRzdRnVbIA704cNPiIiIiGqqTg/mOHfuHB588MFKw7BZREQEHnzwQZw8ebIul6JKqDxufZ4p1ujs2BMiIiIi51WnQFxcXIymTZvedb/Q0FDk5+fX5VJUCZW7dYWYiIiIiGquToHY29sbycnJd90vLS0N3t7edbkUVaL8HGK1Rm/HnhARERE5rzoF4i5dumDPnj24dOlSlftcvHgRcXFxuPfee+tyKarE7XOIiYiIiKjm6nRT3aRJk/Dzzz/jb3/7G0aOHIno6GjLE+lycnIQHx+P3bt3w2AwYMqUKTbpMN3CQExERERUd3UKxPfddx8WLlyIxYsXY+vWrdi2bZvVdlEU4eHhgUWLFqFbt251uRRVQuVZfsoEAzERERFRbdR54dq//e1vGDhwIHbu3Ilz584hJyfH8qS6Tp06YeTIkXxSXT1hhZiIiIio7mzyJIfAwECMHz++yu379u3D1q1bsWLFCltcjm7ycJNBEABRZCAmIiIiqq063VRXXUlJSdi3b19DXKpRkQgClDeXXmMgJiIiIqqdBgnEVH/M0yYYiImIiIhqh4HYyZkDcanWAL3BaOfeEBERETkfBmInp/LgShNEREREdcFA7OSUHrfui+S0CSIiIqKaYyB2clx6jYiIiKhuGIidnHUg1tuxJ0RERETOqcbrEN9///01vkhpaWmNj6HqsZpDXMoKMREREVFN1TgQ5+Xl1epCgiDU6ji6M06ZICIiIqqbGgdiPmDDsVgF4hIGYiIiIqKaqnEgbt68eX30g2pJyQoxERERUZ3wpjonxykTRERERHXDQOzkrAIxb6ojIiIiqjEGYicnk0rgppAC4JPqiIiIiGqDgdgFqNxNVWJOmSAiIiKqOQZiF6DyNAVitUYPURTt3BsiIiIi58JA7ALM84iNoghNGZ9WR0RERFQTDMQugCtNEBEREdUeA7ELMM8hBoAiBmIiIiKiGmEgdgFKj1vPV+FKE0REREQ1w0DsAjhlgoiIiKj2GIhdgHUg5k11RERERDXBQOwCWCEmIiIiqj0GYhegLBeIOYeYiIiIqGYYiF2AFyvERERERLXGQOwClAzERERERLXGQOwC3BVSSCUCAE6ZICIiIqopBmIXIAiC5cY6PpiDiIiIqGYYiF2EORCzQkxERERUMwzELsI8j1irN0KrM9i5N0RERETOw6ED8aZNmzBixAhERUUhJiYGsbGx0OmqroBqtVrExsaiX79+iIqKwvDhw7Fly5YK+6WkpGD69Ono2rUrevTogWnTpiEtLa0+30q941rERERERLXjsIF427ZtmDdvHp544gnExcVh/vz52LZtGxYtWlTlMfPnz8fWrVvx7rvvYseOHRg7dizeeecd7Ny507JPYWEhxo8fD4PBgO+++w5r1qxBRkYGpkyZAqPR2BBvrV6oPGSW1wzERERERNUnu/su9rFixQqMHDkSEydOBACEhYXhxo0bWLBgAaZNm4bg4GCr/VNTU7F161YsWLAAgwYNAgBMmDABp0+fxscff4wRI0YAANavXw+tVouPPvoI7u7uAIAPP/wQFy9ehE6ng5ubW8O9SRviwzmIiIiIaschK8TXrl1DcnIy+vfvb9Xer18/GI1GHD58uMIxR44cgSiKGDBgQIVjzOcDgD179mDIkCGWMAwArVq1wrBhw5w2DAOAl4fC8rq4VG/HnhARERE5F4cMxImJiQCAFi1aWLWHhIRALpcjISGh0mMUCkWFyrH5HAkJCdDpdLhy5QrCwsLw4YcfYtCgQbj//vsxZ84c5Obm1tO7aRhKTpkgIiIiqhWHnDJRXFwMAFAqlVbtgiBAqVRatt9+zO37A4BKpQIAFBUVoaCgAHq9Hl9++SWGDx+OFStWICUlBYsWLcLEiROxbds2SCTV/4wgkQiQ3Hwghq1IpRKrv6vLR3Wruq0p00Mmc8jPOo1GbceRHAvH0TVwHF0Dx9H5OfIYOmQgri96vWkqQVhYGN58800AQIcOHSCTyfDSSy9h3759eOCBB6p9Pn9/JQTBtoHYzNvbo0b7hzQptbzWGkX4+VX8cEANr6bjSI6J4+gaOI6ugePo/BxxDB0yEHt7ewNAhUqwKIpQq9WW7eV5eXlBrVZXaC8qKrKc01wtjoqKstqnR48eAICLFy/WKBDn5qrrpULs7e2BwkINDIbqr3oh6m+tPZyTV4K8vIrfC2o4tR1HciwcR9fAcXQNHEfnZ68xrE6R0CEDcXh4OAAgKSkJ0dHRlvaUlBTodDq0bdu20mO0Wi3S09MREhJiab927RoAoG3btlCpVAgKCkJBQYHVsebl1syBubqMRhFGo1ijY6rLYDBCr6/+D4u7Qmp5XVSiq9GxVH9qOo7kmDiOroHj6Bo4js7PEcfQ8SZxwDSlITw8HAcOHLBq37dvH2QyGWJiYiocExMTA4lEgv3791u17927F5GRkWjWrBkA06oThw4dQllZmWWf+Ph4AEBkZKSt30qDUbrzpjoiIiKi2nDIQAwAM2bMwO7du7Fu3TqkpqZi7969WLlyJcaPH4+AgACcOXMGw4YNs4TZ4OBgjBs3DsuXL8f+/fuRmpqKzz//HAcOHMCsWbMs533++edRWlqKmTNnIiEhAUeOHMHixYsRHR2N3r172+vt1plUIoGnmykUMxATERERVZ9DTpkAgGHDhmHp0qX47LPPsGzZMgQGBmLChAmYNm0aAECj0SAxMRElJSWWY958802oVCq8++67yM3NRevWrfHRRx9h4MCBln1atWqFr776CrGxsXjkkUegUCjwwAMP4K233mrw92hrKg85Ssr0fDAHERERUQ0IoijWzyTYRiA7u8jm55TJJPDzUyIvT13j+TWLvopHQlohBACf/32gzW/4o+qryziS4+A4ugaOo2vgODo/e41hUJDXXfdx2CkTVHOqm49vFgGoS1klJiIiIqoOBmIXonSXW15zHjERERFR9TAQuxBzhRhgICYiIiKqLgZiF6Ly4NJrRERERDXFQOxCWCEmIiIiqjkGYheiLBeI1Rq9HXtCRERE5DwYiF0IK8RERERENcdA7EIYiImIiIhqjoHYhaispkwwEBMRERFVBwOxC2GFmIiIiKjmGIhdiEIuhUJmGtJiPqmOiIiIqFoYiF2MeaWJ4hIGYiIiIqLqYCB2MeZpE8UaHURRtHNviIiIiBwfA7GLMQdig1FEqdZg594QEREROT4GYhej5EoTRERERDXCQOxirFaa4I11RERERHfFQOxiVB4yy2suvUZERER0dwzELkblobC8ZiAmIiIiujsGYhdTvkKs1ujt2BMiIiIi58BA7GL4tDoiIiKimmEgdjHlV5ngwzmIiIiI7o6B2MUEeLtbXqflqO3YEyIiIiLnwEDsYnxVbvDzcgMAXMsohJFPqyMiIiK6IwZiF9Q6xBsAoCkzIDO3xM69ISIiInJsDMQuqHWIl+V1QlqhHXtCRERE5PgYiF2QuUIMAInpDMREREREd8JA7IJaNS0fiIvs2BMiIiIix8dA7II83WUICfAEACRnFUGnN9q5R0RERESOi4HYRZmnTegNIlKyi+3cGyIiIiLHxUDsosrPI+aNdURERERVYyB2UbyxjoiIiKh6GIhdVFgTFaQSAQADMREREdGdMBC7KLlMghbBKgBARk4JSkr1du4RERERkWNiIHZhrW5OmxABJGWwSkxERERUGQZiFxZe/sY6TpsgIiIiqhQDsQuzvrGOD+ggIiIiqgwDsQtrGuAJd4UUAG+sIyIiIqoKA7ELkwiCpUqcV1SGvKIyO/eIiIiIyPEwELu4ViFeltfXWCUmIiIiqoCB2MXxxjoiIiKiO2MgdnF8Yh0RERHRnTEQuzg/Lzf4qBQAgGvpRTCKop17RERERORYGIhdnCAIaN3UVCUuKdMjK09j5x4RERERORYG4kagdbNy0ybSOG2CiIiIqDwG4kaAN9YRERERVY2BuBEov/Qab6wjIiIissZA3Ago3eUI9vMAAFzPLILeYLRzj4iIiIgcBwNxI2GeR6w3iEjKKLJzb4iIiIgcBwNxIxER6mt5ve9kiv06QkRERORgGIgbiV4dg6HykAMAjv2Zicy8Ejv3iIiIiMgxOHQg3rRpE0aMGIGoqCjExMQgNjYWOp2uyv21Wi1iY2PRr18/REVFYfjw4diyZcsdrzF58mRERkYiJcW1q6buChke6BEGABBFYMfRJDv3iIiIiMgxOGwg3rZtG+bNm4cnnngCcXFxmD9/PrZt24ZFixZVecz8+fOxdetWvPvuu9ixYwfGjh2Ld955Bzt37qx0/82bN+PYsWP19RYczuCuofB0kwEAjp7LwI18PqSDiIiIyGED8YoVKzBy5EhMnDgRYWFhGDJkCGbMmIGNGzciMzOzwv6pqanYunUrZs2ahUGDBqFly5aYMGEChg8fjo8//rjC/llZWYiNjcWTTz7ZEG/HIXi6yzCkeygAwGAUEXfsup17RERERGR/DhmIr127huTkZPTv39+qvV+/fjAajTh8+HCFY44cOQJRFDFgwIAKx5jPV97ChQsRHR2NBx980Ob9d2RDuofBTSEFABw+k4a8ojI794iIiIjIvhwyECcmJgIAWrRoYdUeEhICuVyOhISESo9RKBQIDg62ajefo/wxcXFxOHLkCBYsWGDrrjs8lYccg7o2B2Bagm0Xq8RERETUyMns3YHKFBcXAwCUSqVVuyAIUCqVlu23H3P7/gCgUqkAAEVFprV38/PzsWjRIsyZMwchISG4fr32gVAiESCRCLU+vjJSqcTq7/ow8v5W2BefAq3eiIOnUjEmpjW8lYp6u15j1BDjSPWP4+gaOI6ugePo/Bx5DB0yENenJUuWICwsDOPGjavzufz9lRAE2wZiM29vj3o5LwD4+SkxrHcr/HgoAVq9EQdOpWHiQx3r7XqNWX2OIzUcjqNr4Di6Bo6j83PEMXTIQOztbXqq2u2VYFEUoVarLdvL8/LyglqtrtBurgx7e3vj0KFD2LNnD7Zs2QKJpO6fTnJz1fVSIfb29kBhoQaGenzE8uDo5og7cg06gxE7jiRiUHQzeHmySmwrDTWOVL84jq6B4+gaOI7Oz15j6OdXcQbB7RwyEIeHhwMAkpKSEB0dbWlPSUmBTqdD27ZtKz1Gq9UiPT0dISEhlvZr164BANq2bYtPPvkEpaWlGDVqlGW7KIoAgKFDh6JHjx748ssvq91Po1GE0SjW6L1Vl8FghF5ffz8sXh5y9O0SggMnU1GqNWDXb9fxSL/werteY1Xf40gNg+PoGjiOroHj6PwccQwdMhCHhYUhPDwcBw4cwMMPP2xp37dvH2QyGWJiYiocExMTA4lEgv379+Ppp5+2tO/duxeRkZFo1qwZZs6ciUmTJlkdd/bsWbz11ltYvXo1WrZsWW/vyREN79kCh06lwWAU8VN8MgZ1bQ4flZu9u0VERETUoBxvVvNNM2bMwO7du7Fu3TqkpqZi7969WLlyJcaPH4+AgACcOXMGw4YNQ3x8PAAgODgY48aNw/Lly7F//36kpqbi888/x4EDBzBr1izLPhEREVZ/QkNN6/K2atUKYWFhdnu/9hDo44GYzqZqeqnWgI0Hrtq5R0REREQNzyErxAAwbNgwLF26FJ999hmWLVuGwMBATJgwAdOmTQMAaDQaJCYmoqSkxHLMm2++CZVKhXfffRe5ublo3bo1PvroIwwcONBeb8PhPdIvHL9fzIK6VI+j5zPQ/95miAjztXe3iIiIiBqMIJon0VKNZWcX2fycMpkEfn5K5OWpG2x+zYE/UrF+9yUAQGiQEvMn9YDUBjcdNmb2GEeyPY6ja+A4ugaOo/Oz1xgGBXnddR+mHkL/Ls3QsqnphyUlW439J1Lt3CMiIiKihsNATJBIBDwzNMLy9bZfEpBfzEc6ExERUePAQEwAgDbNfNCvi+kGO02ZAZsOXLFzj4iIiIgaBgMxWTzWvw2U7qb7LI+ez8Sl63l27hERERFR/WMgJgsvTwUe69/G8vV/f7oMPZ8GRERERC6OgZis9Ct3g11qthp741Ps3CMiIiKi+sVATFYkEgHPDo2EcPPr7w8lICWr2K59IiIiIqpPDMRUQXgzbwzpbnpqn95gxOr/nYdOb7Bzr4iIiIjqBwMxVerxAeEIDVICMK1NvOVggp17RERERFQ/GIipUnKZFM+P6giZ1PQjsuf3ZJxPzLVzr4iIiIhsj4GYqhTaRIXHB9xadWLNjj9RrNHZsUdEREREtsdATHc0pHsoOrbyAwDkF2vxZdxFiKJo514RERER2Q4DMd2RRBAweWQHqDzkAIATl7Pxy9l0O/eKiIiIyHYYiOmu/LzcMGFYO8vX3/z0F+KOJaFUq7djr4iIiIhsg4GYqqVbZBBiOocAAMp0Bmw6cBWvr/oV/zuSiJJSzismIiIi58VATNU2bkgE7u8YbHloh7pUj62HE/H6v3/F94cSeMMdEREROSUGYqo2N4UUU0d1xD+f64n7OzaFRDBFY02ZAdt/vYZFX8azWkxEREROh4GYaqxZoBJTR3XAkud7IqZzCKQSUzDOytdg/Z7Ldu4dERERUc0wEFOtNfHzxKQR7bHouZ7wdJMBAI79mYnfzmfYuWdERERE1cdATHUW7O+JZx+MtHy9fs9l3CjQ2LFHRERERNXHQEw20bNDMHp1DAYAaMr0WLP9AoxGPsCDiIiIHB8DMdnMMw9EIMDbDQBwKTkfu49ft3OPiIiIiO6OgZhsxtNdjuce6mBZlu37QwlIyiiya5+IiIiI7oaBmGwqsoUfhvdqCQAwGEWs/t95aHUGO/eKiIiIqGoMxGRzD8e0RotgFQAgPacE//ftH/grJd++nSIiIiKqAgMx2ZxMKsHzozpCLjP9eF1NLcR7/z2J5ZvPICWr2M69IyIiIrLGQEz1olmgEjP/1gVN/T0tbaeu3MD8tcfxxfY/cSOfy7IRERGRY2AgpnrTvqUf/vncfZg4vB38vEyrT4gAfj2Xgbc+P4bjFzLt20EiIiIiADJ7d4Bcm1QiQb8uzdCrQzD2n0zFjqPXoC7VQ28w4rMfzkOt0WFg11B7d5OIiIgaMVaIqUEo5FIM69kCsS/2Rp9OTQGYqsXr91zG/44kQhT5EA8iIiKyDwZialCe7jJMHtEeI24uzQYAWw8nYsO+v2BkKCYiIiI7YCCmBicIAh4f0AZPDGxradsbn4I12/+E3mC0Y8+IiIioMWIgJrsZ1rMFJo1oB+Hmo+2Ons/Ex5vPIL+4zL4dIyIiokaFgZjsKqZzM7z8SCfIpKYfxfOJuZj3xTEcPZ/BecVERETUIBiIye66RgRhzpNd4O0pBwCoS/X4/H9/4pMtZ1ktJiIionrHQEwOIbKFH/75XE/c176Jpe3UlRumavE5VouJiIio/jAQk8Pw8lTgxTFRePmRKOtq8fY/Efv1Sfx5LZfBmIiIiGyOD+Ygh9Mtsgkiwnzxzd6/cOxP09PsLqcU4INvT6FtqA9G92mFjq38IZjvxiMiIiKqA1aIySF5eSrwwuiOmP5oJzT197S0X0kpwIffncaS9Sdw+soNGI2sGBMREVHdsEJMDq1rRBDubRuI4xcz8b8j15CeUwIAuJpWiI83n4GvSoFeHZqiV8dghDVRsWpMRERENcZATA5PIhHQq0NT3Nc+GCcuZePHI4lIzVYDAPKLtdh1/Dp2Hb+OZoFK3N8xGL06NEWAj7ude01ERETOgoGYnIZEENCjXRN0iwzCqb9u4Jcz6TibkAPDzWkTaTfU2HIwAd8fTEC7ln7o2ykEXSOD4CaX2rnnRERE5MgYiMnpSAQBXSOC0DUiCMUaHX6/mIWj5zNwJaUAACACuJCUhwtJeXDfI8V97ZugT6cQtG3uwykVREREVAEDMTk1lYccA6ObY2B0c2Tna3D0fAZ+PZuBrHwNAKBUa8Ch0+k4dDodEWG+mDSiHYL9PO9yViIiImpMGIjJZQT5emB0n9YY1bsV/kopwJGz6Th+MQtlWgMA4HJyPuavOY7H+rfB4O6hkLBaTERERGAgJhckCAIiwnwREeaLcUMiEH8pCz/8kogbBaXQ6o3YsO8vxF/KwuQR7RHsz2oxERFRY8d1iMmluSmk6NMpBAun3IdBXZtb2v9KKcD8tccRdywJGbklMBiNduwlERER2RMrxNQouCtkeGZoJLpHNsG6uAvIzjdVizcduIpNB65CJhXQ1N8TzQKVaBagRItgL0SE+cDTXW7vrhMREVE9YyCmRqVdSz8snNwTmw9exb4TKZZ2vUFESrYaKTfXNwYAAUCLYC9EtvBFuxZ+DMhEREQuioGYGh03hRRPPxCB3lFNceqvG0jPUSMtpwSZuSWWNY0B0/JtSZlFSMoswp7fkyEIwD2hvujVIRjd2zWByoPhmIiIyBU4dCDetGkT1q1bh+vXr8PPzw8PPfQQZs+eDbm88iCi1Wrx0UcfYceOHcjNzUVYWBiee+45PPbYY1b7bd68GevXr8f169fh6+uLPn36YNasWQgICGiIt0UOonWIN1qHeFu+1huMyMrTIPWGGldSCnDpeh6Ss4phjsiiaFqp4nJyPr7+6TI6tvZHzw7BiL4nEO4Kh/6nRERERHfgsP8V37ZtG+bNm4e5c+di8ODBuHTpEubNm4eSkhIsWLCg0mPmz5+PAwcOYMmSJWjTpg1+/vlnvPPOO/Dw8MCIESMAAOvWrcPSpUvx+uuvY/DgwUhKSsK8efOQkJCAr7/+mg9uaMRkUolpDnGgEj3aNQEAFGt0+Cs5Hxev5+NsQg4ycksAAAajiDNXc3Dmag4UMgkiW/ghqrU/osL90ZQrVxARETkVQRRF8e67NbwhQ4agS5cuWLZsmaXt22+/xYIFC/Dzzz8jODjYav/U1FQMHjwYCxYswJNPPmlpnz17Ns6fP4/du3dDFEXExMQgJiYG7733nmWfjRs3Yt68efjhhx/Qrl27avcxO7uoDu+wcjKZBH5+SuTlqaHXc+UDRyKKIpKzivHbn5k49mcm8orKKt0vwNsNndoEos+9zREerAI/Yjkv/nt0DRxH18BxdH72GsOgIK+77uOQFeJr164hOTkZr776qlV7v379YDQacfjwYTz++ONW244cOQJRFDFgwIAKx+zYsQPJyckICwvD9u3bIZVKrfYxh2u1Wg2iqgiCgBbBXmgR7IXHB7TBlZQC/PZnJv74KxsFxVrLfjmFZfj5j1T8/EcqlO4y9GjXBPdHNeWjo4mIiByUQwbixMREAECLFi2s2kNCQiCXy5GQkFDpMQqFokLl2HyOhIQEhIWFwdfXt8Kx+/btg6enJyIiImz0DsjVSco9/OPZoRFIzVbjXGIuziXm4HJyAfQG0ydfdakeP59Kw8+n0hDo4477OzZF0wBPiKIIUQSMN/+WSgQ0D1IiNEgFmZTLgxMRETUkhwzExcXFAAClUmnVLggClEqlZfvtx9y+PwCoVCoAQFFR5dMb9u/fj40bN2LmzJnw8rp7Sb08iUSARGLbip/0ZhiSMhQ5lVbNvNGqmTce6tMKZToDLl3PR/ylbBw9m4YynSkc3ygoxf9+vXbH88ilErRoqkLrEG+EN/NGy6beaOLnATe59I7HUf3gv0fXwHF0DRxH5+fIY+iQgbihxMXF4fXXX8eoUaPwwgsv1Ph4f39lvf0K3Nvbo17OSw2jaRNv9O/eApqyLjh6Nh0HTiTjzF/ZMN5lxr7OYMTV1EJcTS20avf1ckNTf080DVAiOMATrZv5oGPrAPh6udXjuyAz/nt0DRxH18BxdH6OOIYOGYi9vU1LYd1eCRZFEWq12rK9PC8vr0rnAJsrw7cfs379eixZsgTjxo3D22+/Xatgm5urrpcKsbe3BwoLNTAYeNOAszKPo65Mh+g2/ohu44+8ojKcuXIDZXoDJIIAiSBAEEzTLzRaPa6lF+FqWiEyb65kUV5+URnyi8pwMSnPqj0kwBORLfwQ2cIX94T6wF0hgyCYfpsiCIAAAQq5hNMwaon/Hl0Dx9E1cBydn73G0M+v4gyC2zlkIA4PDwcAJCUlITo62tKekpICnU6Htm3bVnqMVqtFeno6QkJCLO3Xrl0DAKtjNmzYgMWLF2POnDmYOnVqrftpNIow3q3kV0sGg5F30bqA8uPo5SFHn04hdzkCUJfqcC2jCIlphUjPKUF2gQbZ+RqrG/fM0nNKkJ5TgkPXTkDe7CogiIBRCtEoNf1tkEIQJfCQucPLwx0+Hh7wU3oi0EuJAC8l3GRuUEjkUEgVUEjlkEsUcJPe/Foih1yqgEyQNvqbAfnv0TVwHF0Dx9H5OeIYOmQgDgsLQ3h4OA4cOICHH37Y0r5v3z7IZDLExMRUOCYmJgYSiQT79+/H008/bWnfu3cvIiMj0axZMwDA0aNHsXDhQsydOxcTJ06s77dCVGNKdzk6tvJHx1b+Vu1anQE3CkqRmVuCK2kFuJycj2vpRTAYRcibX4XEs+plALUAcgDkGAEU3fxTTRJBcjMcy6GQmIKz5e+bwVkhVUAulcOt3Ha5VA7FzTa5tOrjFBI5ZBJZow/dRERkPw4ZiAFgxowZmDlzJtatW4ehQ4fiwoULWLlyJcaPH4+AgACcOXMGf//737Fo0SJ0794dwcHBGDduHJYvX46QkBBERkZi586dOHDgAP79738DME25+Oc//4no6GiMHDkS2dnZVtf09PSs9MY8IkegkEstDw6JjggCAJTpDEhILcCBpDJc0h2DQSiDKBhsel2jaESpoQylhsrXXbYFAYJVYJbfDMpuN4P2rSBurmZbB2qFtGIQV0gUVsfLGbqJiKgKDhuIhw0bhqVLl+Kzzz7DsmXLEBgYiAkTJmDatGkAAI1Gg8TERJSU3Jpv+eabb0KlUuHdd99Fbm4uWrdujY8++ggDBw4EAKSlpeHq1asAgL59+1a45vTp0/HKK680wLsjsg03uRTtW/mjfavhAIYDMAVYvVEPrUEHrVELrUELjb4MWfnFyMgrQmZhMbILinGjsBjF2jIIEgMgMUCQmv6GxGhpg8QAmdwImVyEKBhghB6iYIAo6GHLJ46IEFFm0KLMoAV0tjtveQIEyCWy2wK1eZrIrSkjinKVbTe5G3xVSui1gAyySoK4+bXpOJlEBonA+dpERM7GYZ9U5wz4pDqqirOMY35xGRLTCpGQXoiEtEJcyyiEpqw6FWYREIyA1GAJz+7uQFhTTzRv4g6p3AitXodSQxl0Bh20Rh0Moh4KNxFyhQiZXIQgMUAn6kzbDTqUGbXQGbTlgrwOIpzvf57k5sq2VeX69sq2uep9a7t1VbzywK2QmirdDN014yz/HunOOI7Oj0+qIyKH5KtyQ3REkGUKhlEUkZ2nQWJGIa6lF+FaRhGSMotQprUOyRJBAolEAr1eaomsmlLgcj5w+aL55j8BgPvNPxVJBAEBPm4I9PGAn8oNvl4K098qN3grFcgrKkXKjUKk5hYhM78QWQVqGAU9ggMUaN/aG21CVVAoRGiNOpQZtDeDtzlQ66A1mKrjltdGU/guM2ihNWotr20dunVGHXTGeipz32SpdEuqCtS3z9e+Vfk2TytxK1ftFgQBEGH1vRBhemjMra/Kvb59X8uO5tab/7+Sc5o3ixXOWcl+N89dYYt46yoV+1GuBzf3k0gFeBa4QV1SBoPBWOFat97mbf03dfS2/W69t/LXun1fqx7fsb/l96vwHbS6ltU2sUJPb3sPgM5ggCiKkMuklmuJqPy9WZ2lkn5U9rMgAJAKUkgkEkgF6c0/koptVq9v7WPeJqlsP0EKiSCxanODDHqDG1jHo/rACnEdsEJMVXGlcTQaRZSU6SGVCJBJJZBKTUvGiaKIrHwNLiTl4WJSHi4k5aGopH6DYHkCgHYt/dCrYzCi7wmCykNe43OIogiDaLAOzuUCtQF6yD0E5BUWQ6MrK7ddW0VlW1fJubQwis79M0DkaCSCxCpYVxnAKwnW5V9LKgT2m4EeEhSXGCAVJPD38oBMIoXk9jAvSG623WyXSKvow61tt64nsepfY7m/wZErxAzEdcBATFVpjOMoiiJSb6iRkGZ6qIhcJoFcKoFcJoFCJoFBFHEjvxRZ+aZl5LLzNMjK16BUe/cpGlKJgKb+npBKBVzPrPikSsA0n9pHqYC3SgEfT9PfHgoZZFLBqi9SqQR6gxE6vemP+bVUKkGzQE+EBqrQNMATMqnEZuNoMBqgNZrmSGsNpgqy1mp6SFWVbZ1VNdtU5a4YuLUGHQyibW+mJKKGIxGqCvQSABJIIIFCJisXuiWWivutYyXW28sH9CrDe/XPI7njNazPUxVHDsScMkFENiEIAkKDVAgNUlX7GFEUoSkzIK+4DPnFpoeP5BeXoaBYCy+lAs0ClGgW6IkgXw/Lw0Uyc0vw25+ZOHo+A1l5Gsu5ynQGZOWbQnZdmQN4WBMVvL3ckVeogVqjg6ZMj5JSPUp1Bni6yeDlIYeXpwJeSgW8POTwcJPBYDTCYBChM5j+1huMMBhFGG6uW24wmr4WRSDAxx1hTfwR1kSFpoGeFR6gUlKqN314yNfAIBHhq1LAz8sNPiq3Co/zNoXumyH65rQQU/g2/X2nQH2rLmKqUpVpDdBo9ZDLpHCXSyGXmSpYQrk7KQUIlhsrRSNQWKJDXmEpcovKkFdYBp2hXK1FhNX5yxMgQOUhh8pDjmKN7uZvGYRyx1RyrFjxXEp3Gdq18EN4Mx/LY2HN/ZVKBHh6uiE5oxCXr+fjWkYh9OU/P9y8lptcCn9vdwR4uyMkQIkmfh5QyKSWawkAIJjOKopAUYkWeUVlKNUaoNUZUaYzQqszoExrgCAI8FO5mc7n4w5vpcIqKGh1RhSqtShUa1FUokP50pS53zKpBEG+7gj08YS7wjTegiDAKIq4nJyPX89moECtBUTr74UAASpPOXyVbsi2fOg07RN9TyAGRYdCfvPnx3wtU4HythEWrPtj2XrzoT/m37AYRCPy1aU4czULF67nQmcwwE0hQKEQIJcLUMgBmUyAVAZIJSIECSCRipBIRBSUlCH1RhG0er3pvgRBLPe3CEEQIZWK8PdRwM9HAblcAk1ZGcp0eugMeuiMBuiNBoiiEab/M0C8+Uq8+ccZGEUjjKIROugAJ/9sK0C4VcEvF5glghQyiRQ+Hl4Y0eoBRPreY++uWmGFuA5YIaaqcBzrnyiKSEgvxLHzmUjJLkbBzXChLtXbu2u1IpMKaBaoRIC3O/KKypCdr7nje/F0k8HPyw1Bvh5oFqhE85tL8jUN8ISbXIqSUh1Sb6iRdkON1BtqpN9Qo1RngI/SDb4qBXxVbvBRKeCjdEN+cRmSs4qRnFWMlKxilJRZX1cmFeCjdIOflxvcFVJotHpoygzQlOmhKdNXq8pfG21DfdA9sgmaByrhppDCTS6Fm8IU0q9nFWH7r0m4nJxvdYxCJoGftzv8vUzz0f293eDpLsPJv27gakpBja4vlQhoHeKNdi390K6FL7Q6IxLSC5GYXohr6YU1+llzu7lsIgBk52tQrKnZ9KImfh5oGeyF0CAlTlzOrvCbkvvaN0GfTiFo4usBf293yGWm8J1fXIa1Oy/gXEKuZd9gPw+MiWkNtcb0gSsrT4PMvBLkFJRCIZciwNsd/t5ulg8H/t6mn7MgXw8o3W8tXyiKIi4m5eHAH6k4efkGjDaIEz5KBXp2CEZmbglOX82x2iaVCBAEAfoaP+HMOmSbXwu3t0lutXm4SRAa7AmtXo/r2YU3z2F9HolEhJdSBm+lDCqlDB5uEmgNepTqdCjT6aHV61Gm10GQiPBWyuGtksFNIcAgGmEwGiwfJoyiEVq9HhqtFhqtDqV6HYyiEYJQsd+CxDUiW1vf1pjV9aUGux6nTNQzBmKqCsfRfnR6U+WtQK1Fmc5gmRJh/ttgFCGV3JxGYf4jlUBTZkDqjWKkZKuRkl2MjJwSGG57EqUAwMNNBjeFFCVl+go3GzoCAYCnu8yuHwy8PeWIaOGHe0J94OUpv3njlACpRIBEIqBUq0dGTgnSctRIu1GCjNwSS8i5J9QH3ds1QffIJvDzcrvrtS4n52P70WtWge9u3BVS3N+xKXp2CEahWoukTNPNo9czi1GorvhESEfWvqUf/jawDVo19a5yH1EU8fOpNHy3/y9odXX73yMPNykCfUzhOD1HjfQc60fNCwLgrVRAU6av9rWkEgH33hOIvp1CEBXuD6nEFOZTs4ux6/h1/HY+s8K/RVuSSkwV9TbNfNCuhS/atfRDs0AlJDeDf0FxGY5fyMLR8xm4llG3/+77ebmhS5sAdG4TCK3egIvX83Hpel6F72N5LYJVKC0z3Pztl+nWTLlcwODuzeDrJcfRP9NxPetmaJfcXmE3vVZ6StEyWAlfbzmUHlIoPaTw9JDCTSGBRqdDZp4aWflqZBeokVtcCqPRCKlMRLNADzRvooTKU3ozxBtNQd5ogFavR26xBvnqUugMBshlgEwGSKWm3wAIEgCCEaJovHWcaICH3B0PtxmO6KAudfpe1gQDcT1jIKaqcBydn95gRE5hKVReHtCV6eAmk8BNIbX8RxIwPT2wqESHIo3p196aMr1p7rFUuPm36SZEmURiCYPmv0VRREZuiaUym5xVjIzcEoiiKVT4e7kjyNfdUpmTSSWmaSWWqSVa5BWXQWfjny8/LzeENVEh2M8TGq3eMo0lv1hrVdVUyCXwcJPB000GDzcZmvh6IKKFLyLDfNHU37NGNwkZjSJuFJbCXS6Ft1JRq35fyyjE7uPJSMooQl5RGcp0FT+stA7xRv97m+G+9k3grqh8xmBeURmupBZYbhbNyK08qHgrFQgP8UbLpl7w83KDp5sMnu4yKN3l8HSXQW8wIvXmh6vkrGKkZquRla+BAMDXyw1NfD0Q5OeBJr4eCPR1h1wqrXANdanOFNYzipCcVWw11i2CVfjbgLbo2Nq/wnFVycgtwef/+xOJ6YUVtsmkEgT6uEOnNyCvSFvjaq+3UoF+XULQv0tzBPiYVpbRG4woKdNDU6pHSZneNJ1EZ55eYoBWZ4BCLkWXtoF3vCk2r6gMP8Un44+/bsDj5lQln5u/5fBTKeDlqYBMKrH69yURbk4vMYowijf/GE0r6bjLpVZj5a6o/uPp03PUOHEpG8lZxUjLUVf6wbmu5DIJ2rf0Q5e2gejSJgD+3u7QG4zYfzIV/zuSeMcPuzKpgI6t/JFdUIq0G+q7XksqEarV/5ZNvTAwujk6hQfgz2u5iL+YhXOJudU61sNNCi9PBbw9FfBRKdC8iRf6dw6p1gdeW2EgrmcMxFQVjqNraOhx1OoMKCzRwlflVmE+cWWMoojcglJLpTXthhppOWrkFZUhyMcdzYJUpqkUAZ5oFqSC0l2GQrUpSBcUay3ztZUecoQ1USGsieqOwUSnN6BMZ4S7Qlqt/tmLZW56USnyisugLtWjfXgg/JXyGo9jXlEZLl7Pw5XUArjJpQgP8UbrEG/4e7vVeGWAMp0BEgGQyyqG37sxGI1IzzF9gPL2VKB9Kz+rD2c1Oc9v5zORmVeCQB9TIG/i5wFfLzfL+QxGIwqKtcgpLDX9KSjFjYJSy3z23MIySxCKDPPFwK7N0TUiqN5/Jhzxf1f1BiOy8zVIzVYjp7AUnu4y+ChNId38d0FxGU5fzcHpqzdwMSm/wpQPiSCgdYjXzQ+UfogM84WbovKfkWKNDtt/vYZ9J1KswmhokAoxXUJwf8emln/DN/I1OJOQgzNXc3AxKQ/aan7PgnzdERqkwoWkvHqbDhUV7o/ZT9xbL+euDANxPWMgpqpwHF0Dx9E1cBxty2A0IrewDDKppEGrfK4wjmVaA/5MysXFpHwo5BJEtvBF2+Y+Vf7GoipZeSXYdTwZMqmA3lFN0TLY644f0LQ6A1JvqC0fbsp/0FHIJWjTzAf3hPqgbagPfFWmMS3V6nH8QhYOnExFUmbFvOPn5YbukU3Qo10TtAhWIafw1genG/mlyC7QoODmTaNFaq3VvQkP9W6FR/uF1+g91wUDcT1jIKaqcBxdA8fRNXAcXQPH0X4S0wvx8x+pSMtRo3WIN3q0a4I2zX1q9FsKnd4IjVYPHx9PSEUjl10jIiIiIufR+uZUobqQyyTwcHeHn68H8vLuPr+5oTnuJDAiIiIiogbAQExEREREjRoDMRERERE1agzERERERNSoMRATERERUaPGQExEREREjRoDMRERERE1agzERERERNSoMRATERERUaPGQExEREREjRoDMRERERE1agzERERERNSoMRATERERUaPGQExEREREjRoDMRERERE1agzERERERNSoMRATERERUaMmiKIo2rsTRERERET2wgoxERERETVqDMRERERE1KgxEBMRERFRo8ZATERERESNGgMxERERETVqDMRERERE1KgxEBMRERFRo8ZATERERESNGgMxERERETVqDMQOZNOmTRgxYgSioqIQExOD2NhY6HQ6e3eL7mLz5s0YM2YMoqOjMXDgQLzzzjvIycmxbP/rr7/w3HPPITo6GtHR0Zg6dSquXr1qxx7TnUyePBmRkZFISUmxtMXHx+Ppp59Gly5d0L17d8ycOROZmZl27CVVJiUlBdOnT0fXrl3Ro0cPTJs2DWlpaZbtHEfHp9frsWbNGjz00EPo3LkzevXqhbfeegvZ2dmWfTiOjuk///kPoqKiMGvWrArbqjNmGRkZmDlzJnr06IHOnTtj3Lhx+OOPPxqq+wzEjmLbtm2YN28ennjiCcTFxWH+/PnYtm0bFi1aZO+u0R2sW7cO8+bNw5gxY7Bt2zYsWLAAhw8fxiuvvAJRFJGXl4fx48cDAL799lusX78eUqkUEyZMQGFhoZ17T7fbvHkzjh07ZtWWkJCAKVOmICwsDFu3bsVnn32GtLQ0PPfcc/zA6kAKCwsxfvx4GAwGfPfdd1izZg0yMjIwZcoUGI1GjqOT+Pjjj/Hxxx9j6tSp2LFjBz7++GOcOnUKU6dOhV6v5zg6oPz8fLz44otYs2YN3NzcKmyvzphptVpMmjQJycnJWLNmDTZt2oTWrVtj8uTJSE5Obpg3IpJDGDx4sDh79myrtg0bNojt2rUTMzIy7NQruhOj0Sj26dNHnDt3rlX7d999J0ZERIgXLlwQP/nkE7FLly5ifn6+ZXt+fr7YuXNn8dNPP23oLtMdZGZmit27dxcXLFggRkREiMnJyaIoiuLcuXPF/v37izqdzrLv1atXxYiICPF///ufvbpLt1mxYoXYp08fUaPRWNoSExPFuLg4sbS0lOPoJHr37l3hf1N37NghRkREiOfPn+c4OqD169eLzz77rHjjxg1x4MCB4syZM622V2fMtm7dKkZERIhXr1617KPT6cR+/fqJ8+bNa5D3wQqxA7h27RqSk5PRv39/q/Z+/frBaDTi8OHDduoZ3YkgCNi+fTveeustq/bg4GAAgFqtxi+//ILo6Gj4+PhYtvv4+KBLly44dOhQg/aX7mzhwoWIjo7Ggw8+aNX+yy+/oG/fvpDJZJa28PBwhIaGcgwdyJ49ezBkyBC4u7tb2lq1aoVhw4bBzc2N4+hEpFKp1dcKhcLymuPoePr3749169YhICCg0u3VGbPDhw+jZcuWCA8Pt+wjk8nQu3fvBhtXBmIHkJiYCABo0aKFVXtISAjkcjkSEhLs0S2qBl9fX3h5eVm17du3D56enoiIiEBiYiLCwsIqHNeyZUuOqwOJi4vDkSNHsGDBAqt2tVqNrKysCv82AY6hI9HpdLhy5QrCwsLw4YcfYtCgQbj//vsxZ84c5ObmchydyFNPPYW4uDgcP34cAHDjxg2sXbsW9957L1q0aMFxdEBhYWEVPsSYVfff3p3+W5meng6NRmPbTleCgdgBFBcXAwCUSqVVuyAIUCqVlu3k+Pbv34+NGzfihRdegJeXF9RqdYVxBQCVSoWioiI79JBul5+fj0WLFmHOnDkICQmx2lbVv02AY+hICgoKoNfr8eWXX6KsrAwrVqzAggUL8Pvvv2PixIkcRycyffp0jB07Fs8++yyioqLQp08fiKKITz/9FGq1GgDH0ZlU99/enf5bCaBBxlZ2912IqDri4uLw+uuvY9SoUXjhhRfs3R2qpiVLliAsLAzjxo2zd1eolvR6PQBTperNN98EAHTo0AEymQwvvfRShRslyXGtXbsW33zzDebNm4du3bohNTUV//rXv/DKK69g6dKl9u4euTAGYgfg7e0NABUqwaIoQq1WW7aT41q/fj2WLFmCcePG4e2334YgCABgqRLfrqioyGpeMdnHoUOHsGfPHmzZsgUSScVfmJmnw1T2WxqOoeMwV5GioqKs2nv06AEAuHDhAgCOo6PLz8/Hhx9+iGnTpuGZZ54BALRv3x6hoaEYM2YM4uPjAXAcnUl1/zf0Tv+tFAShQXIQA7EDME8iT0pKQnR0tKU9JSUFOp0Obdu2tVfXqBo2bNiAxYsXY86cOZg6darVtvDwcCQlJVU45tq1a2jTpk1DdZGqEBcXh9LSUowaNcrSJooiAGDo0KHo0aMHQkJCqhzDXr16NVhfqWoqlQpBQUEoKCiwajcajQCAJk2acBydwPXr16HT6RAREWHV3rp1awBAcnIyx9HJeHp6VmvMwsPDcfLkyUr3ad68udXNsvWFc4gdQFhYGMLDw3HgwAGr9n379kEmkyEmJsZOPaO7OXr0KBYuXIi5c+dWCMOA6e7bP/74A3l5eZa2Gzdu4NSpUxg0aFBDdpUqMXPmTPz444/Ytm2b5Y957e/Vq1dj0aJF6N+/Pw4fPmy1xumff/6JtLQ0jqED6devHw4dOoSysjJLm7miGBkZyXF0As2bNwcAXLlyxard/CCj5s2bcxydUHXGbMCAAUhOTrYae61Wi8OHD2PgwIEN09EGWdyN7iouLk6MjIwU165dK6akpIg//fST2L17d/H999+3d9eoCkajURw+fLj41FNPiVlZWRX+FBcXi4WFhWJMTIw4efJk8eLFi+LFixfFCRMmiAMHDhTVarW93wJV4rfffrNah/j69etidHS0+Prrr4sJCQni6dOnxdGjR4t/+9vfRIPBYOfeklliYqIYHR0tvvjii+LVq1fFX375RRw4cKD45JNPiqLIcXQWM2fOFLt16yZu27ZNvH79uvj777+LjzzyiNinTx8xPz+f4+iA8vLyLP/d69evn/jSSy9ZvtZoNNUaM51OJ44ZM0Z85JFHxNOnT4tXr14VZ8+eLXbv3l1MT09vkPchiOLN3w+S3f3444/47LPPkJSUhMDAQDz++OOYNm1apXMbyf5SU1PvWJGYPn06XnnlFSQlJWHJkiU4fvw4BEHA/fffjzfffBOhoaEN2FuqrmPHjmH8+PHYt2+fZYzOnj2L2NhYnDlzBu7u7hg4cCDmzp0LPz8/O/eWyjt37pxlnBQKBR544AG89dZbljnGHEfHV1JSguXLl2PXrl3Izs6GSqVCjx498Nprr6FVq1YAOI6O5tlnn7Usk3e79957D48++mi1xuzGjRt47733cOjQIWi1WkRHR2Pu3Llo165dg7wPBmIiIiIiatRYeiQiIiKiRo2BmIiIiIgaNQZiIiIiImrUGIiJiIiIqFFjICYiIiKiRo2BmIiIiIgaNQZiIiIiImrUGIiJiKjOnn32WURGRuLs2bP27goRUY3J7N0BIqLGLCUlBYMHD672/uYnIBIRke0wEBMROQAPD49qBd3o6OgG6A0RUePCQExE5ADc3NwwZcoUe3eDiKhRYiAmInJCc+fOxdatWxEbG4ugoCCsWLECly5dgiiKiIyMxIsvvogBAwZUOG7v3r34+uuv8eeff0KtVsPHxwfR0dGYMmVKpdXnjIwMrFq1CocOHcKNGzfg4+ODgQMHYvr06WjatGmlfTt69CiWL1+OixcvAgA6duyI2bNno2vXrlb7/fHHH/jiiy9w+vRp5OXlQaVSISwsDKNGjcIzzzwDqVRa928UEVE1MBATETmxY8eOIS4uDg888AD69u2LlJQU/Pjjj3jxxRexatUqDBo0yLLv8uXLsXLlSvj5+WHo0KEIDg7G9evXsXv3buzfvx/Lli3D8OHDLfsnJCRg7Nix0Gg0GD16NEJDQ3HlyhVs2bIFP/30EzZt2oQWLVpY9efXX3/F2rVrMXr0aPTv3x9Hjx7Fb7/9hilTpmDnzp0ICQkBAMTHx2PChAlwd3fH8OHD0bx5cxQVFeHgwYNYsmQJTp8+jQ8//LBhvolERCIREdlNcnKyGBERId533301Ou6NN94QIyIixMjISPHw4cNW2zZv3ixGRESIw4YNs7SdP39ejIyMFO+77z4xPT3dav/ff/9dbNeundijRw+xpKTE0v7oo4+KERERFc7/3//+V4yIiBBfeOEFS9szzzwjRkREiL169RITExMt7UajUZw4caIYEREhrlu3ztI+e/ZsMSIiQvz555+tzq3VasWnnnpK7Natm5iWllaj7wkRUW2xQkxE5ABEUURKSsod95HL5QgODrZqi46ORt++fa3aHn74YcTGxiIhIQHJyckICwvDtm3bIIoixo0bV2GqQ/fu3dGzZ08cPXoUhw8fxtChQ3HhwgWcO3cO7dq1q3D+xx57DKmpqWjSpEmFPj7xxBNo1aqV5WtBEBATE4Nff/0VqamplvaCggIAqDAtQi6X46uvvoJMxv88EVHD4f/iEBE5gIKCgrsuv9auXTv88MMPVm23z8sFTCGzdevWOHXqFBISEhAWFoZz585VuT8AdO7cGUePHsX58+cxdOhQy3rC7du3r7Cvu7s7/v73v1d6nqioqApt3t7eAIDi4mJL28CBA3H48GHMnj0bU6ZMwZAhQ9CmTRsAYBgmogbH/9UhInIASqUSS5cuveM+KpWqQltAQECl+/r6+gIACgsLAQA5OTl33N/f3x8AkJeXZ7W/OcxWV2X7SySmZ0CJomhpe/rpp6FWq/Hpp5/iww8/xIcffoigoCD07dsXjzzyCHr27Fmj6xIR1QUDMRGRA5DL5RgyZEiNjzOHzdsZjUYApuXcANPUBcA6lFa2v3k/83m1Wm2N+1Rdzz//PJ566in8/PPP+OWXX3DkyBFs3boVW7duxd/+9jcsWrSo3q5NRFQeH91MROTEzBXd2+Xn5wO4VRE2/22u/N4uNze30v3N7fXFy8sLo0aNQmxsLA4fPow1a9YgODgYmzZtwtGjR+v12kREZgzERERO7PTp0xXa9Ho9EhMTAQChoaEAgE6dOgEATpw4Uel5Tp48abWf+e/4+HgYDAarfY1GI2bOnIlXX30Ver2+Vv0uKCiwuskOMFWn+/bti+eeew4AcP78+Vqdm4iophiIiYic2LFjx/D7779btX3//fcoKipChw4dLKtSPPbYY5BIJPj222+Rnp5utf+RI0dw4sQJBAcHW1aUiIyMRMeOHZGTk4Pvv//eav+dO3ciLi4OarW6VjfA5eXloXfv3pg0aZJltYnyzEHYvGYxEVF94xxiIiIHUFZWhjVr1tx1Pzc3NzzzzDOWr8eMGYPnn38egwcPRuvWrS0P5pBKpXj99dct+91zzz2YOXMmPvzwQzz66KMYNmwYAgICkJCQgJ9++gnu7u6IjY2FXC63HLN48WI8++yz+Mc//oFjx46hTZs2uHr1KuLi4qBSqapcaeJu/Pz88NJLL+GTTz7ByJEjMWTIEDRt2hQajQYnT57E8ePH0bFjRzzwwAO1Oj8RUU0xEBMROQCNRnPXVSYA05zb8oE4KioKjz32GFasWIEDBw7AaDSic+fOeOWVV9C7d2+rY1944QW0bdsW69evx/bt26HRaODv749hw4ZZtpXXvn17bN26FStWrMCvv/6KXbt2wcfHByNHjsT06dMrPKWuJqZPn47IyEhs3LgRe/fuRX5+PuRyOVq1aoVXX30VEyZMgEKhqPX5iYhqQhCruuWYiIgc1ty5c7F161bMmzfPKiATEVHNcQ4xERERETVqDMRERERE1KgxEBMRERFRo8ZATERERESNGm+qIyIiIqJGjRViIiIiImrUGIiJiIiIqFFjICYiIiKiRo2BmIiIiIgaNQZiIiIiImrUGIiJiIiIqFFjICYiIiKiRo2BmIiIiIgaNQZiIiIiImrU/h8ooHX38aWRlgAAAABJRU5ErkJggg==\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "plt.style.use(\"seaborn-v0_8\")\n",
- "plt.title(\"Learning Curves\", fontsize=20)\n",
- "plt.plot(np.linspace(1, n_epochs, n_epochs), epoch_recon_loss_list, color=\"C0\", linewidth=2.0, label=\"Train\")\n",
- "plt.plot(\n",
- " np.linspace(val_interval, n_epochs, int(n_epochs / val_interval)),\n",
- " val_recon_epoch_loss_list,\n",
- " color=\"C1\",\n",
- " linewidth=2.0,\n",
- " label=\"Validation\",\n",
- ")\n",
- "plt.yticks(fontsize=12)\n",
- "plt.xticks(fontsize=12)\n",
- "plt.xlabel(\"Epochs\", fontsize=16)\n",
- "plt.ylabel(\"Loss\", fontsize=16)\n",
- "plt.legend(prop={\"size\": 14})\n",
- "plt.show()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 16,
- "id": "e2cc5b87",
- "metadata": {
- "lines_to_next_cell": 2
- },
- "outputs": [
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAArsAAAILCAYAAADoqVT3AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy89olMNAAAACXBIWXMAAA9hAAAPYQGoP6dpAAC8NElEQVR4nOzdd3yT1f4H8E9mR9p0b1qgFMooe+8poBTEhZPlFkXU68+Nile9iuJiKIjidVwRUFCRoUwBWWWVWUZ36d5N0mb+/kjzkNBBR0qfls/79ULbZ+UkT8enJ99zjsRisVhARERERNQKSZu7AURERERETYVhl4iIiIhaLYZdIiIiImq1GHaJiIiIqNVi2CUiIiKiVothl4iIiIhaLYZdIiIiImq1GHaJiIiIqNVi2CUiIiKiVothl6gF+uWXXxAdHY3o6Gikp6c3d3NatPT0dOG1/OWXX5x23cWLFwvXbU2a6mtv+vTpiI6OxvTp0512TSIiAJA3dwOIWrNff/0VL7zwAgDA09MTe/bsgZubWzO3iuwpFAp07twZAODl5dVs7Th48CBmzJjR4POfeuopzJ0714ktqp6Xl5fweikUCqddNyIiAiUlJYiIiHDaNa+39PR0bNy4Efv27UNqaioKCwthsVjg7e2NyMhIDBo0CLfddhuCg4Obu6lENxSGXaIm9OOPPwIAAgMDkZOTgz/++AN33nlnM7eK7AUFBeHXX39t7mbA3d1dCJFXS09PR1lZGRQKBTp06FDtMf7+/k3ZPMHYsWMxduxYp1/3nXfecfo1r5eKigq89957WLt2LQwGAwDAw8MDoaGhsFgsyMzMxIEDB3DgwAEsWbIEDz74IObNmwe5nL+Cia4HfqcRNZFz587h2LFj8PX1xdNPP43XXnsNq1evZtilanXv3r3G0D1nzhxs374dgYGBogjmdEVpaSlmz56NkydPQiKRIDY2FjNnzkT37t0hkUgAAAaDAdu2bcMXX3yBc+fOYcWKFUhMTMTixYshlbKakKip8buMqInYenVvvvlmjB8/HkqlEidPnsSZM2eauWVE5Cwvv/wyTp48Cblcjg8//BCLFi1Cjx49hKALWMs9br75Zvz888+YPHkyAGDbtm3473//21zNJrqhMOwSNYGysjL89ttvAIDJkyfDy8tLeOt39erV1zzfbDbjp59+wrRp09CnTx/07t0bsbGxWLx4MXQ6XbXnzJ49G9HR0Rg3blyt1y4vL0efPn0QHR2N119/3WGf0WjEL7/8ggcffBCDBw9GTEwMBg0ahHvvvRfffPMN9Hp9tdccM2YMoqOjsWLFCmRlZeGpp57CwIEDMWzYMIfjsrKy8P777+PWW29Fnz59EBMTg+HDh2PatGn48ssvUVBQUGO7t23bhqeeegqjRo1C9+7d0b17d4wePRrPPfccjhw5Uu05tsFU3bt3BwCsXbsWEyZMQPfu3fG///0PwLUHqJnNZmzYsAGPPPIIhg0bhpiYGPTo0QM33XQTXnnlFZw/f77mF7sZ2J7LH3/8gQsXLmD27Nno168f7r777irHNuY1vXqAmv3rePz4ceh0OnzxxReYPHky+vTpg549eyI2NhZLliyp9uuopgFqtoF+EydOBABcuHABL7zwAsaMGYOYmBj0798fs2fPxp49e2p8TdLS0vDqq68Kz3PEiBH417/+hQsXLgAApk2bhujoaLz00kvXfoHt/P333/jrr78AWHvfY2Njaz1eLpfj3//+N0JCQhAYGIjS0lKH/bbXb/HixTVeo66v0xdffCG8Rrt378aECRMQHR19zbrwzMxMdO7cGdHR0Vi+fLnDPp1Oh2+//RYPPPAABg4ciJiYGAwdOhSzZ8/GunXrYDaba7zu3r17MW/ePIwZMwY9evRAr169cNNNN2HOnDn466+/YLFYam0XUWOwjIGoCfz222/QarVo3749evfuDQC48847sXnzZvz+++944YUX4OHhUe25FosF//d//4eNGzcCAFxdXREWFobi4mIsWbIE27Ztw7Rp06qcN3nyZPzzzz9IS0vD6dOn0a1bt2qvv3v3bmg0GgDArbfeKmwvKirCnDlzhJDj7u6OsLAwZGVl4ejRozh69ChWr16N//73vwgKCqr22mazGU888QTOnz+P8PBwKJVKYd+JEyfw4IMPoqysDIC1jjk4OBgFBQU4ceIETpw4gVWrVuG7775zqEu1vR6///47AMDFxQWhoaGoqKhAVlYW/vjjD2zatAmvvPJKrb/I//rrL7z22mvw9fVF27ZtIZPJajzWpqKiAo8++igOHDggvCZt2rRBWVkZUlNTkZqait9++w0fffQRxo8ff83rXU9lZWV4+OGHUVhYiDZt2sDT01PY56zXtCY6nQ4zZ87EiRMnEBISguDgYKSn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40ewefNG3HHHNKxZ8yO2bNkEpdIFbdu2g79/AE6discvv6yFn58/Ro4cjQcemIkdO/7CO++8iYcffhzt2rVHbm42/ve/byGTyYWZJMSCYVcEWLNLRERUf//733f43/++A2DtgfTw8ET79pGYM+dpTJ58G9zc3Go89+6774da7YXffluPt956HTqdFr6+foiM7IBPP/0cPXr0AgBIpVIsXPgJvvlmJf78czO+//4buLurMHjwUDz22JNVekjFztfXD++9twiff74Y7777Jlxd3dC3bz988skyyOVyHD16BL/8sgZarRYvvvgqHn74cfznP2/h008/RGRkB4wcORo+Pr5YvnwVVq78Al9/vQJFRYXw9PTEwIEDMX/+W2jfPqq5n6YDicViqb3C+AaUm1vaJNeVy6Xw8VGhsFADo/HKSEdtuRFPffI3AKBbOx/8657eTfL45Bw13UdqWXgfWz7ew9aB97F1aI77GBDgWafjWLMrAi5Ku0UluIIaERERkdMw7IqATCqFXGYdzcjZGIiIiIich2FXJGx1u6zZJSIiInIehl2RsM3IwJ5dIiIiIudh2BUJoWeXYZeIiIjIaRh2RUJpF3Y5QQYRERGRczDsioStZ9diAYwmzshARERE5AwMuyLhar+KGgepERERETkFw65IKO1XUWPdLhEREZFTMOyKhIuCC0sQERERORvDrki42PXs6tmzS0REROQUDLsiYR92ubAEERERkXMw7IqEi/0ANfbsEhERETkFw65IsIyBiIiIyPkYdkWCZQxEREREzsewKxIunHqMiIiIyOkYdkWC8+wSEREROR/DrkjYr6DGsEtERETkHAy7IuFYs8tFJYiIiIicgWFXJJQOK6ixZ5eIiIjIGRh2RcJ+nl1OPUZERETkHKIOu2vXrsUtt9yCmJgYDB8+HO+//z4MBkONxxcWFuLNN9/E2LFjERMTgzFjxmDZsmXQ6/XXsdUNw9kYiIiIiJxP3twNqMmGDRswf/58vPTSSxg7diwSEhIwf/58aLVaLFiwoMrxFosFTzzxBAoKCvD222+jTZs2iI+Px2uvvYb8/HzMnz+/GZ5F3dmH3XLOs0tERETkFKLt2V2yZAkmTZqEWbNmITw8HOPGjcO8efOwZs0aZGdnVzk+MTERx44dw5w5czB48GCEh4dj0qRJmDJlCn799ddmeAb1wxXUiIiI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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "# %%\n",
- "plt.title(\"Adversarial Training Curves\", fontsize=20)\n",
- "plt.plot(np.linspace(1, n_epochs, n_epochs), epoch_gen_loss_list, color=\"C0\", linewidth=2.0, label=\"Generator\")\n",
- "plt.plot(np.linspace(1, n_epochs, n_epochs), epoch_disc_loss_list, color=\"C1\", linewidth=2.0, label=\"Discriminator\")\n",
- "plt.yticks(fontsize=12)\n",
- "plt.xticks(fontsize=12)\n",
- "plt.xlabel(\"Epochs\", fontsize=16)\n",
- "plt.ylabel(\"Loss\", fontsize=16)\n",
- "plt.legend(prop={\"size\": 14})\n",
- "plt.show()"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "8c4701ac",
- "metadata": {},
- "source": [
- "### Visualise some reconstruction images"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 17,
- "id": "8adf85ac",
- "metadata": {
- "lines_to_next_cell": 2
- },
- "outputs": [
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "# Plot every evaluation as a new line and example as columns\n",
- "val_samples = np.linspace(val_interval, n_epochs, int(n_epochs / val_interval))\n",
- "fig, ax = plt.subplots(nrows=len(val_samples), ncols=1, sharey=True)\n",
- "for image_n in range(len(val_samples)):\n",
- " reconstructions = torch.reshape(intermediary_images[image_n], (64 * n_example_images, 64)).T\n",
- " ax[image_n].imshow(reconstructions.cpu(), cmap=\"gray\")\n",
- " ax[image_n].set_xticks([])\n",
- " ax[image_n].set_yticks([])\n",
- " ax[image_n].set_ylabel(f\"Epoch {val_samples[image_n]:.0f}\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 18,
- "id": "fd170679",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAn8AAAFCCAYAAACAQrsVAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy89olMNAAAACXBIWXMAAA9hAAAPYQGoP6dpAABWQ0lEQVR4nO29ebQW1ZX+/2gEZIaLyCiXQbjKcJmdcMbY6ZgWslp7JRHUtLZmaZJOQoLRmGhnaHFIpyNJNNHERGMTRRFQMcaOiiDKKHARZJR5kEFmZGj9/eHifjnP2d7anl/dy1DPZy3Xcr/3nFNVp6p2Hd732U8d99FHH30EIYQQQghRCI4/3DsghBBCCCFqDi3+hBBCCCEKhBZ/QgghhBAFQos/IYQQQogCocWfEEIIIUSB0OJPCCGEEKJAaPEnhBBCCFEgtPgTQgghhCgQWvwJIYQQQhQILf4OMyNHjkRZWRn27t17uHelWhg1ahTKysqwevXqT2zz/e9/HwMGDKjBvRJCHGt8//vfR1lZWfRfv379cN1112HmzJmHexePai6++GJ8+9vfPty7IXJCi7+Cs2/fPnTv3j1YnD399NMYOnToYdwrIYT49JSUlGDy5MmV/7322mt48MEHcdxxx+Gaa67B3LlzD/cuJnPRRRdh6tSpNbIt67nw1FNP4cc//nGNbF9UP1r8FZyKigrs378/+Oytt946THsjhBDpHH/88WjevHnlfy1atEC/fv0wcuRI1K1bF4899tjh3sUkNmzYgLVr19bY9qznQklJCRo2bFhj+yCqFy3+jjCmTp2KsrIyTJ06FcOGDUO/fv1w5pln4pZbbsHu3bsr25WVleGBBx7AL37xCwwYMADl5eW4+uqrsXz58so2Q4cOxb/8y7+Y47/22msYM2YMvvKVrwAABg4ciKFDh2Lo0KEYPXo0pk2bhrKyMowZMwYAsHHjRgwfPhwXX3wxevTogcsuuwxPPfVUMPaGDRvwta99DT179sSZZ56J//iP/0j6OXvMmDEoKyvDnDlzMHToUPTs2RMXXnghxo8fj7Vr1+Jf//Vf0bt3bwwcOBATJkwI+o4fPx5f/OIX0aNHD/Tt2xdf/vKXMW3atKDNkiVLMGTIEJSXl+O8887DQw89hN/+9rcoKysL2o0bNw5XXnkl+vTpgzPOOAPf/va3sWHDhk99PEKIw0vdunVRWlqK9evXAwA++ugj/PGPf8SgQYPQq1cvnHPOOfjRj36E7du3B/0mTpyIK664AuXl5bjwwgvxk5/8BDt37qz8+4YNGzBs2DCcddZZ6N69Oy655BLcf//9OHDgQGWbiy++GD/72c/w+OOPY+DAgejVqxeuuOKK4FvINWvW4Fvf+hYGDBiAHj164JJLLsHIkSPxf//3f5g6dSrOP/98AMDVV1+Niy++GMDH+f2mm27Cf//3f6N3797485//jNWrV6OsrAyjRo0KjoOlNR9++CH+8Ic/4NJLL0V5eTk+97nP4dFHHwUA87lw8DgO/dl3x44duOOOO3Duueeie/fuuOCCC/DTn/40eE4d3Me//vWv+PznP4/y8nJ84QtfwMSJEz/tKRQ5o8XfEcqIESNw9tln45lnnsGwYcMwduxY/PnPfw7aPPHEE9i3bx8ee+wxPPTQQ1i9ejVuvvlmfPjhh65tfP7zn8d3v/tdAMDo0aMxcuRIjBw5Et26dUPv3r0xefJkfP7zn8e+fftwzTXXYObMmbjzzjvx7LPPYtCgQbj99tsxduzYyvG+853voKKiAvfffz9GjRqFk046Cb///e+T5+Duu+/GDTfcgLFjx6JDhw740Y9+hNtuuw1DhgzBmDFj0K5dO9x+++3YtWsXAGD69On43ve+hwsuuAATJkzA6NGj0b59e9x4442Vi7Z9+/bhhhtuwIYNG/Dwww/joYcewsyZM/H0008H2x43bhyGDx+OXr16YcyYMfjNb36DZcuW4dprr8W+ffuSj0kIUfPs27cPq1atQuvWrQEADzzwAEaMGIHLLrsM48ePx4gRIzB58mR8/etfr+wzY8YMfO1rX8OAAQPwzDPP4K677sLf/vY3/OAHPwAA7N27F1dffTUWLFiA//qv/8KECRNw/fXX46GHHsK9994bbH/SpEmYM2cOHnzwQTz66KPYtm0bhg8fXvn3733ve9iyZQseeughvPjiixg2bBj+9Kc/4fe//z169+6Nn//85wA+1ogf+o/uRYsWYcWKFXj66acxaNAg93z87ne/w/3334+bbroJzz33HK6//nqMGDECjz/+uPlcsPja176Gl19+GXfeeSdeeOEF3HLLLRg/fnxwXACwePFijBkzBvfddx9Gjx6NunXrYvjw4dizZ497f0X+nHC4d0DYnHXWWbjiiisAAKeccgp++9vfRnqVevXqYfjw4TjuuOPQsWNH3HTTTfjBD36ABQsWoFu3bpnbOPHEE9GgQQMAH3+l36RJEwDACSecgFq1aqF58+YAgAkTJmDp0qX405/+hLPOOgsAcMMNN2D27Nl44IEHMHjwYKxYsQIzZszAHXfcgQsuuAAAcPPNN6OiogLvvfde0hwMGjQI5513HgDgS1/6EqZMmYIzzzyz8l++Bz9buXIlTj/9dHTr1g3PPfccOnTogBNO+PjSvv766zFmzBjMmjUL//iP/4jp06djzZo1ePDBB3HGGWcAAO6///7KMQ/y4IMPon///pWJvn379hgxYgQGDx6MF198Ef/0T/+UdExCiJpl06ZNuO+++7Bz50585Stfwf79+/H73/8egwYNwg033AAAaNeuHW677TbcfPPNmDVrFvr06YOHH34YXbp0qfy2q1OnTrj99tsxceJE7N+/Hy+99BKWL1+O0aNHo7y8vHKcxYsX44knnsCwYcNQu3ZtAMDOnTvx05/+tDIeNGgQRo4ciZ07d6JBgwZ4++23cfPNN6Nr164AgNatW6Nz586oW7cuateujUaNGgEAGjdujJKSkspjW79+PZ5++mk0btwYALBt27bM+di3bx8eeeQRXHnllRg8eHDlfm/YsAE7d+78xOfCobz11luYMWMGfvGLX+CSSy4B8PFzav369bj77ruxbt06tGrVqnIfn3jiicr9vuqqq3DLLbdgxYoVOO200zynUFQD+ubvCKVnz55BXFJSEt3Yffv2xXHHHVcZH1zwrVmzJtd9mTNnDmrVqlW5WDrI2WefjeXLl2PXrl1YvHgxAKB79+5Bmz59+iRv99AF7MHkdvrpp0ef7dixA8DHi+HZs2djyJAhOOecc9C7d2/88z//MwBg69atAICVK1cCAHr06FE5Tu3atYOfRHbu3Illy5ZFFcinn346mjRpgvnz5ycfkxCi+ti8eTN69+5d+V/Pnj0xYMAALFq0CL/5zW/Qs2dPLF26FDt37ozu74P/sD14f8+dOzfKw//wD/+A//zP/0StWrVQUVGBOnXqBLkEAHr37o09e/Zg2bJllZ9169atcuEHoHIhdDCnDxw4EL/61a/w05/+FJMmTcIHH3yAU089FW3atKnyeNu2bVuZB72sWrUKW7dujY7t5ptvxo033ugao6KiAgDQr1+/4PPevXsDQJAjS0tLgwVr06ZNASD6iV3ULPrm7wilXr16QXzoIu8gLL492Cfvm2rnzp3Yv38/+vbtG3x+UNeycePGSh0M73f9+vWTt1u3bt3K/z94/NZnH330EQDgj3/8I+666y58+ctfxm233YbGjRtjw4YNQeXywUUg79ehyengsfz617/G7373u6Ddnj17kr/JFEJUL02aNMETTzxRGc+bNw/f+c53cN1111X+InHw/r799ttxxx13RGNs3LgRwMd5tKr8tXPnTtSvXz/KzQe/NTsoRwE+OZ8fzF133303/vKXv+DZZ5/F448/jtq1a+Oyyy7DrbfeWmWRxcFvBD8NB58P/39y88E55H1LOXZxeNDi7yjm0Bvs0PjQfwnyDXaoGNdLo0aNcOKJJwb6vkNp1aoVFi1aBACRjqMm/3U3fvx49OrVC3feeWflZ1u2bAnaHPzX9549e4KF5MFFIfD/Etq1116LK6+8MtoOJzMhxJHBZz7zGZSWllbGpaWlePHFF/Gzn/0MAwYMQJMmTSrz4/e+973KQopDOXj/N2vWrMqfURs1aoRdu3bho48+ChaAB3+J+DQLs1q1alUW3G3duhUvvfQS7r33Xhw4cAD33HOPe5xPWlgdmvebNWsGwPcT8Sdx8Nh27NgR5NGUYxeHB/3sexQzffr0IH777bcBAB07dgTw8Q3Ii5/Zs2ebY3GyODTu1asXPvjgA+zZswelpaWV/5144olo1KgRateujU6dOgFApEucMWPGpz+wRPbv31/5k8JBnnnmGQD/73gOPhgO/mwBfLwQfO211yrj+vXro0uXLnj33XeD4y0tLcW+ffsqk6cQ4sjntttuw549e3DXXXcBADp06IBGjRph1apVwb3dtm1bHDhwoPJXgC5dukT566WXXsJVV12FXbt2oby8HHv37o1y3syZM9GgQQO0b9/etX9bt27FuHHj8H//938APv728sorr8Tll1+OBQsWBG2zvi07uOg6NO8fOHAA8+bNq4xbtWqFhg0bRs+PX/7yl7j11ltd2zuoceT5mTlzJo4//vhK7aI4ctHi7yhm+/btuOuuu7B06VJMnToVv/nNb1BeXl65ECsvL8fq1avx5JNPYtWqVRgzZkxUYn/wX8ETJ07EwoULAXycQJYvX46KigqsW7cOF110Ebp06YLvfve7mDJlCtasWYOJEydiyJAh+OEPfwjgYzF0t27d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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "# %%\n",
- "fig, ax = plt.subplots(nrows=1, ncols=2)\n",
- "ax[0].imshow(images[0, 0].detach().cpu(), vmin=0, vmax=1, cmap=\"gray\")\n",
- "ax[0].axis(\"off\")\n",
- "ax[0].title.set_text(\"Inputted Image\")\n",
- "ax[1].imshow(reconstruction[0, 0].detach().cpu(), vmin=0, vmax=1, cmap=\"gray\")\n",
- "ax[1].axis(\"off\")\n",
- "ax[1].title.set_text(\"Reconstruction\")\n",
- "plt.show()"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "8ffdc149",
- "metadata": {},
- "source": [
- "### Cleanup data directory\n",
- "\n",
- "Remove directory if a temporary was used."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "fd57125a",
- "metadata": {},
- "outputs": [],
- "source": [
- "if directory is None:\n",
- " shutil.rmtree(root_dir)"
- ]
- }
- ],
- "metadata": {
- "jupytext": {
- "cell_metadata_filter": "-all",
- "formats": "auto:light,ipynb",
- "main_language": "python",
- "notebook_metadata_filter": "-all"
- },
- "kernelspec": {
- "display_name": "Python 3 (ipykernel)",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.9.16"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 5
-}
diff --git a/tutorials/generative/2d_autoencoderkl/2d_autoencoderkl_tutorial.py b/tutorials/generative/2d_autoencoderkl/2d_autoencoderkl_tutorial.py
deleted file mode 100644
index 39e44730..00000000
--- a/tutorials/generative/2d_autoencoderkl/2d_autoencoderkl_tutorial.py
+++ /dev/null
@@ -1,318 +0,0 @@
-# +
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-# -
-
-# # AutoencoderKL
-#
-# This demo is a toy example of how to use MONAI's `AutoencoderKL` class. In particular, it uses
-# the Autoencoder with a Kullback-Leibler regularisation as implemented by Rombach et. al [1].
-#
-# [1] Rombach et. al "High-Resolution Image Synthesis with Latent Diffusion Models" https://arxiv.org/pdf/2112.10752.pdf
-#
-#
-#
-# This tutorial was based on:
-#
-# [Registration Mednist](https://github.com/Project-MONAI/tutorials/blob/main/2d_registration/registration_mednist.ipynb)
-#
-# [Mednist Tutorial](https://github.com/Project-MONAI/tutorials/blob/main/2d_classification/mednist_tutorial.ipynb)
-#
-#
-#
-
-# ## Set up environment using Colab
-
-# !python -c "import monai" || pip install -q "monai-weekly[tqdm]"
-# !python -c "import matplotlib" || pip install -q matplotlib
-# %matplotlib inline
-
-# ## Setup imports
-
-# +
-import os
-import shutil
-import tempfile
-import time
-import matplotlib.pyplot as plt
-import numpy as np
-import torch
-from monai import transforms
-from monai.apps import MedNISTDataset
-from monai.config import print_config
-from monai.data import DataLoader, Dataset
-from monai.networks.layers import Act
-from monai.utils import first, set_determinism
-from torch.nn import L1Loss
-from tqdm import tqdm
-
-from generative.losses import PatchAdversarialLoss, PerceptualLoss
-from generative.networks.nets import AutoencoderKL, PatchDiscriminator
-
-print_config()
-# -
-
-# for reproducibility purposes set a seed
-set_determinism(42)
-
-# ## Setup a data directory and download dataset
-
-# Specify a `MONAI_DATA_DIRECTORY` variable, where the data will be downloaded. If not
-# specified a temporary directory will be used.
-
-directory = os.environ.get("MONAI_DATA_DIRECTORY")
-root_dir = tempfile.mkdtemp() if directory is None else directory
-print(root_dir)
-
-# ### Download the training set
-
-train_data = MedNISTDataset(root_dir=root_dir, section="training", download=True, seed=0)
-train_datalist = [{"image": item["image"]} for item in train_data.data if item["class_name"] == "Hand"]
-image_size = 64
-train_transforms = transforms.Compose(
- [
- transforms.LoadImaged(keys=["image"]),
- transforms.EnsureChannelFirstd(keys=["image"]),
- transforms.ScaleIntensityRanged(keys=["image"], a_min=0.0, a_max=255.0, b_min=0.0, b_max=1.0, clip=True),
- transforms.RandAffined(
- keys=["image"],
- rotate_range=[(-np.pi / 36, np.pi / 36), (-np.pi / 36, np.pi / 36)],
- translate_range=[(-1, 1), (-1, 1)],
- scale_range=[(-0.05, 0.05), (-0.05, 0.05)],
- spatial_size=[image_size, image_size],
- padding_mode="zeros",
- prob=0.5,
- ),
- ]
-)
-train_ds = Dataset(data=train_datalist, transform=train_transforms)
-train_loader = DataLoader(train_ds, batch_size=64, shuffle=True, num_workers=4, persistent_workers=True)
-
-# ### Visualise examples from the training set
-
-# Plot 3 examples from the training set
-check_data = first(train_loader)
-fig, ax = plt.subplots(nrows=1, ncols=3)
-for image_n in range(3):
- ax[image_n].imshow(check_data["image"][image_n, 0, :, :], cmap="gray")
- ax[image_n].axis("off")
-
-# ### Download the validation set
-
-val_data = MedNISTDataset(root_dir=root_dir, section="validation", download=True, seed=0)
-val_datalist = [{"image": item["image"]} for item in val_data.data if item["class_name"] == "Hand"]
-val_transforms = transforms.Compose(
- [
- transforms.LoadImaged(keys=["image"]),
- transforms.EnsureChannelFirstd(keys=["image"]),
- transforms.ScaleIntensityRanged(keys=["image"], a_min=0.0, a_max=255.0, b_min=0.0, b_max=1.0, clip=True),
- ]
-)
-val_ds = Dataset(data=val_datalist, transform=val_transforms)
-val_loader = DataLoader(val_ds, batch_size=64, shuffle=True, num_workers=4, persistent_workers=True)
-
-# ## Define the network
-
-device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
-print(f"Using {device}")
-model = AutoencoderKL(
- spatial_dims=2,
- in_channels=1,
- out_channels=1,
- num_channels=(128, 256, 384),
- latent_channels=8,
- num_res_blocks=1,
- norm_num_groups=32,
- attention_levels=(False, False, True),
-)
-model.to(device)
-
-discriminator = PatchDiscriminator(
- spatial_dims=2,
- num_layers_d=3,
- num_channels=64,
- in_channels=1,
- out_channels=1,
- kernel_size=4,
- activation=(Act.LEAKYRELU, {"negative_slope": 0.2}),
- norm="BATCH",
- bias=False,
- padding=1,
-)
-discriminator.to(device)
-
-perceptual_loss = PerceptualLoss(spatial_dims=2, network_type="alex")
-perceptual_loss.to(device)
-
-optimizer_g = torch.optim.Adam(params=model.parameters(), lr=1e-4)
-optimizer_d = torch.optim.Adam(params=discriminator.parameters(), lr=5e-4)
-
-l1_loss = L1Loss()
-adv_loss = PatchAdversarialLoss(criterion="least_squares")
-adv_weight = 0.01
-perceptual_weight = 0.001
-
-# ## Model Training
-
-# +
-kl_weight = 1e-6
-n_epochs = 100
-val_interval = 25
-epoch_recon_loss_list = []
-epoch_gen_loss_list = []
-epoch_disc_loss_list = []
-val_recon_epoch_loss_list = []
-intermediary_images = []
-n_example_images = 4
-
-total_start = time.time()
-for epoch in range(n_epochs):
- model.train()
- discriminator.train()
- epoch_loss = 0
- gen_epoch_loss = 0
- disc_epoch_loss = 0
- progress_bar = tqdm(enumerate(train_loader), total=len(train_loader), ncols=110)
- progress_bar.set_description(f"Epoch {epoch}")
- for step, batch in progress_bar:
- images = batch["image"].to(device)
- optimizer_g.zero_grad(set_to_none=True)
-
- reconstruction, z_mu, z_sigma = model(images)
-
- recons_loss = l1_loss(reconstruction.float(), images.float())
-
- kl_loss = 0.5 * torch.sum(z_mu.pow(2) + z_sigma.pow(2) - torch.log(z_sigma.pow(2)) - 1, dim=[1, 2, 3])
- kl_loss = torch.sum(kl_loss) / kl_loss.shape[0]
-
- logits_fake = discriminator(reconstruction.contiguous().float())[-1]
- p_loss = perceptual_loss(reconstruction.float(), images.float())
- generator_loss = adv_loss(logits_fake, target_is_real=True, for_discriminator=False)
- loss_g = recons_loss + kl_weight * kl_loss + perceptual_weight * p_loss + adv_weight * generator_loss
-
- loss_g.backward()
- optimizer_g.step()
-
- # Discriminator part
- optimizer_d.zero_grad(set_to_none=True)
-
- logits_fake = discriminator(reconstruction.contiguous().detach())[-1]
- loss_d_fake = adv_loss(logits_fake, target_is_real=False, for_discriminator=True)
- logits_real = discriminator(images.contiguous().detach())[-1]
- loss_d_real = adv_loss(logits_real, target_is_real=True, for_discriminator=True)
- discriminator_loss = (loss_d_fake + loss_d_real) * 0.5
-
- loss_d = adv_weight * discriminator_loss
-
- loss_d.backward()
- optimizer_d.step()
-
- epoch_loss += recons_loss.item()
- gen_epoch_loss += generator_loss.item()
- disc_epoch_loss += discriminator_loss.item()
-
- progress_bar.set_postfix(
- {
- "recons_loss": epoch_loss / (step + 1),
- "gen_loss": gen_epoch_loss / (step + 1),
- "disc_loss": disc_epoch_loss / (step + 1),
- }
- )
- epoch_recon_loss_list.append(epoch_loss / (step + 1))
- epoch_gen_loss_list.append(gen_epoch_loss / (step + 1))
- epoch_disc_loss_list.append(disc_epoch_loss / (step + 1))
-
- if (epoch + 1) % val_interval == 0:
- model.eval()
- val_loss = 0
- with torch.no_grad():
- for val_step, batch in enumerate(val_loader, start=1):
- images = batch["image"].to(device)
- reconstruction, _, _ = model(images)
-
- # get the first sammple from the first validation batch for visualisation
- # purposes
- if val_step == 1:
- intermediary_images.append(reconstruction[:n_example_images, 0])
-
- recons_loss = l1_loss(reconstruction.float(), images.float())
-
- val_loss += recons_loss.item()
-
- val_loss /= val_step
- val_recon_epoch_loss_list.append(val_loss)
-
-total_time = time.time() - total_start
-print(f"train completed, total time: {total_time}.")
-# -
-
-# ## Evaluate the training
-# ### Visualise the loss
-
-plt.style.use("seaborn-v0_8")
-plt.title("Learning Curves", fontsize=20)
-plt.plot(np.linspace(1, n_epochs, n_epochs), epoch_recon_loss_list, color="C0", linewidth=2.0, label="Train")
-plt.plot(
- np.linspace(val_interval, n_epochs, int(n_epochs / val_interval)),
- val_recon_epoch_loss_list,
- color="C1",
- linewidth=2.0,
- label="Validation",
-)
-plt.yticks(fontsize=12)
-plt.xticks(fontsize=12)
-plt.xlabel("Epochs", fontsize=16)
-plt.ylabel("Loss", fontsize=16)
-plt.legend(prop={"size": 14})
-plt.show()
-
-
-# %%
-plt.title("Adversarial Training Curves", fontsize=20)
-plt.plot(np.linspace(1, n_epochs, n_epochs), epoch_gen_loss_list, color="C0", linewidth=2.0, label="Generator")
-plt.plot(np.linspace(1, n_epochs, n_epochs), epoch_disc_loss_list, color="C1", linewidth=2.0, label="Discriminator")
-plt.yticks(fontsize=12)
-plt.xticks(fontsize=12)
-plt.xlabel("Epochs", fontsize=16)
-plt.ylabel("Loss", fontsize=16)
-plt.legend(prop={"size": 14})
-plt.show()
-
-
-# ### Visualise some reconstruction images
-
-# Plot every evaluation as a new line and example as columns
-val_samples = np.linspace(val_interval, n_epochs, int(n_epochs / val_interval))
-fig, ax = plt.subplots(nrows=len(val_samples), ncols=1, sharey=True)
-for image_n in range(len(val_samples)):
- reconstructions = torch.reshape(intermediary_images[image_n], (64 * n_example_images, 64)).T
- ax[image_n].imshow(reconstructions.cpu(), cmap="gray")
- ax[image_n].set_xticks([])
- ax[image_n].set_yticks([])
- ax[image_n].set_ylabel(f"Epoch {val_samples[image_n]:.0f}")
-
-
-# %%
-fig, ax = plt.subplots(nrows=1, ncols=2)
-ax[0].imshow(images[0, 0].detach().cpu(), vmin=0, vmax=1, cmap="gray")
-ax[0].axis("off")
-ax[0].title.set_text("Inputted Image")
-ax[1].imshow(reconstruction[0, 0].detach().cpu(), vmin=0, vmax=1, cmap="gray")
-ax[1].axis("off")
-ax[1].title.set_text("Reconstruction")
-plt.show()
-
-# ### Cleanup data directory
-#
-# Remove directory if a temporary was used.
-
-if directory is None:
- shutil.rmtree(root_dir)
diff --git a/tutorials/generative/2d_controlnet/2d_controlnet.ipynb b/tutorials/generative/2d_controlnet/2d_controlnet.ipynb
deleted file mode 100644
index def0ef48..00000000
--- a/tutorials/generative/2d_controlnet/2d_controlnet.ipynb
+++ /dev/null
@@ -1,1423 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "code",
- "execution_count": 1,
- "id": "70eef519",
- "metadata": {},
- "outputs": [],
- "source": [
- "# Copyright (c) MONAI Consortium\n",
- "# Licensed under the Apache License, Version 2.0 (the \"License\");\n",
- "# you may not use this file except in compliance with the License.\n",
- "# You may obtain a copy of the License at\n",
- "# http://www.apache.org/licenses/LICENSE-2.0\n",
- "# Unless required by applicable law or agreed to in writing, software\n",
- "# distributed under the License is distributed on an \"AS IS\" BASIS,\n",
- "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
- "# See the License for the specific language governing permissions and\n",
- "# limitations under the License."
- ]
- },
- {
- "cell_type": "markdown",
- "id": "63d95da6",
- "metadata": {},
- "source": [
- "# Using ControlNet to control image generation\n",
- "\n",
- "This tutorial illustrates how to use MONAI Generative Models to train a ControlNet [1]. ControlNets are hypernetworks that allow for supplying extra conditioning to ready-trained diffusion models. In this example, we will walk through training a ControlNet that allows us to specify a whole-brain mask that the sampled image must respect.\n",
- "\n",
- "\n",
- "\n",
- "In summary, the tutorial will cover the following:\n",
- "1. Loading and preprocessing a dataset (we extract the brain MRI dataset 2D slices from 3D volumes from the BraTS dataset)\n",
- "2. Training a 2D diffusion model\n",
- "3. Freeze the diffusion model and train a ControlNet\n",
- "3. Conditional sampling with the ControlNet\n",
- "\n",
- "[1] - Zhang et al. [Adding Conditional Control to Text-to-Image Diffusion Models](https://arxiv.org/abs/2302.05543)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "id": "022890b1-ea44-4c60-8a80-ed1fc755f90b",
- "metadata": {},
- "outputs": [],
- "source": [
- "!python -c \"import monai\" || pip install -q \"monai-weekly[tqdm]\"\n",
- "!python -c \"import matplotlib\" || pip install -q matplotlib\n",
- "%matplotlib inline"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "6b766027",
- "metadata": {},
- "source": [
- "## Setup environment"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "id": "972ed3f3",
- "metadata": {
- "collapsed": false,
- "jupyter": {
- "outputs_hidden": false
- },
- "lines_to_next_cell": 2
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "2023-05-04 18:42:25,456 - A matching Triton is not available, some optimizations will not be enabled.\n",
- "Error caught was: No module named 'triton'\n",
- "MONAI version: 1.2.dev2304\n",
- "Numpy version: 1.23.4\n",
- "Pytorch version: 1.13.1+cu117\n",
- "MONAI flags: HAS_EXT = False, USE_COMPILED = False, USE_META_DICT = False\n",
- "MONAI rev id: 9a57be5aab9f2c2a134768c0c146399150e247a0\n",
- "MONAI __file__: /home/mark/Envs/monai-generative/lib/python3.8/site-packages/monai/__init__.py\n",
- "\n",
- "Optional dependencies:\n",
- "Pytorch Ignite version: 0.4.10\n",
- "ITK version: 5.3.0\n",
- "Nibabel version: 5.0.0\n",
- "scikit-image version: 0.19.3\n",
- "Pillow version: 9.3.0\n",
- "Tensorboard version: 2.12.0\n",
- "gdown version: 4.6.0\n",
- "TorchVision version: 0.14.1+cu117\n",
- "tqdm version: 4.64.1\n",
- "lmdb version: 1.4.0\n",
- "psutil version: 5.9.4\n",
- "pandas version: 1.5.3\n",
- "einops version: 0.6.0\n",
- "transformers version: 4.21.3\n",
- "mlflow version: 2.1.1\n",
- "pynrrd version: 1.0.0\n",
- "\n",
- "For details about installing the optional dependencies, please visit:\n",
- " https://docs.monai.io/en/latest/installation.html#installing-the-recommended-dependencies\n",
- "\n"
- ]
- }
- ],
- "source": [
- "import os\n",
- "import tempfile\n",
- "import time\n",
- "import os\n",
- "import matplotlib.pyplot as plt\n",
- "import numpy as np\n",
- "import torch\n",
- "import torch.nn.functional as F\n",
- "from monai import transforms\n",
- "from monai.apps import DecathlonDataset\n",
- "from monai.config import print_config\n",
- "from monai.data import DataLoader\n",
- "from monai.utils import first, set_determinism\n",
- "from torch.cuda.amp import GradScaler, autocast\n",
- "from tqdm import tqdm\n",
- "\n",
- "\n",
- "from generative.inferers import DiffusionInferer\n",
- "from generative.networks.nets import DiffusionModelUNet, ControlNet\n",
- "from generative.networks.schedulers import DDPMScheduler\n",
- "\n",
- "print_config()"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "7d4ff515",
- "metadata": {},
- "source": [
- "### Setup data directory"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "id": "8b4323e7",
- "metadata": {
- "collapsed": false,
- "jupyter": {
- "outputs_hidden": false
- }
- },
- "outputs": [],
- "source": [
- "directory = os.environ.get(\"MONAI_DATA_DIRECTORY\")\n",
- "root_dir = tempfile.mkdtemp() if directory is None else directory"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "99175d50",
- "metadata": {},
- "source": [
- "### Set deterministic training for reproducibility"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "id": "34ea510f",
- "metadata": {
- "collapsed": false,
- "jupyter": {
- "outputs_hidden": false
- }
- },
- "outputs": [],
- "source": [
- "set_determinism(42)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "c3f70dd1-236a-47ff-a244-575729ad92ba",
- "metadata": {
- "tags": []
- },
- "source": [
- "## Setup BRATS dataset\n",
- "\n",
- "We now download the BraTS dataset and extract the 2D slices from the 3D volumes.\n"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "87977bac-ff5e-4612-b9f2-b069d6ad9e9a",
- "metadata": {},
- "source": [
- "### Specify transforms\n",
- "We create a rough brain mask by thresholding the image."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 6,
- "id": "c68d2d91-9a0b-4ac1-ae49-f4a64edbd82a",
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- ": Class `AddChannel` has been deprecated since version 0.8. please use MetaTensor data type and monai.transforms.EnsureChannelFirst instead.\n"
- ]
- }
- ],
- "source": [
- "channel = 0\n",
- "assert channel in [0, 1, 2, 3], \"Choose a valid channel\"\n",
- "\n",
- "train_transforms = transforms.Compose(\n",
- " [\n",
- " transforms.LoadImaged(keys=[\"image\"]),\n",
- " transforms.EnsureChannelFirstd(keys=[\"image\"]),\n",
- " transforms.Lambdad(keys=[\"image\"], func=lambda x: x[channel, :, :, :]),\n",
- " transforms.AddChanneld(keys=[\"image\"]),\n",
- " transforms.EnsureTyped(keys=[\"image\"]),\n",
- " transforms.Orientationd(keys=[\"image\"], axcodes=\"RAS\"),\n",
- " transforms.Spacingd(keys=[\"image\"], pixdim=(3.0, 3.0, 2.0), mode=\"bilinear\"),\n",
- " transforms.CenterSpatialCropd(keys=[\"image\"], roi_size=(64, 64, 44)),\n",
- " transforms.ScaleIntensityRangePercentilesd(keys=\"image\", lower=0, upper=99.5, b_min=0, b_max=1),\n",
- " transforms.RandSpatialCropd(keys=[\"image\"], roi_size=(64, 64, 1), random_size=False),\n",
- " transforms.Lambdad(keys=[\"image\"], func=lambda x: x.squeeze(-1)),\n",
- " transforms.CopyItemsd(keys=[\"image\"], times=1, names=[\"mask\"]),\n",
- " transforms.Lambdad(keys=[\"mask\"], func=lambda x: torch.where(x > 0.1, 1, 0)),\n",
- " transforms.FillHolesd(keys=[\"mask\"]),\n",
- " transforms.CastToTyped(keys=[\"mask\"], dtype=np.float32),\n",
- " ]\n",
- ")"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "9d378ac6",
- "metadata": {},
- "source": [
- "### Load training and validation datasets"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 7,
- "id": "da1927b0",
- "metadata": {
- "collapsed": false,
- "jupyter": {
- "outputs_hidden": false
- }
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "2023-05-04 18:42:34,233 - INFO - Verified 'Task01_BrainTumour.tar', md5: 240a19d752f0d9e9101544901065d872.\n",
- "2023-05-04 18:42:34,233 - INFO - File exists: /home/mark/data_drive/monai_data_dir/Task01_BrainTumour.tar, skipped downloading.\n",
- "2023-05-04 18:42:34,233 - INFO - Non-empty folder exists in /home/mark/data_drive/monai_data_dir/Task01_BrainTumour, skipped extracting.\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Loading dataset: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 388/388 [01:36<00:00, 4.02it/s]\n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Length of training data: 388\n",
- "Train image shape torch.Size([1, 64, 64])\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Loading dataset: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 96/96 [00:24<00:00, 3.88it/s]"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Length of val data: 96\n",
- "Validation Image shape torch.Size([1, 64, 64])\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "\n"
- ]
- }
- ],
- "source": [
- "train_ds = DecathlonDataset(\n",
- " root_dir=root_dir,\n",
- " task=\"Task01_BrainTumour\",\n",
- " section=\"training\",\n",
- " cache_rate=1.0, # you may need a few Gb of RAM... Set to 0 otherwise\n",
- " num_workers=4,\n",
- " download=True,\n",
- " seed=0,\n",
- " transform=train_transforms,\n",
- ")\n",
- "print(f\"Length of training data: {len(train_ds)}\")\n",
- "print(f'Train image shape {train_ds[0][\"image\"].shape}')\n",
- "\n",
- "val_ds = DecathlonDataset(\n",
- " root_dir=root_dir,\n",
- " task=\"Task01_BrainTumour\",\n",
- " section=\"validation\",\n",
- " cache_rate=1.0, # you may need a few Gb of RAM... Set to 0 otherwise\n",
- " num_workers=4,\n",
- " download=False,\n",
- " seed=0,\n",
- " transform=train_transforms,\n",
- ")\n",
- "print(f\"Length of val data: {len(val_ds)}\")\n",
- "print(f'Validation image shape {val_ds[0][\"image\"].shape}')"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 8,
- "id": "8e4d6164-00e5-4663-a678-1391438574e9",
- "metadata": {},
- "outputs": [],
- "source": [
- "train_loader = DataLoader(train_ds, batch_size=64, shuffle=True, num_workers=4, drop_last=True, persistent_workers=True)\n",
- "val_loader = DataLoader(val_ds, batch_size=64, shuffle=False, num_workers=4, drop_last=True, persistent_workers=True)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "5d86ba60-84d2-49f2-95c1-2ab611310d84",
- "metadata": {},
- "source": [
- "### Visualise the images and masks"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 9,
- "id": "17a5e9a4-9756-400b-8dbd-0f1d457ad3dd",
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Batch shape: torch.Size([64, 1, 64, 64])\n"
- ]
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "check_data = first(train_loader)\n",
- "print(f\"Batch shape: {check_data['image'].shape}\")\n",
- "image_visualisation = torch.cat(\n",
- " (\n",
- " torch.cat(\n",
- " [\n",
- " check_data[\"image\"][0, 0],\n",
- " check_data[\"image\"][1, 0],\n",
- " check_data[\"image\"][2, 0],\n",
- " check_data[\"image\"][3, 0],\n",
- " ],\n",
- " dim=1,\n",
- " ),\n",
- " torch.cat(\n",
- " [check_data[\"mask\"][0, 0], check_data[\"mask\"][1, 0], check_data[\"mask\"][2, 0], check_data[\"mask\"][3, 0]],\n",
- " dim=1,\n",
- " ),\n",
- " ),\n",
- " dim=0,\n",
- ")\n",
- "plt.figure(figsize=(6, 3))\n",
- "plt.imshow(image_visualisation, vmin=0, vmax=1, cmap=\"gray\")\n",
- "plt.axis(\"off\")\n",
- "plt.tight_layout()\n",
- "plt.show()"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "de29d929-bc99-4235-aea6-d6867c3d360c",
- "metadata": {},
- "source": [
- "## Train the Diffusion model\n",
- "In general, a ControlNet can be trained in combination with a pre-trained, frozen diffusion model. In this case we will quickly train the diffusion model first."
- ]
- },
- {
- "cell_type": "markdown",
- "id": "08428bc6",
- "metadata": {},
- "source": [
- "### Define network, scheduler, optimizer, and inferer"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 10,
- "id": "bee5913e",
- "metadata": {
- "lines_to_next_cell": 2,
- "tags": []
- },
- "outputs": [],
- "source": [
- "device = torch.device(\"cuda\")\n",
- "\n",
- "model = DiffusionModelUNet(\n",
- " spatial_dims=2,\n",
- " in_channels=1,\n",
- " out_channels=1,\n",
- " num_channels=(128, 256, 256),\n",
- " attention_levels=(False, True, True),\n",
- " num_res_blocks=1,\n",
- " num_head_channels=256,\n",
- ")\n",
- "model.to(device)\n",
- "\n",
- "scheduler = DDPMScheduler(num_train_timesteps=1000)\n",
- "\n",
- "optimizer = torch.optim.Adam(params=model.parameters(), lr=2.5e-5)\n",
- "\n",
- "inferer = DiffusionInferer(scheduler)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "f815ff34",
- "metadata": {},
- "source": [
- "### Run training\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 11,
- "id": "9a4fc901",
- "metadata": {
- "tags": []
- },
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Epoch 0: 100%|██████████████| 6/6 [00:03<00:00, 1.73it/s, loss=0.987]\n",
- "Epoch 1: 100%|██████████████| 6/6 [00:02<00:00, 2.44it/s, loss=0.946]\n",
- "Epoch 2: 100%|██████████████| 6/6 [00:02<00:00, 2.41it/s, loss=0.893]\n",
- "Epoch 3: 100%|██████████████| 6/6 [00:02<00:00, 2.38it/s, loss=0.836]\n",
- "Epoch 4: 100%|███████████████| 6/6 [00:02<00:00, 2.43it/s, loss=0.78]\n",
- "Epoch 5: 100%|██████████████| 6/6 [00:02<00:00, 2.33it/s, loss=0.723]\n",
- "Epoch 6: 100%|██████████████| 6/6 [00:02<00:00, 2.34it/s, loss=0.673]\n",
- "Epoch 7: 100%|██████████████| 6/6 [00:02<00:00, 2.43it/s, loss=0.617]\n",
- "Epoch 8: 100%|██████████████| 6/6 [00:02<00:00, 2.34it/s, loss=0.567]\n",
- "Epoch 9: 100%|███████████████| 6/6 [00:02<00:00, 2.41it/s, loss=0.52]\n",
- "Epoch 10: 100%|█████████████| 6/6 [00:02<00:00, 2.32it/s, loss=0.478]\n",
- "Epoch 11: 100%|█████████████| 6/6 [00:02<00:00, 2.41it/s, loss=0.434]\n",
- "Epoch 12: 100%|█████████████| 6/6 [00:02<00:00, 2.41it/s, loss=0.389]\n",
- "Epoch 13: 100%|█████████████| 6/6 [00:02<00:00, 2.40it/s, loss=0.357]\n",
- "Epoch 14: 100%|█████████████| 6/6 [00:02<00:00, 2.38it/s, loss=0.321]\n",
- "Epoch 15: 100%|█████████████| 6/6 [00:02<00:00, 2.31it/s, loss=0.284]\n",
- "Epoch 16: 100%|█████████████| 6/6 [00:02<00:00, 2.39it/s, loss=0.252]\n",
- "Epoch 17: 100%|█████████████| 6/6 [00:02<00:00, 2.40it/s, loss=0.227]\n",
- "Epoch 18: 100%|█████████████| 6/6 [00:02<00:00, 2.39it/s, loss=0.205]\n",
- "Epoch 19: 100%|█████████████| 6/6 [00:02<00:00, 2.38it/s, loss=0.197]\n",
- "Epoch 20: 100%|█████████████| 6/6 [00:02<00:00, 2.31it/s, loss=0.167]\n",
- "Epoch 21: 100%|█████████████| 6/6 [00:02<00:00, 2.38it/s, loss=0.152]\n",
- "Epoch 22: 100%|█████████████| 6/6 [00:02<00:00, 2.38it/s, loss=0.137]\n",
- "Epoch 23: 100%|█████████████| 6/6 [00:02<00:00, 2.31it/s, loss=0.123]\n",
- "Epoch 24: 100%|█████████████| 6/6 [00:02<00:00, 2.37it/s, loss=0.112]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1000/1000 [00:09<00:00, 101.87it/s]\n"
- ]
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Epoch 25: 100%|█████████████| 6/6 [00:02<00:00, 2.31it/s, loss=0.104]\n",
- "Epoch 26: 100%|████████████| 6/6 [00:02<00:00, 2.35it/s, loss=0.0922]\n",
- "Epoch 27: 100%|████████████| 6/6 [00:02<00:00, 2.39it/s, loss=0.0875]\n",
- "Epoch 28: 100%|████████████| 6/6 [00:02<00:00, 2.37it/s, loss=0.0778]\n",
- "Epoch 29: 100%|████████████| 6/6 [00:02<00:00, 2.30it/s, loss=0.0702]\n",
- "Epoch 30: 100%|████████████| 6/6 [00:02<00:00, 2.37it/s, loss=0.0606]\n",
- "Epoch 31: 100%|████████████| 6/6 [00:02<00:00, 2.36it/s, loss=0.0573]\n",
- "Epoch 32: 100%|████████████| 6/6 [00:02<00:00, 2.33it/s, loss=0.0535]\n",
- "Epoch 33: 100%|████████████| 6/6 [00:02<00:00, 2.33it/s, loss=0.0452]\n",
- "Epoch 34: 100%|████████████| 6/6 [00:02<00:00, 2.24it/s, loss=0.0497]\n",
- "Epoch 35: 100%|████████████| 6/6 [00:02<00:00, 2.29it/s, loss=0.0469]\n",
- "Epoch 36: 100%|████████████| 6/6 [00:02<00:00, 2.28it/s, loss=0.0377]\n",
- "Epoch 37: 100%|████████████| 6/6 [00:02<00:00, 2.30it/s, loss=0.0381]\n",
- "Epoch 38: 100%|████████████| 6/6 [00:02<00:00, 2.27it/s, loss=0.0413]\n",
- "Epoch 39: 100%|████████████| 6/6 [00:02<00:00, 2.23it/s, loss=0.0318]\n",
- "Epoch 40: 100%|████████████| 6/6 [00:02<00:00, 2.26it/s, loss=0.0379]\n",
- "Epoch 41: 100%|████████████| 6/6 [00:02<00:00, 2.14it/s, loss=0.0338]\n",
- "Epoch 42: 100%|██████████████| 6/6 [00:02<00:00, 2.22it/s, loss=0.03]\n",
- "Epoch 43: 100%|████████████| 6/6 [00:02<00:00, 2.23it/s, loss=0.0287]\n",
- "Epoch 44: 100%|████████████| 6/6 [00:02<00:00, 2.14it/s, loss=0.0269]\n",
- "Epoch 45: 100%|████████████| 6/6 [00:02<00:00, 2.16it/s, loss=0.0255]\n",
- "Epoch 46: 100%|████████████| 6/6 [00:02<00:00, 2.23it/s, loss=0.0304]\n",
- "Epoch 47: 100%|████████████| 6/6 [00:02<00:00, 2.17it/s, loss=0.0265]\n",
- "Epoch 48: 100%|████████████| 6/6 [00:02<00:00, 2.13it/s, loss=0.0266]\n",
- "Epoch 49: 100%|████████████| 6/6 [00:02<00:00, 2.10it/s, loss=0.0256]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1000/1000 [00:09<00:00, 101.68it/s]\n"
- ]
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Epoch 50: 100%|████████████| 6/6 [00:02<00:00, 2.26it/s, loss=0.0249]\n",
- "Epoch 51: 100%|████████████| 6/6 [00:02<00:00, 2.16it/s, loss=0.0228]\n",
- "Epoch 52: 100%|████████████| 6/6 [00:02<00:00, 2.23it/s, loss=0.0297]\n",
- "Epoch 53: 100%|████████████| 6/6 [00:02<00:00, 2.23it/s, loss=0.0228]\n",
- "Epoch 54: 100%|████████████| 6/6 [00:02<00:00, 2.17it/s, loss=0.0285]\n",
- "Epoch 55: 100%|████████████| 6/6 [00:02<00:00, 2.19it/s, loss=0.0258]\n",
- "Epoch 56: 100%|████████████| 6/6 [00:02<00:00, 2.13it/s, loss=0.0205]\n",
- "Epoch 57: 100%|████████████| 6/6 [00:02<00:00, 2.14it/s, loss=0.0265]\n",
- "Epoch 58: 100%|████████████| 6/6 [00:02<00:00, 2.08it/s, loss=0.0237]\n",
- "Epoch 59: 100%|████████████| 6/6 [00:02<00:00, 2.05it/s, loss=0.0226]\n",
- "Epoch 60: 100%|████████████| 6/6 [00:02<00:00, 2.16it/s, loss=0.0272]\n",
- "Epoch 61: 100%|████████████| 6/6 [00:02<00:00, 2.16it/s, loss=0.0236]\n",
- "Epoch 62: 100%|████████████| 6/6 [00:02<00:00, 2.10it/s, loss=0.0234]\n",
- "Epoch 63: 100%|████████████| 6/6 [00:02<00:00, 2.11it/s, loss=0.0211]\n",
- "Epoch 64: 100%|████████████| 6/6 [00:02<00:00, 2.06it/s, loss=0.0245]\n",
- "Epoch 65: 100%|████████████| 6/6 [00:02<00:00, 2.08it/s, loss=0.0246]\n",
- "Epoch 66: 100%|████████████| 6/6 [00:02<00:00, 2.13it/s, loss=0.0195]\n",
- "Epoch 67: 100%|████████████| 6/6 [00:02<00:00, 2.10it/s, loss=0.0227]\n",
- "Epoch 68: 100%|████████████| 6/6 [00:02<00:00, 2.11it/s, loss=0.0251]\n",
- "Epoch 69: 100%|████████████| 6/6 [00:02<00:00, 2.07it/s, loss=0.0209]\n",
- "Epoch 70: 100%|████████████| 6/6 [00:02<00:00, 2.08it/s, loss=0.0236]\n",
- "Epoch 71: 100%|████████████| 6/6 [00:02<00:00, 2.03it/s, loss=0.0261]\n",
- "Epoch 72: 100%|████████████| 6/6 [00:02<00:00, 2.11it/s, loss=0.0255]\n",
- "Epoch 73: 100%|████████████| 6/6 [00:02<00:00, 2.16it/s, loss=0.0232]\n",
- "Epoch 74: 100%|████████████| 6/6 [00:03<00:00, 1.98it/s, loss=0.0229]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1000/1000 [00:09<00:00, 103.82it/s]\n"
- ]
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Epoch 75: 100%|████████████| 6/6 [00:02<00:00, 2.15it/s, loss=0.0198]\n",
- "Epoch 76: 100%|████████████| 6/6 [00:02<00:00, 2.22it/s, loss=0.0264]\n",
- "Epoch 77: 100%|████████████| 6/6 [00:02<00:00, 2.18it/s, loss=0.0208]\n",
- "Epoch 78: 100%|████████████| 6/6 [00:02<00:00, 2.18it/s, loss=0.0192]\n",
- "Epoch 79: 100%|████████████| 6/6 [00:02<00:00, 2.01it/s, loss=0.0257]\n",
- "Epoch 80: 100%|████████████| 6/6 [00:02<00:00, 2.11it/s, loss=0.0226]\n",
- "Epoch 81: 100%|████████████| 6/6 [00:02<00:00, 2.07it/s, loss=0.0226]\n",
- "Epoch 82: 100%|████████████| 6/6 [00:02<00:00, 2.10it/s, loss=0.0216]\n",
- "Epoch 83: 100%|████████████| 6/6 [00:02<00:00, 2.03it/s, loss=0.0228]\n",
- "Epoch 84: 100%|████████████| 6/6 [00:02<00:00, 2.08it/s, loss=0.0247]\n",
- "Epoch 85: 100%|████████████| 6/6 [00:03<00:00, 1.99it/s, loss=0.0234]\n",
- "Epoch 86: 100%|█████████████| 6/6 [00:02<00:00, 2.02it/s, loss=0.022]\n",
- "Epoch 87: 100%|█████████████| 6/6 [00:02<00:00, 2.12it/s, loss=0.023]\n",
- "Epoch 88: 100%|████████████| 6/6 [00:02<00:00, 2.01it/s, loss=0.0232]\n",
- "Epoch 89: 100%|█████████████| 6/6 [00:03<00:00, 1.95it/s, loss=0.021]\n",
- "Epoch 90: 100%|████████████| 6/6 [00:02<00:00, 2.01it/s, loss=0.0217]\n",
- "Epoch 91: 100%|██████████████| 6/6 [00:02<00:00, 2.02it/s, loss=0.02]\n",
- "Epoch 92: 100%|████████████| 6/6 [00:02<00:00, 2.09it/s, loss=0.0226]\n",
- "Epoch 93: 100%|████████████| 6/6 [00:02<00:00, 2.07it/s, loss=0.0232]\n",
- "Epoch 94: 100%|██████████████| 6/6 [00:03<00:00, 1.85it/s, loss=0.02]\n",
- "Epoch 95: 100%|████████████| 6/6 [00:02<00:00, 2.01it/s, loss=0.0179]\n",
- "Epoch 96: 100%|████████████| 6/6 [00:02<00:00, 2.03it/s, loss=0.0225]\n",
- "Epoch 97: 100%|████████████| 6/6 [00:02<00:00, 2.00it/s, loss=0.0144]\n",
- "Epoch 98: 100%|████████████| 6/6 [00:02<00:00, 2.05it/s, loss=0.0214]\n",
- "Epoch 99: 100%|████████████| 6/6 [00:03<00:00, 1.93it/s, loss=0.0137]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1000/1000 [00:09<00:00, 103.43it/s]\n"
- ]
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Epoch 100: 100%|███████████| 6/6 [00:02<00:00, 2.13it/s, loss=0.0221]\n",
- "Epoch 101: 100%|███████████| 6/6 [00:02<00:00, 2.11it/s, loss=0.0137]\n",
- "Epoch 102: 100%|███████████| 6/6 [00:02<00:00, 2.03it/s, loss=0.0217]\n",
- "Epoch 103: 100%|███████████| 6/6 [00:02<00:00, 2.05it/s, loss=0.0199]\n",
- "Epoch 104: 100%|███████████| 6/6 [00:02<00:00, 2.11it/s, loss=0.0196]\n",
- "Epoch 105: 100%|███████████| 6/6 [00:03<00:00, 1.97it/s, loss=0.0167]\n",
- "Epoch 106: 100%|███████████| 6/6 [00:02<00:00, 2.01it/s, loss=0.0199]\n",
- "Epoch 107: 100%|███████████| 6/6 [00:03<00:00, 1.97it/s, loss=0.0201]\n",
- "Epoch 108: 100%|███████████| 6/6 [00:03<00:00, 1.99it/s, loss=0.0183]\n",
- "Epoch 109: 100%|███████████| 6/6 [00:02<00:00, 2.03it/s, loss=0.0213]\n",
- "Epoch 110: 100%|███████████| 6/6 [00:03<00:00, 1.99it/s, loss=0.0194]\n",
- "Epoch 111: 100%|███████████| 6/6 [00:03<00:00, 1.90it/s, loss=0.0198]\n",
- "Epoch 112: 100%|███████████| 6/6 [00:02<00:00, 2.01it/s, loss=0.0227]\n",
- "Epoch 113: 100%|████████████| 6/6 [00:02<00:00, 2.05it/s, loss=0.019]\n",
- "Epoch 114: 100%|███████████| 6/6 [00:03<00:00, 1.89it/s, loss=0.0189]\n",
- "Epoch 115: 100%|███████████| 6/6 [00:03<00:00, 1.93it/s, loss=0.0176]\n",
- "Epoch 116: 100%|███████████| 6/6 [00:03<00:00, 1.90it/s, loss=0.0247]\n",
- "Epoch 117: 100%|███████████| 6/6 [00:02<00:00, 2.05it/s, loss=0.0226]\n",
- "Epoch 118: 100%|███████████| 6/6 [00:02<00:00, 2.02it/s, loss=0.0199]\n",
- "Epoch 119: 100%|███████████| 6/6 [00:03<00:00, 1.84it/s, loss=0.0207]\n",
- "Epoch 120: 100%|████████████| 6/6 [00:03<00:00, 1.93it/s, loss=0.017]\n",
- "Epoch 121: 100%|███████████| 6/6 [00:02<00:00, 2.00it/s, loss=0.0213]\n",
- "Epoch 122: 100%|███████████| 6/6 [00:03<00:00, 1.91it/s, loss=0.0204]\n",
- "Epoch 123: 100%|███████████| 6/6 [00:03<00:00, 1.98it/s, loss=0.0242]\n",
- "Epoch 124: 100%|███████████| 6/6 [00:03<00:00, 1.98it/s, loss=0.0196]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1000/1000 [00:09<00:00, 100.61it/s]\n"
- ]
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Epoch 125: 100%|███████████| 6/6 [00:02<00:00, 2.11it/s, loss=0.0176]\n",
- "Epoch 126: 100%|█████████████| 6/6 [00:02<00:00, 2.10it/s, loss=0.02]\n",
- "Epoch 127: 100%|███████████| 6/6 [00:02<00:00, 2.01it/s, loss=0.0246]\n",
- "Epoch 128: 100%|███████████| 6/6 [00:02<00:00, 2.16it/s, loss=0.0189]\n",
- "Epoch 129: 100%|███████████| 6/6 [00:03<00:00, 1.99it/s, loss=0.0174]\n",
- "Epoch 130: 100%|███████████| 6/6 [00:03<00:00, 1.99it/s, loss=0.0165]\n",
- "Epoch 131: 100%|███████████| 6/6 [00:03<00:00, 1.95it/s, loss=0.0229]\n",
- "Epoch 132: 100%|███████████| 6/6 [00:03<00:00, 1.89it/s, loss=0.0174]\n",
- "Epoch 133: 100%|███████████| 6/6 [00:03<00:00, 1.79it/s, loss=0.0172]\n",
- "Epoch 134: 100%|███████████| 6/6 [00:02<00:00, 2.04it/s, loss=0.0193]\n",
- "Epoch 135: 100%|████████████| 6/6 [00:03<00:00, 1.94it/s, loss=0.018]\n",
- "Epoch 136: 100%|█████████████| 6/6 [00:03<00:00, 1.87it/s, loss=0.02]\n",
- "Epoch 137: 100%|████████████| 6/6 [00:03<00:00, 1.87it/s, loss=0.022]\n",
- "Epoch 138: 100%|███████████| 6/6 [00:02<00:00, 2.13it/s, loss=0.0204]\n",
- "Epoch 139: 100%|███████████| 6/6 [00:03<00:00, 1.94it/s, loss=0.0192]\n",
- "Epoch 140: 100%|███████████| 6/6 [00:03<00:00, 1.88it/s, loss=0.0184]\n",
- "Epoch 141: 100%|███████████| 6/6 [00:03<00:00, 1.92it/s, loss=0.0175]\n",
- "Epoch 142: 100%|███████████| 6/6 [00:03<00:00, 1.80it/s, loss=0.0198]\n",
- "Epoch 143: 100%|███████████| 6/6 [00:03<00:00, 1.88it/s, loss=0.0166]\n",
- "Epoch 144: 100%|███████████| 6/6 [00:03<00:00, 1.94it/s, loss=0.0237]\n",
- "Epoch 145: 100%|███████████| 6/6 [00:03<00:00, 1.83it/s, loss=0.0195]\n",
- "Epoch 146: 100%|███████████| 6/6 [00:03<00:00, 1.94it/s, loss=0.0171]\n",
- "Epoch 147: 100%|███████████| 6/6 [00:03<00:00, 1.96it/s, loss=0.0187]\n",
- "Epoch 148: 100%|███████████| 6/6 [00:03<00:00, 1.88it/s, loss=0.0161]\n",
- "Epoch 149: 100%|████████████| 6/6 [00:03<00:00, 1.93it/s, loss=0.022]\n",
- "100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1000/1000 [00:10<00:00, 95.66it/s]\n"
- ]
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "train completed, total time: 489.2791540622711.\n"
- ]
- }
- ],
- "source": [
- "n_epochs = 150\n",
- "val_interval = 25\n",
- "epoch_loss_list = []\n",
- "val_epoch_loss_list = []\n",
- "\n",
- "scaler = GradScaler()\n",
- "total_start = time.time()\n",
- "for epoch in range(n_epochs):\n",
- " model.train()\n",
- " epoch_loss = 0\n",
- " progress_bar = tqdm(enumerate(train_loader), total=len(train_loader), ncols=70)\n",
- " progress_bar.set_description(f\"Epoch {epoch}\")\n",
- " for step, batch in progress_bar:\n",
- " images = batch[\"image\"].to(device)\n",
- " optimizer.zero_grad(set_to_none=True)\n",
- "\n",
- " with autocast(enabled=True):\n",
- " # Generate random noise\n",
- " noise = torch.randn_like(images).to(device)\n",
- "\n",
- " # Create timesteps\n",
- " timesteps = torch.randint(\n",
- " 0, inferer.scheduler.num_train_timesteps, (images.shape[0],), device=images.device\n",
- " ).long()\n",
- "\n",
- " # Get model prediction\n",
- " noise_pred = inferer(inputs=images, diffusion_model=model, noise=noise, timesteps=timesteps)\n",
- "\n",
- " loss = F.mse_loss(noise_pred.float(), noise.float())\n",
- "\n",
- " scaler.scale(loss).backward()\n",
- " scaler.step(optimizer)\n",
- " scaler.update()\n",
- "\n",
- " epoch_loss += loss.item()\n",
- "\n",
- " progress_bar.set_postfix({\"loss\": epoch_loss / (step + 1)})\n",
- " epoch_loss_list.append(epoch_loss / (step + 1))\n",
- "\n",
- " if (epoch + 1) % val_interval == 0:\n",
- " model.eval()\n",
- " val_epoch_loss = 0\n",
- " for step, batch in enumerate(val_loader):\n",
- " images = batch[\"image\"].to(device)\n",
- " with torch.no_grad():\n",
- " with autocast(enabled=True):\n",
- " noise = torch.randn_like(images).to(device)\n",
- " timesteps = torch.randint(\n",
- " 0, inferer.scheduler.num_train_timesteps, (images.shape[0],), device=images.device\n",
- " ).long()\n",
- " noise_pred = inferer(inputs=images, diffusion_model=model, noise=noise, timesteps=timesteps)\n",
- " val_loss = F.mse_loss(noise_pred.float(), noise.float())\n",
- "\n",
- " val_epoch_loss += val_loss.item()\n",
- " progress_bar.set_postfix({\"val_loss\": val_epoch_loss / (step + 1)})\n",
- " val_epoch_loss_list.append(val_epoch_loss / (step + 1))\n",
- "\n",
- " # Sampling image during training\n",
- " noise = torch.randn((1, 1, 64, 64))\n",
- " noise = noise.to(device)\n",
- " scheduler.set_timesteps(num_inference_steps=1000)\n",
- " with autocast(enabled=True):\n",
- " image = inferer.sample(input_noise=noise, diffusion_model=model, scheduler=scheduler)\n",
- "\n",
- " plt.figure(figsize=(2, 2))\n",
- " plt.imshow(image[0, 0].cpu(), vmin=0, vmax=1, cmap=\"gray\")\n",
- " plt.tight_layout()\n",
- " plt.axis(\"off\")\n",
- " plt.show()\n",
- "\n",
- "total_time = time.time() - total_start\n",
- "print(f\"train completed, total time: {total_time}.\")"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "fd2b79a4",
- "metadata": {},
- "source": [
- "## Train the ControlNet"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "73524090-2924-4967-8774-45e795f45bb4",
- "metadata": {},
- "source": [
- "### Set up models"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 12,
- "id": "06181aa6-1c4b-415d-9973-df6f44693935",
- "metadata": {
- "lines_to_next_cell": 2
- },
- "outputs": [],
- "source": [
- "# Create control net\n",
- "controlnet = ControlNet(\n",
- " spatial_dims=2,\n",
- " in_channels=1,\n",
- " num_channels=(128, 256, 256),\n",
- " attention_levels=(False, True, True),\n",
- " num_res_blocks=1,\n",
- " num_head_channels=256,\n",
- " conditioning_embedding_num_channels=(16,),\n",
- ")\n",
- "# Copy weights from the DM to the controlnet\n",
- "controlnet.load_state_dict(model.state_dict(), strict=False)\n",
- "controlnet = controlnet.to(device)\n",
- "# Now, we freeze the parameters of the diffusion model.\n",
- "for p in model.parameters():\n",
- " p.requires_grad = False\n",
- "optimizer = torch.optim.Adam(params=controlnet.parameters(), lr=2.5e-5)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "94d2e5e7-8633-4d1d-a323-7e74c963641c",
- "metadata": {
- "tags": []
- },
- "source": [
- "### Run ControlNet training"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 13,
- "id": "78053aaf-2009-405b-904e-0e5d301018eb",
- "metadata": {
- "tags": []
- },
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Epoch 0: 100%|█████████████| 6/6 [00:02<00:00, 2.42it/s, loss=0.0229]\n",
- "Epoch 1: 100%|█████████████| 6/6 [00:02<00:00, 2.42it/s, loss=0.0182]\n",
- "Epoch 2: 100%|█████████████| 6/6 [00:02<00:00, 2.32it/s, loss=0.0206]\n",
- "Epoch 3: 100%|█████████████| 6/6 [00:02<00:00, 2.37it/s, loss=0.0223]\n",
- "Epoch 4: 100%|█████████████| 6/6 [00:02<00:00, 2.34it/s, loss=0.0193]\n",
- "Epoch 5: 100%|█████████████| 6/6 [00:02<00:00, 2.29it/s, loss=0.0216]\n",
- "Epoch 6: 100%|██████████████| 6/6 [00:02<00:00, 2.22it/s, loss=0.019]\n",
- "Epoch 7: 100%|█████████████| 6/6 [00:02<00:00, 2.26it/s, loss=0.0179]\n",
- "Epoch 8: 100%|█████████████| 6/6 [00:02<00:00, 2.28it/s, loss=0.0188]\n",
- "Epoch 9: 100%|█████████████| 6/6 [00:02<00:00, 2.20it/s, loss=0.0219]\n",
- "Epoch 10: 100%|████████████| 6/6 [00:02<00:00, 2.29it/s, loss=0.0185]\n",
- "Epoch 11: 100%|████████████| 6/6 [00:02<00:00, 2.32it/s, loss=0.0202]\n",
- "Epoch 12: 100%|█████████████| 6/6 [00:03<00:00, 1.62it/s, loss=0.021]\n",
- "Epoch 13: 100%|████████████| 6/6 [00:02<00:00, 2.15it/s, loss=0.0239]\n",
- "Epoch 14: 100%|████████████| 6/6 [00:02<00:00, 2.23it/s, loss=0.0182]\n",
- "Epoch 15: 100%|████████████| 6/6 [00:02<00:00, 2.24it/s, loss=0.0192]\n",
- "Epoch 16: 100%|████████████| 6/6 [00:02<00:00, 2.19it/s, loss=0.0192]\n",
- "Epoch 17: 100%|████████████| 6/6 [00:02<00:00, 2.29it/s, loss=0.0223]\n",
- "Epoch 18: 100%|████████████| 6/6 [00:02<00:00, 2.16it/s, loss=0.0224]\n",
- "Epoch 19: 100%|████████████| 6/6 [00:02<00:00, 2.13it/s, loss=0.0215]\n",
- "Epoch 20: 100%|████████████| 6/6 [00:02<00:00, 2.24it/s, loss=0.0186]\n",
- "Epoch 21: 100%|████████████| 6/6 [00:02<00:00, 2.19it/s, loss=0.0191]\n",
- "Epoch 22: 100%|████████████| 6/6 [00:02<00:00, 2.16it/s, loss=0.0159]\n",
- "Epoch 23: 100%|████████████| 6/6 [00:02<00:00, 2.15it/s, loss=0.0179]\n",
- "Epoch 24: 100%|█████████████| 6/6 [00:02<00:00, 2.23it/s, loss=0.018]\n",
- "sampling...: 100%|████████████████████████████████████████████████████████| 1000/1000 [00:31<00:00, 31.75it/s]\n"
- ]
- },
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAW4AAADECAYAAAC/UsuzAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABcc0lEQVR4nO29d3hc1Z0+/k7vRSPJVrMlF8XG2KYah2owxA7FhGwIsGRpgYQkhJIlIQv5JrQkS4AHw2JDcEIgAfLsBkgCgVCWthBKqMYUN8mWbcnq03s7vz/8+xyfezUzmhmNpJF83ueZR5o7t5x7Z+57Pvc97+dzNIwxBgkJCQmJKQPtZDdAQkJCQqI0SOKWkJCQmGKQxC0hISExxSCJW0JCQmKKQRK3hISExBSDJG4JCQmJKQZJ3BISEhJTDJK4JSQkJKYYJHFLSEhITDFMC+J++OGHodFo0NXVxZedeOKJOPHEE4va/uKLL0ZbW9u4tI2Qq40HIm666SZoNBoMDQ1NdlMkyoRGo8FNN91Usf21tbXh4osvrtj+DgSURdydnZ24/PLLMXfuXJjNZjidThx77LG45557EIvFKt3GimDv3r246aabsHHjxsluioQEPvnkE5x99tlobW2F2WxGc3MzvvSlL+Hee++d7KZJTAHoS93g2Wefxde//nWYTCZceOGFWLx4MZLJJP7xj3/gRz/6ET777DNs2LBhPNpaEl588UXF+7179+Lmm29GW1sbDj30UMVnv/nNb5DNZse1PRdccAHOO+88mEymcT2ORPXjrbfewkknnYTZs2fjW9/6FhoaGrBnzx688847uOeee3DllVdOdhMnFFu3boVWOy0e/icMJRH3zp07cd5556G1tRWvvPIKGhsb+WdXXHEFOjo68Oyzz1a8keXAaDQWva7BYBjHluyDTqeDTqcb9+NIVD9+8YtfwOVy4b333oPb7VZ8NjAwMDmNmkTIYKZ0lNTN3X777QiHw3jwwQcVpE2YP38+rr76av4+nU7j1ltvxbx582AymdDW1oYbbrgBiURCsV1bWxvOOOMM/OMf/8BRRx0Fs9mMuXPn4g9/+MOIY3z22WdYuXIlLBYLWlpa8POf/zxntCxq3K+99hqWLVsGALjkkkug0Wig0Wjw8MMPA8itcUciEVx77bWYNWsWTCYTFixYgDvvvBPqYooajQbf//738de//hWLFy+GyWTCwQcfjOeff16xXi6Nu5Tz3rRpE1asWKE474ceeqgo3fziiy+G3W7H7t27ccYZZ8But6O5uRnr168HsO+xfeXKlbDZbGhtbcUf//hHxfZerxc//OEPsWTJEtjtdjidTpx66qn4+OOPRxzr3nvvxcEHHwyr1YqamhoceeSRI/anxq5duzB//nwsXrwY/f39BdedDujs7MTBBx88grQBYMaMGYr3Dz30EFauXIkZM2bAZDJh0aJFuP/++0dsR7+l1157DUceeSQsFguWLFmC1157DQDw5z//GUuWLIHZbMYRRxyBjz76SLE9/UZ27NiB1atXw2azoampCbfccsuI33wu9PT04Jvf/CZmzpzJ74Hf/e53RV0PtcZN98o//vEPXHXVVaivr4fb7cbll1+OZDIJv9+PCy+8EDU1NaipqcF11103oo133nknjjnmGNTW1sJiseCII47AE088MeLYsVgMV111Ferq6uBwOHDmmWeip6cnp44/lnOsOFgJaG5uZnPnzi16/YsuuogBYGeffTZbv349u/DCCxkAdtZZZynWa21tZQsWLGAzZ85kN9xwA1u3bh07/PDDmUajYZ9++ilfr7e3l9XX17Oamhp20003sTvuuIO1t7ezpUuXMgBs586dfN0VK1awFStWMMYY6+vrY7fccgsDwL797W+zRx55hD3yyCOss7OTt7O1tZVvm81m2cqVK5lGo2GXXXYZW7duHVuzZg0DwK655hpF2wGwQw45hDU2NrJbb72V3X333Wzu3LnMarWyoaEhvt5DDz00oo3Fnnd3dzfzeDystraW3XzzzezOO+9kCxcuZIcccsiIfeb7HsxmM1u0aBH7zne+w9avX8+OOeYYBoA99NBDrKmpif3oRz9i9957Lzv44IOZTqdjO3bs4Nu/9957bN68eew//uM/2AMPPMBuueUW1tzczFwuF+vp6eHrbdiwgX/fDzzwALvnnnvYpZdeyq666iq+zo033sgAsMHBQcYYYx0dHWz27Nns0EMP5cumO1atWsUcDgf75JNPRl132bJl7OKLL2Zr165l9957L1u1ahUDwNatW6dYj35LjY2N7KabbmJr165lzc3NzG63s0cffZTNnj2b3Xbbbey2225jLpeLzZ8/n2UyGb49/Uba29vZBRdcwNatW8fOOOMMBoD99Kc/VRwLALvxxhv5+76+PtbS0sJmzZrFbrnlFnb//fezM888kwFga9euHfUcW1tb2UUXXcTf071y6KGHsi9/+cts/fr17IILLmAA2HXXXceOO+44dv7557P77ruPt/H3v/+9Yp8tLS3se9/7Hlu3bh2766672FFHHcUAsGeeeUax3jnnnMMAsAsuuICtX7+enXPOOfy+quQ5VhpFE3cgEGAA2Fe+8pWi1t+4cSMDwC677DLF8h/+8IcMAHvllVf4stbWVgaAvf7663zZwMAAM5lM7Nprr+XLrrnmGgaA/fOf/1Ss53K5ChI3Y/vIh4hKDTVx//Wvf2UA2M9//nPFemeffTbTaDSso6ODLwPAjEajYtnHH3/MALB7772XL8tH3MWc95VXXsk0Gg376KOP+LLh4WHm8XiKJm4A7Je//CVf5vP5mMViYRqNhv33f/83X75ly5YRP9p4PK64yRljbOfOncxkMrFbbrmFL/vKV77CDj744IJtEYl78+bNrKmpiS1btox5vd6C200nvPjii0yn0zGdTseOPvpodt1117EXXniBJZPJEetGo9ERy1avXj0igKLf0ltvvcWXvfDCCwwAs1gsbNeuXXz5Aw88wACwV199lS+j38iVV17Jl2WzWXb66aczo9Go6FTVv49LL72UNTY2KgIVxhg777zzmMvlynkO6rbnIu7Vq1ezbDbLlx999NFMo9Gw73znO3xZOp1mLS0tinudsZHXLZlMssWLF7OVK1fyZR988EHOYOziiy+u+DlWGkVLJcFgEADgcDiKWv/vf/87AODf//3fFcuvvfZaABihhS9atAjHH388f19fX48FCxZgx44din1+8YtfxFFHHaVY7xvf+Eaxp1F023U6Ha666qoRbWeM4bnnnlMsP+WUUzBv3jz+funSpXA6nYq250Mx5/3888/j6KOPVgyqejyeks/7sssu4/+73W4sWLAANpsN55xzDl++YMECuN1uxfFNJhMfPMpkMhgeHobdbseCBQvw4YcfKvbZ3d2N9957b9S2fPrpp1ixYgXa2trw0ksvoaampqRzmcr40pe+hLfffhtnnnkmPv74Y9x+++1YvXo1mpub8fTTTyvWtVgs/P9AIIChoSGsWLECO3bsQCAQUKy7aNEiHH300fz98uXLAQArV67E7NmzRyzP9fv8/ve/z/8nGTCZTOKll17KeS6MMTz55JNYs2YN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oVCI/eAHP2BNTU3MYDCw9vZ2dscddyjsSYzts0ZdccUVI9qez+KktgMWe94fffQRO/7445nJZGItLS3sP//zP9l//dd/MQCsr69vxD5EXHTRRcxms+U8Ti77nrpd8XicXXvttayxsZFZLBZ27LHHsrfffntEOx944AF2wgknsNraWmYymdi8efPYj370IxYIBPg6ah83Y/usWytWrGB2u5298847Bc9lOuC5555j3/zmN9nChQuZ3W5nRqORzZ8/n1155ZWsv79fse7TTz/Nli5dysxmM2tra2O/+tWv2O9+97uif0u5fp87d+5kANgdd9zBl9FvpLOzk61atYpZrVY2c+ZMduONN46wgkJllWOMsf7+fnbFFVewWbNmMYPBwBoaGtjJJ5/MNmzYMOr1yHevvPfee4r1cv12xLaLePDBB1l7ezszmUxs4cKF7KGHHuLbi4hEIuyKK65gHo+H2e12dtZZZ7GtW7cyAOy2226r2DlWGhrGpsDon0ROXHPNNXjggQcQDodlOr3EmHDxxRfjiSeeQDgcnuymTDo2btyIww47DI8++mjFrcaVgqzsMkWgrro4PDyMRx55BMcdd5wkbQmJMpGrmundd98NrVaLE044YRJaVBxKrg4oMTk4+uijceKJJ+Kggw5Cf38/HnzwQQSDQfz0pz+d7KZJSExZ3H777fjggw9w0kknQa/X47nnnsNzzz2Hb3/72yP84tUESdxTBKeddhqeeOIJbNiwARqNBocffjgefPDBqo4KJCSqHccccwz+93//F7feeivC4TBmz56Nm266CT/5yU8mu2kFITVuCQkJiSkGqXFLSEhITDFI4paQkJCYYpDELSEhITHFUPTg5Hhn50lIEKp12EW8B2gWJVomplfTMvE8aJn4mfo8c91jufZR7PURjynuWzy2enkpyLV+vv1pNBpotVpoNJqc515ozld1+8XltK+x/mZK4bfRjkUlkIu9zrm+p3Q6XfAY0lUiIVEiKkV25QZDxRJ4MW2rZCepPh8iVvFY6vfFIte6tKxQB1LoGKVe/2LbO9p6lQiCJXFLSBQJcSZyNQnliwhzgTE26s1bTDReLKitlX5qLmZ/+SJssW2j7b/UzkX9ZFQqxtqZjWX7YreVGreERJGoxGP5ZMpAk3Hs0SLsfDJIvvXH2pZqleGA0s63aB+31LglJgrVenPliuSq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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Epoch 25: 100%|████████████| 6/6 [00:02<00:00, 2.47it/s, loss=0.0192]\n",
- "Epoch 26: 100%|████████████| 6/6 [00:02<00:00, 2.44it/s, loss=0.0151]\n",
- "Epoch 27: 100%|████████████| 6/6 [00:02<00:00, 2.50it/s, loss=0.0205]\n",
- "Epoch 28: 100%|████████████| 6/6 [00:02<00:00, 2.42it/s, loss=0.0161]\n",
- "Epoch 29: 100%|████████████| 6/6 [00:02<00:00, 2.45it/s, loss=0.0193]\n",
- "Epoch 30: 100%|████████████| 6/6 [00:02<00:00, 2.41it/s, loss=0.0176]\n",
- "Epoch 31: 100%|████████████| 6/6 [00:02<00:00, 2.41it/s, loss=0.0202]\n",
- "Epoch 32: 100%|████████████| 6/6 [00:02<00:00, 2.38it/s, loss=0.0161]\n",
- "Epoch 33: 100%|████████████| 6/6 [00:02<00:00, 2.37it/s, loss=0.0186]\n",
- "Epoch 34: 100%|████████████| 6/6 [00:02<00:00, 2.30it/s, loss=0.0204]\n",
- "Epoch 35: 100%|████████████| 6/6 [00:02<00:00, 2.35it/s, loss=0.0161]\n",
- "Epoch 36: 100%|████████████| 6/6 [00:02<00:00, 2.21it/s, loss=0.0129]\n",
- "Epoch 37: 100%|████████████| 6/6 [00:02<00:00, 2.18it/s, loss=0.0174]\n",
- "Epoch 38: 100%|████████████| 6/6 [00:02<00:00, 2.25it/s, loss=0.0201]\n",
- "Epoch 39: 100%|██████████████| 6/6 [00:02<00:00, 2.24it/s, loss=0.02]\n",
- "Epoch 40: 100%|████████████| 6/6 [00:02<00:00, 2.10it/s, loss=0.0183]\n",
- "Epoch 41: 100%|████████████| 6/6 [00:02<00:00, 2.20it/s, loss=0.0199]\n",
- "Epoch 42: 100%|████████████| 6/6 [00:02<00:00, 2.18it/s, loss=0.0228]\n",
- "Epoch 43: 100%|████████████| 6/6 [00:02<00:00, 2.18it/s, loss=0.0151]\n",
- "Epoch 44: 100%|████████████| 6/6 [00:02<00:00, 2.23it/s, loss=0.0135]\n",
- "Epoch 45: 100%|█████████████| 6/6 [00:02<00:00, 2.23it/s, loss=0.016]\n",
- "Epoch 46: 100%|████████████| 6/6 [00:02<00:00, 2.28it/s, loss=0.0205]\n",
- "Epoch 47: 100%|████████████| 6/6 [00:02<00:00, 2.05it/s, loss=0.0194]\n",
- "Epoch 48: 100%|████████████| 6/6 [00:02<00:00, 2.16it/s, loss=0.0188]\n",
- "Epoch 49: 100%|████████████| 6/6 [00:02<00:00, 2.28it/s, loss=0.0194]\n",
- "sampling...: 100%|████████████████████████████████████████████████████████| 1000/1000 [00:32<00:00, 30.98it/s]\n"
- ]
- },
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAW4AAADECAYAAAC/UsuzAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABgYUlEQVR4nO19aZRlVZnlfvMYLyJeZETGHJEzmSSgjCKToAwyWFSLaGMhIDgsEaRLpVstWwbLotQCbAaLLBFssdpqoZZSCEjbYlMICIvBJMXMNOfMyMyYX8Sbx9M/svbJ7954EfFezJF59lqxMuO+++4998Z7+3x3f/v7jkMppWBgYGBgsGjgnO8BGBgYGBhUB0PcBgYGBosMhrgNDAwMFhkMcRsYGBgsMhjiNjAwMFhkMMRtYGBgsMhgiNvAwMBgkcEQt4GBgcEigyFuAwMDg0WGI4K4H330UTgcDuzatUtve9/73of3ve99Fb3/2muvRXd396yMjSg3xqMRt912GxwOBwYGBuZ7KAZThMPhwG233TZjx+vu7sa11147Y8c7GjAl4t6+fTs+85nPYPny5fD7/YhEIjjjjDPwve99D+l0eqbHOCPYv38/brvtNrz11lvzPRQDA7z99tu44oor0NXVBb/fj7a2Npx//vm477775ntoBosA7mrf8Mtf/hIf+chH4PP58IlPfALr169HLpfDiy++iC9/+cv44x//iA0bNszGWKvCc889Z/l9//79uP3229Hd3Y13vetdltf+6Z/+CaVSaVbHc/XVV+NjH/sYfD7frJ7HYOHjpZdewrnnnovOzk586lOfQnNzM/bu3YtXXnkF3/ve93DTTTfN9xDnFFu2bIHTeUQ8/M8ZqiLunTt34mMf+xi6urrwm9/8Bi0tLfq1G2+8Edu2bcMvf/nLGR/kVOD1eive1+PxzOJIDsHlcsHlcs36eQwWPv72b/8WtbW1eO2111BXV2d5ra+vb34GNY8wwUz1qGqa+/a3v41EIoGHH37YQtrEypUr8YUvfEH/XigUcOedd2LFihXw+Xzo7u7GV7/6VWSzWcv7uru7cemll+LFF1/EqaeeCr/fj+XLl+N//s//OeYcf/zjH3HeeechEAigvb0d3/zmN8tGy1Lj/u1vf4tTTjkFAHDdddfB4XDA4XDg0UcfBVBe404mk/jiF7+Ijo4O+Hw+rFmzBt/97ndhb6bocDjw+c9/Hj//+c+xfv16+Hw+HHvssXj22Wct+5XTuKu57o0bN+Kcc86xXPcjjzxSkW5+7bXXIhwOY8+ePbj00ksRDofR1taGBx54AMChx/bzzjsPoVAIXV1d+Od//mfL+4eGhvClL30Jxx13HMLhMCKRCD74wQ/iD3/4w5hz3XfffTj22GMRDAZRX1+Pk08+eczx7Ni9ezdWrlyJ9evXo7e3d8J9jwRs374dxx577BjSBoCmpibL74888gjOO+88NDU1wefzYd26dfj+978/5n38LP32t7/FySefjEAggOOOOw6//e1vAQD/+q//iuOOOw5+vx8nnXQS3nzzTcv7+RnZsWMHLrzwQoRCIbS2tuKOO+4Y85kvh56eHnzyk5/E0qVL9Xfghz/8YUX3w65x87vy4osv4uabb0ZjYyPq6urwmc98BrlcDrFYDJ/4xCdQX1+P+vp63HrrrWPG+N3vfhfvfe970dDQgEAggJNOOgmPP/74mHOn02ncfPPNWLJkCWpqavChD30IPT09ZXX86VzjjENVgba2NrV8+fKK97/mmmsUAHXFFVeoBx54QH3iE59QANTll19u2a+rq0utWbNGLV26VH31q19V999/vzrxxBOVw+FQmzZt0vsdOHBANTY2qvr6enXbbbep73znO2rVqlXq+OOPVwDUzp079b7nnHOOOuecc5RSSh08eFDdcccdCoD69Kc/rX784x+rH//4x2r79u16nF1dXfq9pVJJnXfeecrhcKgbbrhB3X///eqyyy5TANQtt9xiGTsAdcIJJ6iWlhZ15513qnvvvVctX75cBYNBNTAwoPd75JFHxoyx0uvet2+fikajqqGhQd1+++3qu9/9rjrmmGPUCSecMOaY4/0d/H6/WrdunfrsZz+rHnjgAfXe975XAVCPPPKIam1tVV/+8pfVfffdp4499ljlcrnUjh079Ptfe+01tWLFCvXf/tt/Uw899JC64447VFtbm6qtrVU9PT16vw0bNui/90MPPaS+973vqeuvv17dfPPNep9vfOMbCoDq7+9XSim1bds21dnZqd71rnfpbUc6LrjgAlVTU6PefvvtSfc95ZRT1LXXXqvuuecedd9996kLLrhAAVD333+/ZT9+llpaWtRtt92m7rnnHtXW1qbC4bB67LHHVGdnp7rrrrvUXXfdpWpra9XKlStVsVjU7+dnZNWqVerqq69W999/v7r00ksVAPX1r3/dci4A6hvf+Ib+/eDBg6q9vV11dHSoO+64Q33/+99XH/rQhxQAdc8990x6jV1dXeqaa67Rv/O78q53vUtddNFF6oEHHlBXX321AqBuvfVWdeaZZ6qrrrpKPfjgg3qMP/rRjyzHbG9vV5/73OfU/fffr+6++2516qmnKgDqqaeesux35ZVXKgDq6quvVg888IC68sor9fdqJq9xplExcY+MjCgA6i/+4i8q2v+tt95SANQNN9xg2f6lL31JAVC/+c1v9Lauri4FQL3wwgt6W19fn/L5fOqLX/yi3nbLLbcoAOr3v/+9Zb/a2toJiVupQ+RDorLDTtw///nPFQD1zW9+07LfFVdcoRwOh9q2bZveBkB5vV7Ltj/84Q8KgLrvvvv0tvGIu5Lrvummm5TD4VBvvvmm3jY4OKii0WjFxA1Afetb39LbhoeHVSAQUA6HQ/30pz/V2zdv3jzmQ5vJZCxfcqWU2rlzp/L5fOqOO+7Q2/7iL/5CHXvssROORRL3n/70J9Xa2qpOOeUUNTQ0NOH7jiQ899xzyuVyKZfLpU4//XR16623ql/96lcql8uN2TeVSo3ZduGFF44JoPhZeumll/S2X/3qVwqACgQCavfu3Xr7Qw89pACo559/Xm/jZ+Smm27S20qlkrrkkkuU1+u1TKr2z8f111+vWlpaLIGKUkp97GMfU7W1tWWvwT72csR94YUXqlKppLeffvrpyuFwqM9+9rN6W6FQUO3t7ZbvulJj71sul1Pr169X5513nt72+uuvlw3Grr322hm/xplGxVLJ6OgoAKCmpqai/Z9++mkAwF//9V9btn/xi18EgDFa+Lp163DWWWfp3xsbG7FmzRrs2LHDcsz3vOc9OPXUUy37ffzjH6/0Mioeu8vlws033zxm7EopPPPMM5btH/jAB7BixQr9+/HHH49IJGIZ+3io5LqfffZZnH766ZakajQarfq6b7jhBv3/uro6rFmzBqFQCFdeeaXevmbNGtTV1VnO7/P5dPKoWCxicHAQ4XAYa9aswRtvvGE55r59+/Daa69NOpZNmzbhnHPOQXd3N37961+jvr6+qmtZzDj//PPx8ssv40Mf+hD+8Ic/4Nvf/jYuvPBCtLW14cknn7TsGwgE9P9HRkYwMDCAc845Bzt27MDIyIhl33Xr1uH000/Xv5922mkAgPPOOw+dnZ1jtpf7fH7+85/X/6cMmMvl8Otf/7rstSil8MQTT+Cyyy6DUgoDAwP658ILL8TIyIjlM1INrr/+ejgcDsu4lVK4/vrr9TaXy4WTTz55zLXI+zY8PIyRkRGcddZZlrFQzvzc5z5nea89OTyb1zhVVEzckUgEABCPxyvaf/fu3XA6nVi5cqVle3NzM+rq6rB7927LdvnBIurr6zE8PGw55qpVq8bst2bNmorGVCl2796N1tbWMZPU2rVr9esSlYx9PFR63fb7CKDstvHg9/vR2Nho2VZbW4v29nbLl4Pb5flLpRLuuecerFq1Cj6fD0uWLEFjYyM2btxoIY//+l//K8LhME499VSsWrUKN954I373u9+VHc9ll12Gmpoa/OpXv9KfraMJp5xyCv71X/8Vw8PDePXVV/GVr3wF8XgcV1xxBd555x293+9+9zt84AMfQCgUQl1dHRobG/HVr34VAMYQt/2zVFtbCwDo6Ogou93++XQ6nVi+fLll2+rVqwFg3DxKf38/YrEYNmzYgMbGRsvPddddB2DqCddqrsd+LU899RTe8573wO/3IxqNorGxEd///vct94wctWzZMst77d+r2bzGqaJiV0kkEkFrays2bdpU1QnspDAexnNcqEWwstp0xj5X1z3eeSo5/7e+9S18/etfxyc/+UnceeediEajcDqduOWWWyyJ4bVr12LLli146qmn8Oyzz+KJJ57Agw8+iP/+3/87br/9dsvxP/zhD+NHP/oRfvKTn+Azn/nMDFzh4oTX68Upp5yCU045BatXr8Z1112Hn/3sZ/jGN76B7du34/3vfz+OOeYY3H333ejo6IDX68XTTz+Ne+65Z0xSfjp/46mCY/irv/orXHPNNWX3Of7446d07GquR17Lv//7v+NDH/oQzj77bDz44INoaWmBx+PBI488MmmivBxm8xqniqrsgJdeeik2bNiAl19+2fJIVg5dXV0olUr485//rCNVAOjt7UUsFkNXV1fVg+3q6sKf//znMdu3bNky6XsrnUB4nl//+teIx+OWqHvz5s369blEV1cXtm3bNmZ7uW2zgccffxznnnsuHn74Ycv2WCyGJUuWWLaFQiF89KMfxUc/+lHkcjn8p//0n/C3f/u3+MpXvgK/36/3+853vgO3243Pfe5zqKmpwVVXXTUn17KQcfLJJwMADhw4AAD4t3/7N2SzWTz55JOW6PP555+flfOXSiXs2LFDR9kAsHXrVgAYt7K4sbERNTU1KBaL+MAHPjAr46oWTzzxBPx+P371q19ZrIaPPPKIZT9y1M6dOy1P8vbv1UK8xqrsgLfeeitCoRBuuOGGsrat7du343vf+x4A4OKLLwYA3HvvvZZ97r77bgDAJZdcUvVgL774Yrzyyit49dVX9bb+/n785Cc/mfS9oVAIwCGyqeQ8xWIR999/v2X7PffcA4fDgQ9+8IPVDXyauPDCC/Hyyy9bqj6HhoYquu6ZgMvlGhOd/exnP0NPT49l2+DgoOV3r9eLdevWQSmFfD5vec3hcGDDhg244oorcM0114zRdo9kPP/882WjXeaFKP0xspT7joyMjCGgmYT8zCulcP/998Pj8eD9739/2f1dLhc+/OEP44knnij7NN7f3z9rYx0PLpcLDocDxWJRb9u1axd+/vOfW/a78MILAQAPPvigZbu9enUhXmNVEfeKFSvwz//8z/joRz+KtWvXWionX3rpJfzsZz/TfswTTjgB11xzDTZs2IBYLIZzzjkHr776Kn70ox/h8ssvx7nnnlv1YG+99Vb8+Mc/xkUXXYQvfOELCIVC2LBhA7q6urBx48ZJx15XV4d//Md/RE1NDUKhEE477bQx+hZwSH8999xz8bWvfQ27du3CCSecgOeeew6/+MUvcMstt1gSkXOBW2+9FY899hjOP/983HTTTQiFQvjBD36Azs5ODA0NVfU0MRVceumluOOOO3Ddddfhve99L95++2385Cc/GaOHXnDBBWhubsYZZ5yBpUuX4k9/+hPuv/9+XHLJJWWT2k6nE4899hguv/xyXHnllXj66adx3nnnzeq1LATcdNNNSKVS+Mu//Escc8wx+vvzL//yL+ju7ta66QUXXACv14vLLrsMn/nMZ5BIJPBP//RPaGpq0lH5TMLv9+PZZ5/FNddcg9NOOw3PPPMMfvnLX+KrX/3qmPyIxF133YXnn38ep512Gj71qU9h3bp1GBoawhtvvIFf//rXGBoamvGxToRLLrkEd999Ny666CJcddVV6OvrwwMPPICVK1daeOKkk07Chz/8Ydx7770YHBzEe97zHvy///f/9FOG/F4ttGusysdNbN26VX3qU59S3d3dyuv1qpqaGnXGGWeo++67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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Epoch 50: 100%|████████████| 6/6 [00:02<00:00, 2.51it/s, loss=0.0175]\n",
- "Epoch 51: 100%|█████████████| 6/6 [00:02<00:00, 2.47it/s, loss=0.019]\n",
- "Epoch 52: 100%|████████████| 6/6 [00:02<00:00, 2.37it/s, loss=0.0191]\n",
- "Epoch 53: 100%|████████████| 6/6 [00:02<00:00, 2.46it/s, loss=0.0197]\n",
- "Epoch 54: 100%|████████████| 6/6 [00:02<00:00, 2.41it/s, loss=0.0194]\n",
- "Epoch 55: 100%|████████████| 6/6 [00:02<00:00, 2.42it/s, loss=0.0202]\n",
- "Epoch 56: 100%|████████████| 6/6 [00:02<00:00, 2.38it/s, loss=0.0144]\n",
- "Epoch 57: 100%|████████████| 6/6 [00:02<00:00, 2.30it/s, loss=0.0186]\n",
- "Epoch 58: 100%|████████████| 6/6 [00:02<00:00, 2.29it/s, loss=0.0186]\n",
- "Epoch 59: 100%|████████████| 6/6 [00:02<00:00, 2.33it/s, loss=0.0154]\n",
- "Epoch 60: 100%|████████████| 6/6 [00:02<00:00, 2.32it/s, loss=0.0152]\n",
- "Epoch 61: 100%|████████████| 6/6 [00:02<00:00, 2.21it/s, loss=0.0178]\n",
- "Epoch 62: 100%|████████████| 6/6 [00:02<00:00, 2.17it/s, loss=0.0198]\n",
- "Epoch 63: 100%|████████████| 6/6 [00:02<00:00, 2.17it/s, loss=0.0176]\n",
- "Epoch 64: 100%|████████████| 6/6 [00:02<00:00, 2.44it/s, loss=0.0169]\n",
- "Epoch 65: 100%|████████████| 6/6 [00:03<00:00, 1.86it/s, loss=0.0167]\n",
- "Epoch 66: 100%|█████████████| 6/6 [00:02<00:00, 2.21it/s, loss=0.017]\n",
- "Epoch 67: 100%|████████████| 6/6 [00:02<00:00, 2.03it/s, loss=0.0191]\n",
- "Epoch 68: 100%|████████████| 6/6 [00:02<00:00, 2.11it/s, loss=0.0132]\n",
- "Epoch 69: 100%|█████████████| 6/6 [00:02<00:00, 2.32it/s, loss=0.017]\n",
- "Epoch 70: 100%|████████████| 6/6 [00:02<00:00, 2.24it/s, loss=0.0207]\n",
- "Epoch 71: 100%|████████████| 6/6 [00:02<00:00, 2.25it/s, loss=0.0195]\n",
- "Epoch 72: 100%|████████████| 6/6 [00:02<00:00, 2.11it/s, loss=0.0189]\n",
- "Epoch 73: 100%|████████████| 6/6 [00:02<00:00, 2.06it/s, loss=0.0144]\n",
- "Epoch 74: 100%|████████████| 6/6 [00:02<00:00, 2.10it/s, loss=0.0199]\n",
- "sampling...: 100%|████████████████████████████████████████████████████████| 1000/1000 [00:32<00:00, 30.69it/s]\n"
- ]
- },
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAW4AAADECAYAAAC/UsuzAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABWbklEQVR4nO19d5Qc1Zn97Zx7enKSNIooIpIEIkkggsAEkwwsNkgYMD7GYAw2XvDxDyGwl+BFsAhsCWPAgJc1wRiTFxvMCpNNFEgojpBGo4mdc8/7/aHzPb2uqe6u6jDTI949R0cz1VWvXvV03/rqfvf7noExxiAhISEhMWZgHO0JSEhISEjogyRuCQkJiTEGSdwSEhISYwySuCUkJCTGGCRxS0hISIwxSOKWkJCQGGOQxC0hISExxiCJW0JCQmKMQRK3hISExBjDPkHcDz30EAwGA7Zt28a3HXPMMTjmmGM0Hb9s2TJMnDixInMjqM3x64jly5fDYDCgr69vtKciUSQMBgOWL19etvEmTpyIZcuWlW28rwOKIu7Nmzfj8ssvx+TJk2G32+H1enHkkUfi7rvvRiwWK/ccy4Kuri4sX74cH3300WhPRUICn376Kc455xx0dHTAbrejvb0dJ5xwAu65557RnprEGIBZ7wHPP/88vvWtb8Fms+Giiy7CnDlzkEwmsXbtWvz0pz/FunXrsGbNmkrMVRdeeeWVrN+7urpw0003YeLEiTjwwAOzXrv//vsxNDRU0flceOGFOP/882Gz2Sp6Honqxz//+U8ce+yxmDBhAi677DK0tLTgq6++wttvv427774bV1555WhPcUSxYcMGGI37xMP/iEEXcW/duhXnn38+Ojo68Pe//x2tra38tSuuuAKbNm3C888/X/ZJFgOr1ap5X4vFUsGZ7IHJZILJZKr4eSSqH7/85S9RU1OD9957Dz6fL+u1np6e0ZnUKEIGM/qh6zZ3++23IxwO44EHHsgibcLUqVPxox/9iP+eTqdx8803Y8qUKbDZbJg4cSJuuOEGJBKJrOMmTpyIU089FWvXrsWhhx4Ku92OyZMn4w9/+MOwc6xbtw6LFy+Gw+HAuHHjcMstt6hGy6LG/frrr2P+/PkAgIsvvhgGgwEGgwEPPfQQAHWNOxKJ4Nprr8X48eNhs9kwffp0/PrXv4aymaLBYMAPf/hDPPPMM5gzZw5sNhtmz56Nl156KWs/NY1bz3V/8sknWLRoUdZ1P/jgg5p082XLlsHtdmP79u049dRT4Xa70d7ejnvvvRfAnsf2xYsXw+VyoaOjA3/84x+zjh8YGMBPfvIT7L///nC73fB6vTj55JPx8ccfDzvXPffcg9mzZ8PpdKK2thbz5s0bNp4SnZ2dmDp1KubMmYPdu3fn3XdfwObNmzF79uxhpA0ATU1NWb8/+OCDWLx4MZqammCz2TBr1iz85je/GXYcfZZef/11zJs3Dw6HA/vvvz9ef/11AMDTTz+N/fffH3a7HYcccgg+/PDDrOPpM7JlyxYsWbIELpcLbW1tWLFixbDPvBp27tyJ7373u2hububfgd///vea3g+lxk3flbVr1+Kqq65CY2MjfD4fLr/8ciSTSfj9flx00UWora1FbW0trrvuumFz/PWvf40jjjgC9fX1cDgcOOSQQ/Dkk08OO3csFsNVV12FhoYGeDwenH766di5c6eqjl/KNZYdTAfa29vZ5MmTNe+/dOlSBoCdc8457N5772UXXXQRA8DOOOOMrP06OjrY9OnTWXNzM7vhhhvYqlWr2MEHH8wMBgP77LPP+H67du1ijY2NrLa2li1fvpzdcccdbNq0aWzu3LkMANu6dSvfd9GiRWzRokWMMca6u7vZihUrGAD2ve99jz3yyCPskUceYZs3b+bz7Ojo4McODQ2xxYsXM4PBwC699FK2atUqdtpppzEA7Oqrr86aOwB2wAEHsNbWVnbzzTezu+66i02ePJk5nU7W19fH93vwwQeHzVHrde/YsYPV1dWx+vp6dtNNN7Ff//rXbMaMGeyAAw4YNmauv4PdbmezZs1i3//+99m9997LjjjiCAaAPfjgg6ytrY399Kc/Zffccw+bPXs2M5lMbMuWLfz49957j02ZMoX9+7//O1u9ejVbsWIFa29vZzU1NWznzp18vzVr1vC/9+rVq9ndd9/NLrnkEnbVVVfxfW688UYGgPX29jLGGNu0aRObMGECO/DAA/m2fR0nnngi83g87NNPPy247/z589myZcvYypUr2T333MNOPPFEBoCtWrUqaz/6LLW2trLly5ezlStXsvb2duZ2u9mjjz7KJkyYwG699VZ26623spqaGjZ16lSWyWT48fQZmTZtGrvwwgvZqlWr2KmnnsoAsF/84hdZ5wLAbrzxRv57d3c3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PQW73Y6XX345y2r44IMPZu1HHLV169asJ3nl96oar1GXHfC6666Dy+XCpZdeqmrb2rx5M+6++24AwDe+8Q0AwF133ZW1z5133gkAOOWUU3RP9hvf+AbefvttvPvuu3xbb28vHnvssYLHulwuAHvIRst5MpkMVq1albV95cqVMBgMOPnkk/VNvEQsWbIEb731VlbV58DAgKbrLgdMJtOw6OyJJ57Azp07s7b19/dn/W61WjFr1iwwxpBKpbJeMxgMWLNmDc455xwsXbp0mLa7L+O1115TjXYpL0TSH0WW4r6BQGAYAZUT4meeMYZVq1bBYrHguOOOU93fZDLh7LPPxlNPPaX6NN7b21uxueaCyWSCwWBAJpPh27Zt24Znnnkma78lS5YAAO67776s7crq1Wq8Rl0R95QpU/DHP/4R5513HmbOnJlVOfnPf/4TTzzxBPdjHnDAAVi6dCnWrFkDv9+PRYsW4d1338XDDz+MM844A8cee6zuyV533XV45JFHcNJJJ+FHP/oRXC4X1qxZg46ODnzyyScF5+7z+fDb3/4WHo8HLpcLhx122DB9C9ijvx577LH4+c9/jm3btuGAAw7AK6+8gr/85S+4+uqrsxKRI4HrrrsOjz76KE444QRceeWVcLlc+N3vfocJEyZgYGBA19NEMTj11FOxYsUKXHzxxTjiiCPw6aef4rHHHhumh5544oloaWnBkUceiebmZnzxxRdYtWoVTjnlFNWkttFoxKOPPoozzjgD5557Ll544QUsXry4otdSDbjyyisRjUZx5plnYsaMGfz78z//8z+YOHEi101PPPFEWK1WnHbaabj88ssRDodx//33o6mpiUfl5YTdbsdLL72EpUuX4rDDDsOLL76I559/HjfccMOw/IiIW2+9Fa+99hoOO+wwXHbZZZg1axYGBgbwr3/9C6+++ioGBgbKPtd8OOWUU3DnnXfipJNOwgUXXICenh7ce++9mDp1ahZPHHLIITj77LNx1113ob+/HwsWLMA//vEP/pQhfq+q7Rp1+bgJX375JbvsssvYxIkTmdVqZR6Phx155JHsnnvuYfF4nO+XSqXYTTfdxCZNmsQsFgsbP348u/7667P2YWyPHeiUU04Zdh6lpY8xxj755BO2aNEiZrfbWXt7O7v55pvZAw88UNAOyBhjf/nLX9isWbOY2WzOsgYq7YCM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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Epoch 75: 100%|████████████| 6/6 [00:02<00:00, 2.49it/s, loss=0.0199]\n",
- "Epoch 76: 100%|████████████| 6/6 [00:02<00:00, 2.49it/s, loss=0.0174]\n",
- "Epoch 77: 100%|████████████| 6/6 [00:02<00:00, 2.45it/s, loss=0.0218]\n",
- "Epoch 78: 100%|████████████| 6/6 [00:02<00:00, 2.49it/s, loss=0.0138]\n",
- "Epoch 79: 100%|████████████| 6/6 [00:02<00:00, 2.36it/s, loss=0.0186]\n",
- "Epoch 80: 100%|████████████| 6/6 [00:02<00:00, 2.33it/s, loss=0.0192]\n",
- "Epoch 81: 100%|████████████| 6/6 [00:02<00:00, 2.33it/s, loss=0.0174]\n",
- "Epoch 82: 100%|████████████| 6/6 [00:02<00:00, 2.24it/s, loss=0.0228]\n",
- "Epoch 83: 100%|████████████| 6/6 [00:02<00:00, 2.31it/s, loss=0.0183]\n",
- "Epoch 84: 100%|████████████| 6/6 [00:02<00:00, 2.21it/s, loss=0.0201]\n",
- "Epoch 85: 100%|████████████| 6/6 [00:02<00:00, 2.27it/s, loss=0.0141]\n",
- "Epoch 86: 100%|████████████| 6/6 [00:02<00:00, 2.18it/s, loss=0.0181]\n",
- "Epoch 87: 100%|████████████| 6/6 [00:02<00:00, 2.26it/s, loss=0.0211]\n",
- "Epoch 88: 100%|████████████| 6/6 [00:02<00:00, 2.24it/s, loss=0.0178]\n",
- "Epoch 89: 100%|████████████| 6/6 [00:02<00:00, 2.18it/s, loss=0.0167]\n",
- "Epoch 90: 100%|████████████| 6/6 [00:02<00:00, 2.30it/s, loss=0.0213]\n",
- "Epoch 91: 100%|████████████| 6/6 [00:02<00:00, 2.19it/s, loss=0.0114]\n",
- "Epoch 92: 100%|████████████| 6/6 [00:02<00:00, 2.14it/s, loss=0.0137]\n",
- "Epoch 93: 100%|████████████| 6/6 [00:02<00:00, 2.15it/s, loss=0.0128]\n",
- "Epoch 94: 100%|████████████| 6/6 [00:03<00:00, 1.86it/s, loss=0.0183]\n",
- "Epoch 95: 100%|████████████| 6/6 [00:02<00:00, 2.16it/s, loss=0.0125]\n",
- "Epoch 96: 100%|████████████| 6/6 [00:02<00:00, 2.26it/s, loss=0.0176]\n",
- "Epoch 97: 100%|████████████| 6/6 [00:02<00:00, 2.25it/s, loss=0.0193]\n",
- "Epoch 98: 100%|████████████| 6/6 [00:02<00:00, 2.10it/s, loss=0.0198]\n",
- "Epoch 99: 100%|████████████| 6/6 [00:03<00:00, 1.90it/s, loss=0.0183]\n",
- "sampling...: 100%|████████████████████████████████████████████████████████| 1000/1000 [00:32<00:00, 31.08it/s]\n"
- ]
- },
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAW4AAADECAYAAAC/UsuzAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABdRElEQVR4nO29e5hdVX0+/p77da7JJJlMkhlIQkjCTREQECOo3I1YKVgpgoq1jxRKq9Kv+lhu0lq1gAW0RChatbYKLUUUsDwFW5AIykVAGkgIgdwztzNn5sy5r98f+b0rn71mn3P2OXPmFtb7PPPMzD5777X2Pue867Pfz/tZy6eUUrCwsLCwmDPwz3QHLCwsLCzqgyVuCwsLizkGS9wWFhYWcwyWuC0sLCzmGCxxW1hYWMwxWOK2sLCwmGOwxG1hYWExx2CJ28LCwmKOwRK3hYWFxRzDQUHc3/3ud+Hz+fD666/rbe95z3vwnve8x9Pxl156Kfr6+qakb4RbH9+KuPbaa+Hz+dDf3z/TXbFoED6fD9dee23TztfX14dLL720aed7K6Ah4t6yZQs+/elP49BDD0U0GkVraytOPvlkfPOb38T4+Hiz+9gU7Ny5E9deey2ee+65me6KhQVeeOEFnH/++ejt7UU0GkVPTw/e//7349Zbb53prlnMAQTrPeBnP/sZ/vAP/xCRSAQf+9jHcMQRRyCfz+Pxxx/H5z//ebz00kvYsGHDVPS1LvziF79w/L9z505cd9116OvrwzHHHON47Tvf+Q7K5fKU9ufiiy/GRz7yEUQikSltx2L241e/+hVOPfVULFu2DJ/61KewaNEivPnmm9i4cSO++c1v4oorrpjpLk4rNm3aBL//oHj4nzbURdxbt27FRz7yEfT29uK///u/0d3drV+7/PLLsXnzZvzsZz9reicbQTgc9rxvKBSawp7sRyAQQCAQmPJ2LGY/brzxRrS1teHpp59Ge3u747W9e/fOTKdmEDaYqR91DXNf+9rXMDo6irvuustB2sSKFSvw53/+5/r/YrGIG264AcuXL0ckEkFfXx+++MUvIpfLOY7r6+vDueeei8cffxzHH388otEoDj30UPzzP//zhDZeeuklnHbaaYjFYliyZAm+8pWvuEbLUuN+7LHHcNxxxwEAPv7xj8Pn88Hn8+G73/0uAHeNe2xsDJ/97GexdOlSRCIRrFq1Ct/4xjdgTqbo8/nwZ3/2Z7jvvvtwxBFHIBKJYO3atXjooYcc+7lp3PVc9+9+9zusW7fOcd133323J9380ksvRTKZxBtvvIFzzz0XyWQSPT09uP322wHsf2w/7bTTkEgk0Nvbi3/5l39xHD84OIjPfe5zOPLII5FMJtHa2oqzzjoLzz///IS2br31VqxduxbxeBwdHR14xzveMeF8JrZt24YVK1bgiCOOwJ49e6ruezBgy5YtWLt27QTSBoAFCxY4/r/77rtx2mmnYcGCBYhEIlizZg2+/e1vTziOn6XHHnsM73jHOxCLxXDkkUfiscceAwD8+7//O4488khEo1Ece+yxePbZZx3H8zPy2muv4YwzzkAikcDixYtx/fXXT/jMu2HHjh34xCc+gYULF+rvwD/90z95uh+mxs3vyuOPP44rr7wSXV1daG9vx6c//Wnk83kMDw/jYx/7GDo6OtDR0YGrr756Qh+/8Y1v4KSTTsK8efMQi8Vw7LHH4p577pnQ9vj4OK688krMnz8fLS0tWL9+PXbs2OGq40/mGpsOVQd6enrUoYce6nn/Sy65RAFQ559/vrr99tvVxz72MQVAnXfeeY79ent71apVq9TChQvVF7/4RXXbbbept7/97crn86kXX3xR77dr1y7V1dWlOjo61LXXXqu+/vWvq5UrV6qjjjpKAVBbt27V+65bt06tW7dOKaXU7t271fXXX68AqD/5kz9R3//+99X3v/99tWXLFt3P3t5efWy5XFannXaa8vl86rLLLlO33Xab+sAHPqAAqKuuusrRdwDq6KOPVt3d3eqGG25Qt9xyizr00ENVPB5X/f39er+77757Qh+9Xvf27dtVZ2enmjdvnrruuuvUN77xDXX44Yero48+esI5K70P0WhUrVmzRv3pn/6puv3229VJJ52kAKi7775bLV68WH3+859Xt956q1q7dq0KBALqtdde08c//fTTavny5er//b//p+644w51/fXXq56eHtXW1qZ27Nih99uwYYN+v++44w71zW9+U33yk59UV155pd7nmmuuUQDUvn37lFJKbd68WS1btkwdc8wxetvBjtNPP121tLSoF154oea+xx13nLr00kvVzTffrG699VZ1+umnKwDqtttuc+zHz1J3d7e69tpr1c0336x6enpUMplUP/jBD9SyZcvUV7/6VfXVr35VtbW1qRUrVqhSqaSP52dk5cqV6uKLL1a33XabOvfccxUA9eUvf9nRFgB1zTXX6P93796tlixZopYuXaquv/569e1vf1utX79eAVA333xzzWvs7e1Vl1xyif6f35VjjjlGnXnmmer2229XF198sQKgrr76avWud71LffSjH1Xf+ta3dB+/973vOc65ZMkS9ZnPfEbddttt6qabblLHH3+8AqAeeOABx34XXHCBAqAuvvhidfvtt6sLLrhAf6+aeY3NhmfiTqVSCoD64Ac/6Gn/5557TgFQl112mWP75z73OQVA/fd//7fe1tvbqwCo//mf/9Hb9u7dqyKRiPrsZz+rt1111VUKgPr1r3/t2K+tra0qcSu1n3xIVCZM4r7vvvsUAPWVr3zFsd/555+vfD6f2rx5s94GQIXDYce2559/XgFQt956q95Wibi9XPcVV1yhfD6fevbZZ/W2gYEB1dnZ6Zm4Aai/+Zu/0duGhoZULBZTPp9P/eu//qve/n//938TPrTZbNbxJVdKqa1bt6pIJKKuv/56ve2DH/ygWrt2bdW+SOJ++eWX1eLFi9Vxxx2nBgcHqx53MOEXv/iFCgQCKhAIqBNPPFFdffXV6uGHH1b5fH7CvplMZsK2M844Y0IAxc/Sr371K73t4YcfVgBULBZT27Zt09vvuOMOBUA9+uijehs/I1dccYXeVi6X1TnnnKPC4bBjUDU/H5/85CdVd3e3I1BRSqmPfOQjqq2tzfUazL67EfcZZ5yhyuWy3n7iiScqn8+n/vRP/1RvKxaLasmSJY7vulIT71s+n1dHHHGEOu200/S23/72t67B2KWXXtr0a2w2PEslIyMjAICWlhZP+//85z8HAPzlX/6lY/tnP/tZAJigha9ZswannHKK/r+rqwurVq3Ca6+95jjnO9/5Thx//PGO/S666CKvl+G574FAAFdeeeWEviul8OCDDzq2v+9978Py5cv1/0cddRRaW1sdfa8EL9f90EMP4cQTT3QkVTs7O+u+7ssuu0z/3d7ejlWrViGRSOCCCy7Q21etWoX29nZH+5FIRCePSqUSBgYGkEwmsWrVKjzzzDOOc27fvh1PP/10zb68+OKLWLduHfr6+vDII4+go6OjrmuZy3j/+9+PJ598EuvXr8fzzz+Pr33tazjjjDPQ09OD+++/37FvLBbTf6dSKfT392Pd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KhwOq5aWFnXyySerW2+9VWWzWb1foVBQ1113nTrkkENUKBRSS5cuVV/4whcc+yi13w50zjnnTGjHtPQppdTvfvc7tW7dOhWNRlVPT4+64YYb1F133VXTDqiUUv/5n/+p1qxZo4LBoMMaaNoBlVIqnU6rv/iLv1CLFy9WoVBIrVy5Un3961932JOU2m+Nuvzyyyf0vZLFybQDer3uZ599Vp1yyikqEomoJUuWqL/9279V//AP/6AAqN27d084h8Qll1yiEomEaztu9j2zX9lsVn32s59V3d3dKhaLqZNPPlk9+eSTE/p5xx13qHe/+91q3rx5KhKJqOXLl6vPf/7zKpVK6X1MH7dS+61b69atU8lkUm3cuLHqtRwMePDBB9UnPvEJdfjhh6tkMqnC4bBasWKFuuKKK9SePXsc+95///3qqKOOUtFoVPX19am/+7u/U//0T//k+bPk9vncunWrAqC+/vWv6238jGzZskWdfvrpKh6Pq4ULF6prrrlmghUUhlVOKaX27NmjLr/8crV06VIVCoXUokWL1Hvf+161YcOGmvej0nfl6aefduzn9tmRfZe466671MqVK1UkElGHH364uvvuu/XxEmNjY+ryyy9XnZ2dKplMqvPOO09t2rRJAVBf/epXm3aNzYZPqTmQ/bNwxVVXXYU77rgDo6OjtpzeYlK49NJLcc8992B0dHSmuzLjeO655/C2t70NP/jBD5puNW4W7MwucwTmrIsDAwP4/ve/j3e9612WtC0sGoTbbKa33HIL/H4/3v3ud89Aj7yh7tkBLWYGJ554It7znvdg9erV2LNnD+666y6MjIzgy1/+8kx3zcJizuJrX/safvvb3+LUU09FMBjEgw8+iAcffBB/8id/MsEvPptgiXuO4Oyzz8Y999yDDRs2wOfz4e1vfzvuuuuuWR0VWFjMdpx00kn4r//6L9xwww0YHR3FsmXLcO211+JLX/rSTHetKqzGbWFhYTHHYDVuCwsLizkGS9wWFhYWcwyWuC0sLCzmGDwnJ6e6Os/CgpitaRcucVculyf0cab67PP5prRtfu8n04bbOZrRb5OTeL5KXFVve16vfSreg1rns64SCwuPqLagNL+8XgMck8Qqve6FPNyIQ56zFmHWS4CVzl0JldqTfal2D6q172W7eS7zntZ6z7y8P9XIu9p7YW7zCkvcFhYeQeKe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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Epoch 100: 100%|███████████| 6/6 [00:02<00:00, 2.50it/s, loss=0.0171]\n",
- "Epoch 101: 100%|███████████| 6/6 [00:02<00:00, 2.40it/s, loss=0.0172]\n",
- "Epoch 102: 100%|███████████| 6/6 [00:02<00:00, 2.44it/s, loss=0.0167]\n",
- "Epoch 103: 100%|███████████| 6/6 [00:02<00:00, 2.46it/s, loss=0.0167]\n",
- "Epoch 104: 100%|███████████| 6/6 [00:02<00:00, 2.46it/s, loss=0.0146]\n",
- "Epoch 105: 100%|███████████| 6/6 [00:02<00:00, 2.49it/s, loss=0.0157]\n",
- "Epoch 106: 100%|███████████| 6/6 [00:02<00:00, 2.28it/s, loss=0.0152]\n",
- "Epoch 107: 100%|███████████| 6/6 [00:02<00:00, 2.26it/s, loss=0.0166]\n",
- "Epoch 108: 100%|███████████| 6/6 [00:02<00:00, 2.26it/s, loss=0.0155]\n",
- "Epoch 109: 100%|███████████| 6/6 [00:02<00:00, 2.26it/s, loss=0.0154]\n",
- "Epoch 110: 100%|███████████| 6/6 [00:02<00:00, 2.26it/s, loss=0.0185]\n",
- "Epoch 111: 100%|███████████| 6/6 [00:02<00:00, 2.21it/s, loss=0.0159]\n",
- "Epoch 112: 100%|███████████| 6/6 [00:02<00:00, 2.25it/s, loss=0.0143]\n",
- "Epoch 113: 100%|████████████| 6/6 [00:02<00:00, 2.30it/s, loss=0.015]\n",
- "Epoch 114: 100%|███████████| 6/6 [00:02<00:00, 2.19it/s, loss=0.0215]\n",
- "Epoch 115: 100%|███████████| 6/6 [00:02<00:00, 2.02it/s, loss=0.0169]\n",
- "Epoch 116: 100%|███████████| 6/6 [00:02<00:00, 2.05it/s, loss=0.0141]\n",
- "Epoch 117: 100%|███████████| 6/6 [00:02<00:00, 2.16it/s, loss=0.0189]\n",
- "Epoch 118: 100%|███████████| 6/6 [00:02<00:00, 2.18it/s, loss=0.0162]\n",
- "Epoch 119: 100%|███████████| 6/6 [00:02<00:00, 2.09it/s, loss=0.0159]\n",
- "Epoch 120: 100%|████████████| 6/6 [00:02<00:00, 2.10it/s, loss=0.015]\n",
- "Epoch 121: 100%|███████████| 6/6 [00:02<00:00, 2.08it/s, loss=0.0177]\n",
- "Epoch 122: 100%|███████████| 6/6 [00:02<00:00, 2.27it/s, loss=0.0164]\n",
- "Epoch 123: 100%|████████████| 6/6 [00:02<00:00, 2.02it/s, loss=0.017]\n",
- "Epoch 124: 100%|███████████| 6/6 [00:02<00:00, 2.10it/s, loss=0.0195]\n",
- "sampling...: 100%|████████████████████████████████████████████████████████| 1000/1000 [00:32<00:00, 30.41it/s]\n"
- ]
- },
- {
- "data": {
- "image/png": "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ky/8XI3EazyudMC7774bNpsNN998c59pW01NTXj00UcBABdeeCEA4JFHHtHs8/DDDwMALrroouNe7IUXXojNmzfjvffe49u6urrwu9/97nOfa7PZABwWm/6cJ5fLYc2aNZrtq1evhqIo+PKXv3x8C/+CLF68GO+++66m6jMQCPTrugcCvV7fyzr74x//iNbWVs02v9+v+d1kMmHq1KlgjCGTyWgeUxQFa9euxRVXXIGlS5f28u2OZt54440+rV2KC5HrjyxLcd9QKNRLgAYS8T3PGMOaNWtgNBrxpS99qc/99Xo9vva1r+G5557r89t4V1fXoK31aOj1eiiKglwux7c1NzfjhRde0Oy3ePFiAMATTzyh2V5YvToSr/G4LO4JEybg97//Pa6++mpMmTJFUzn5zjvv4I9//CPPxzzllFOwdOlSrF27FsFgEPPnz8d7772Hp59+GpdddhkWLFhw3Iu9++678cwzz2DJkiX4zne+A5vNhrVr16Kurg7bt2//3LW73W7813/9FxwOB2w2G+bMmdPLvwUc9r8uWLAAP/zhD9Hc3IxTTjkFGzduxIsvvog77rhDE4gcCu6++26sX78eixYtwvLly2Gz2fCrX/0KtbW1CAQCx/Vt4kS4+OKLsXLlStxwww0466yz8NFHH+F3v/tdL3/oBRdcgIqKCpx99tkoLy/Hxx9/jDVr1uCiiy7qM6it0+mwfv16XHbZZbjqqqvw8ssvY+HChYN6LSOB5cuXIx6P4/LLL8fkyZP55+d//ud/UF9fz/2mF1xwAUwmEy655BLceuutiEaj+OUvf4mysjJulQ8kqqrilVdewdKlSzFnzhxs2LABL730Eu69995e8RGRBx98EG+88QbmzJmDW265BVOnTkUgEMAHH3yA119/HYFAYMDXeiwuuugiPPzww1iyZAmuvfZadHZ24vHHH8fEiRM1OjFz5kx87WtfwyOPPAK/348zzzwTf//73/m3DPFzNdKu8bjyuIlPP/2U3XLLLay+vp6ZTCbmcDjY2WefzR577DGWTCb5fplMhj3wwAOsoaGBGY1GVlNTw+655x7NPowdTge66KKLep2nMKWPMca2b9/O5s+fz1RVZdXV1WzVqlXsqaee+tx0QMYYe/HFF9nUqVOZwWDQpAYWpgMyxlgkEmHf/e53WVVVFTMajWzSpEnsoYce0qQnMXY4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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Epoch 125: 100%|███████████| 6/6 [00:02<00:00, 2.48it/s, loss=0.0163]\n",
- "Epoch 126: 100%|█████████████| 6/6 [00:02<00:00, 2.45it/s, loss=0.02]\n",
- "Epoch 127: 100%|███████████| 6/6 [00:02<00:00, 2.36it/s, loss=0.0159]\n",
- "Epoch 128: 100%|███████████| 6/6 [00:02<00:00, 2.41it/s, loss=0.0201]\n",
- "Epoch 129: 100%|███████████| 6/6 [00:02<00:00, 2.40it/s, loss=0.0148]\n",
- "Epoch 130: 100%|███████████| 6/6 [00:02<00:00, 2.36it/s, loss=0.0153]\n",
- "Epoch 131: 100%|███████████| 6/6 [00:02<00:00, 2.37it/s, loss=0.0175]\n",
- "Epoch 132: 100%|███████████| 6/6 [00:02<00:00, 2.38it/s, loss=0.0178]\n",
- "Epoch 133: 100%|████████████| 6/6 [00:02<00:00, 2.23it/s, loss=0.018]\n",
- "Epoch 134: 100%|███████████| 6/6 [00:02<00:00, 2.29it/s, loss=0.0179]\n",
- "Epoch 135: 100%|███████████| 6/6 [00:02<00:00, 2.22it/s, loss=0.0153]\n",
- "Epoch 136: 100%|███████████| 6/6 [00:02<00:00, 2.24it/s, loss=0.0173]\n",
- "Epoch 137: 100%|███████████| 6/6 [00:02<00:00, 2.11it/s, loss=0.0164]\n",
- "Epoch 138: 100%|███████████| 6/6 [00:02<00:00, 2.16it/s, loss=0.0165]\n",
- "Epoch 139: 100%|███████████| 6/6 [00:03<00:00, 1.97it/s, loss=0.0146]\n",
- "Epoch 140: 100%|███████████| 6/6 [00:02<00:00, 2.02it/s, loss=0.0188]\n",
- "Epoch 141: 100%|███████████| 6/6 [00:02<00:00, 2.08it/s, loss=0.0194]\n",
- "Epoch 142: 100%|███████████| 6/6 [00:02<00:00, 2.26it/s, loss=0.0143]\n",
- "Epoch 143: 100%|███████████| 6/6 [00:03<00:00, 2.00it/s, loss=0.0154]\n",
- "Epoch 144: 100%|████████████| 6/6 [00:02<00:00, 2.12it/s, loss=0.012]\n",
- "Epoch 145: 100%|███████████| 6/6 [00:02<00:00, 2.00it/s, loss=0.0198]\n",
- "Epoch 146: 100%|███████████| 6/6 [00:02<00:00, 2.16it/s, loss=0.0224]\n",
- "Epoch 147: 100%|███████████| 6/6 [00:02<00:00, 2.18it/s, loss=0.0152]\n",
- "Epoch 148: 100%|████████████| 6/6 [00:02<00:00, 2.11it/s, loss=0.018]\n",
- "Epoch 149: 100%|████████████| 6/6 [00:02<00:00, 2.09it/s, loss=0.018]\n",
- "sampling...: 100%|████████████████████████████████████████████████████████| 1000/1000 [00:32<00:00, 30.67it/s]\n"
- ]
- },
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAW4AAADECAYAAAC/UsuzAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABTEUlEQVR4nO19eZRdVZn9vm+e69U8pVIZCYQEkAAhICCDoEzSDaLLbgiT4gIZfoIo9FICqI1CMzQBJQrBBly6ABuQUWlBmplmECKDkHmquerVG+tN5/dH1j713VsVqISkql5y9lq1UnXfffeee/PePt/d3/6+YymlFAwMDAwMKgauiR6AgYGBgcG2wRC3gYGBQYXBELeBgYFBhcEQt4GBgUGFwRC3gYGBQYXBELeBgYFBhcEQt4GBgUGFwRC3gYGBQYXBELeBgYFBhWGXIO577rkHlmVhzZo1etsXvvAFfOELXxjT+8866yxMmzZtp4yNGG2MuyOWLFkCy7LQ09Mz0UMx2E5YloUlS5bssONNmzYNZ5111g473u6A7SLulStX4vzzz8eMGTMQCAQQi8Vw6KGH4tZbb0U2m93RY9wh2LRpE5YsWYK33357oodiYIB3330Xp512Gtrb2xEIBNDa2oovfvGLuO222yZ6aAYVAM+2vuHxxx/HV7/6Vfj9fpx55pmYN28e8vk8XnjhBXzve9/D3//+dyxbtmxnjHWb8Kc//cn296ZNm3DNNddg2rRp2G+//Wyv/epXv0K5XN6p4znjjDPw9a9/HX6/f6eex2Dy46WXXsKRRx6JqVOn4pvf/Caampqwfv16vPLKK7j11ltx0UUXTfQQxxUffvghXK5d4uF/3LBNxL169Wp8/etfR3t7O/7yl7+gublZv3bhhRfi448/xuOPP77DB7k98Pl8Y97X6/XuxJFsgdvthtvt3unnMZj8+MlPfoKqqiq8/vrriMfjtte6uromZlATCBPMbDu2aZr7+c9/jlQqhbvuustG2sSsWbNwySWX6L+LxSKuu+46zJw5E36/H9OmTcNVV12FoaEh2/umTZuGE088ES+88AIOOuggBAIBzJgxA//1X/814hx///vfcdRRRyEYDGLKlCn48Y9/PGq0LDXu5557DgceeCAA4Oyzz4ZlWbAsC/fccw+A0TXudDqNyy67DG1tbfD7/ZgzZw5uvPFGOJspWpaF73znO3j44Ycxb948+P1+7L333njqqads+42mcW/Ldb/zzjs44ogjbNe9fPnyMenmZ511FiKRCNatW4cTTzwRkUgEra2tuP322wFseWw/6qijEA6H0d7ejt/+9re29/f19eHyyy/H/PnzEYlEEIvF8OUvfxl/+9vfRpzrtttuw957741QKITq6moccMABI47nxNq1azFr1izMmzcPnZ2dn7jvroCVK1di7733HkHaANDQ0GD7e/ny5TjqqKPQ0NAAv9+PuXPn4he/+MWI9/Gz9Nxzz+GAAw5AMBjE/Pnz8dxzzwEA/vCHP2D+/PkIBAJYsGAB3nrrLdv7+RlZtWoVjjvuOITDYbS0tODaa68d8ZkfDRs3bsQ555yDxsZG/R24++67x3Q/nBo3vysvvPACLr74YtTX1yMej+P8889HPp/HwMAAzjzzTFRXV6O6uhpXXHHFiDHeeOONOOSQQ1BbW4tgMIgFCxbgwQcfHHHubDaLiy++GHV1dYhGozj55JOxcePGUXX8z3KNOxxqG9Da2qpmzJgx5v0XL16sAKjTTjtN3X777erMM89UANQpp5xi26+9vV3NmTNHNTY2qquuukotXbpU7b///sqyLLVixQq93+bNm1V9fb2qrq5WS5YsUTfccIOaPXu22meffRQAtXr1ar3vEUccoY444gillFIdHR3q2muvVQDUt771LXXvvfeqe++9V61cuVKPs729Xb+3XC6ro446SlmWpc477zy1dOlSddJJJykA6tJLL7WNHYDad999VXNzs7ruuuvULbfcombMmKFCoZDq6enR+y1fvnzEGMd63Rs2bFA1NTWqtrZWXXPNNerGG29Ue+65p9p3331HHHNr/w+BQEDNnTtXffvb31a33367OuSQQxQAtXz5ctXS0qK+973vqdtuu03tvffeyu12q1WrVun3v/7662rmzJnqBz/4gbrzzjvVtddeq1pbW1VVVZXauHGj3m/ZsmX6//vOO+9Ut956qzr33HPVxRdfrPe5+uqrFQDV3d2tlFLq448/VlOnTlX77bef3rar49hjj1XRaFS9++67n7rvgQceqM466yx18803q9tuu00de+yxCoBaunSpbT9+lpqbm9WSJUvUzTffrFpbW1UkElH33Xefmjp1qrr++uvV9ddfr6qqqtSsWbNUqVTS7+dnZPbs2eqMM85QS5cuVSeeeKICoH74wx/azgVAXX311frvjo4ONWXKFNXW1qauvfZa9Ytf/EKdfPLJCoC6+eabP/Ua29vb1eLFi/Xf/K7st99+6ktf+pK6/fbb1RlnnKEAqCuuuEJ9/vOfV9/4xjfUHXfcocf4m9/8xnbMKVOmqAsuuEAtXbpU3XTTTeqggw5SANRjjz1m2+/0009XANQZZ5yhbr/9dnX66afr79WOvMYdjTETdyKRUADUV77ylTHt//bbbysA6rzzzrNtv/zyyxUA9Ze//EVva29vVwDU888/r7d1dXUpv9+vLrvsMr3t0ksvVQDUq6++atuvqqrqE4lbqS3kQ6JywkncDz/8sAKgfvzjH9v2O+2005RlWerjjz/W2wAon89n2/a3v/1NAVC33Xab3rY14h7LdV900UXKsiz11ltv6W29vb2qpqZmzMQNQP30pz/V2/r7+1UwGFSWZanf/e53evsHH3ww4kOby+VsX3KllFq9erXy+/3q2muv1du+8pWvqL333vsTxyKJ+/3331ctLS3qwAMPVH19fZ/4vl0Jf/rTn5Tb7VZut1stWrRIXXHFFerpp59W+Xx+xL6ZTGbEtuOOO25EAMXP0ksvvaS3Pf300wqACgaDau3atXr7nXfeqQCoZ599Vm/jZ+Siiy7S28rlsjrhhBOUz+ezTarOz8e5556rmpubbYGKUkp9/etfV1VVVaNeg3PsoxH3cccdp8rlst6+aNEiZVmW+va3v623FYtFNWXKFNt3XamR9y2fz6t58+apo446Sm974403Rg3GzjrrrB1+jTsaY5ZKBgcHAQDRaHRM+z/xxBMAgO9+97u27ZdddhkAjNDC586di8MOO0z/XV9fjzlz5mDVqlW2Yx588ME46KCDbPv9y7/8y1gvY8xjd7vduPjii0eMXSmFJ5980rb9mGOOwcyZM/Xf++yzD2KxmG3sW8NYrvupp57CokWLbEnVmpqabb7u8847T/8ej8cxZ84chMNhnH766Xr7nDlzEI/Hbef3+/06eVQqldDb24tIJII5c+bgzTfftB1zw4YNeP311z91LCtWrMARRxyBadOm4ZlnnkF1dfU2XUsl44tf/CJefvllnHzyyfjb3/6Gn//85zjuuOPQ2tqKRx991LZvMBjUvycSCfT09OCII47AqlWrkEgkbPvOnTsXixYt0n8vXLgQAHDUUUdh6tSpI7aP9vn8zne+o3+nDJjP5/HMM8+Mei1KKTz00EM46aSToJRCT0+P/jnuuOOQSCRsn5FtwbnnngvLsmzjVkrh3HPP1dvcbjcOOOCAEdci71t/fz8SiQQOO+ww21goZ15wwQW29zqTwzvzGrcXYybuWCwGAEgmk2Paf+3atXC5XJg1a5Zte1NTE+LxONauXWvbLj9YRHV1Nfr7+23HnD179oj95syZM6YxjRVr165FS0vLiElqr7320q9LjGXsW8NYr9t5HwGMum1rCAQCqK+vt22rqqrClClTbF8ObpfnL5fLuPnmmzF79mz4/X7U1dWhvr4e77zzjo08vv/97yMSieCggw7C7NmzceGFF+LFF18cdTwnnXQSotEonn76af3Z2p1w4IEH4g9/+AP6+/vx2muv4corr0QymcRpp52G9957T+/34osv4phjjkE4HEY8Hkd9fT2uuuoqABhB3M7PUlVVFQCgra1t1O3Oz6fL5cKMGTNs2/bYYw8A2Goepbu7GwMDA1i2bBnq6+ttP2effTaA7U+4bsv1OK/lsccew8EHH4xAIICamhrU19fjF7/4he2ekaOmT59ue6/ze7Uzr3F7MWZXSSwWQ0tLC1asWLFNJ3CSwtawNceFqoCV1T7L2Mfrurd2nrGc/6c//Sl++MMf4pxzzsF1112HmpoauFwuXHrppbbE8F577YUPP/wQjz32GJ566ik89NBDuOOOO/CjH/0I11xzje34p556Kn7zm9/g/vvvx/nnn78DrrAy4fP5cOCBB+LAAw/EHnvsgbPPPhsPPPAArr76aqxcuRJHH3009txzT9x0001oa2uDz+fDE088gZtvvnlEUv6z/B9vLziGf/3Xf8XixYtH3WefffbZrmNvy/XIa/nf//1fnHzyyTj88MNxxx13oLm5GV6vF8uXL//URPlo2JnXuL3YJjvgiSeeiGXLluHll1+2PZKNhvb2dpTLZXz00Uc6UgWAzs5ODAwMoL29fZsH297ejo8++mjE9g8//PBT3zvWCYTneeaZZ5BMJm1R9wcffKBfH0+0t7fj448/HrF9tG07Aw8++CCOPPJI3HXXXbbtAwMDqKurs20Lh8P42te+hq997WvI5/P453/+Z/zkJz/BlVdeiUAgoPe74YYb4PF4cMEFFyAajeIb3/jGuFzLZMYBBxwAANi8eTMA4I9//COGhobw6KOP2qLPZ599dqecv1wuY9WqVTrKBoB//OMfALDVyuL6+npEo1GUSiUcc8wxO2Vc24qHHnoIgUAATz/9tM1quHz5ctt+5KjVq1fbnuSd36vJeI3bZAe84oorEA6Hcd55541q21q5ciVuvfVWAMDxxx8PALjlllts+9x0000AgBNOOGGbB3v88cfjlVdewWuvvaa3dXd34/777//U94bDYQBbyGYs5ymVSli6dKlt+8033wzLsvDlL3952wb+GXHcccfh5ZdftlV99vX1jem6dwTcbveI6OyBBx7Axo0bbdt6e3ttf/t8PsydOxdKKRQKBdtrlmVh2bJlOO2007B48eIR2u6ujGeffXbUaJd5IUp/jCzlvolEYgQB7UjIz7xSCkuXLoXX68XRRx896v5utxunnnoqHnrooVGfxru7u3faWLcGt9sNy7JQKpX0tjVr1uDhhx+27XfccccBAO644w7bdmf16mS8xm2KuGfOnInf/va3+NrXvoa99trLVjn50ksv4YEHHtB+zH333ReLFy/GsmXLMDAwgCOOOAKvvfYafvOb3+CUU07BkUceuc2DveKKK3DvvffiS1/6Ei655BKEw2EsW7YM7e3teOeddz517PF4HL/85S8RjUYRDoexcOHCEfoWsEV/PfLII/Fv//ZvWLNmDfbdd1/86U9/wiOPPIJLL73UlogcD1xxxRW477778MUvfhEXXXQRwuEwfv3rX2Pq1Kno6+vbpqeJ7cGJJ56Ia6+9FmeffTYOOeQQvPvuu7j//vtH6KHHHnssmpqacOihh6KxsRHvv/8+li5dihNOOGHUpLbL5cJ9992HU045BaeffjqeeOIJHHXUUTv1WiYDLrroImQyGfzTP/0T9txzT/39+f3vf49p06Zp3fTYY4+Fz+fDSSedhPPPPx+pVAq/+tWv0NDQoKPyHYlAIICnnnoKixcvxsKFC/Hkk0/i8ccfx1VXXTUiPyJx/fXX49lnn8XChQvxzW9+E3PnzkVfXx/efPNNPPPMM+jr69vhY/0knHDCCbjpppvwpS99Cd/4xjfQ1dWF22+/HbNmzbLxxIIFC3DqqafilltuQW9vLw4++GD89a9/1U8Z8ns12a5xm3zcxD/+8Q/1zW9+U02bNk35fD4VjUbVoYceqm677TaVy+X0foVCQV1zzTVq+vTpyuv1qra2NnXllVfa9lFqix3o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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "train completed, total time: 599.0462603569031.\n"
- ]
- }
- ],
- "source": [
- "n_epochs = 150\n",
- "val_interval = 25\n",
- "epoch_loss_list = []\n",
- "val_epoch_loss_list = []\n",
- "\n",
- "scaler = GradScaler()\n",
- "total_start = time.time()\n",
- "for epoch in range(n_epochs):\n",
- " model.train()\n",
- " epoch_loss = 0\n",
- " progress_bar = tqdm(enumerate(train_loader), total=len(train_loader), ncols=70)\n",
- " progress_bar.set_description(f\"Epoch {epoch}\")\n",
- " for step, batch in progress_bar:\n",
- " images = batch[\"image\"].to(device)\n",
- " masks = batch[\"mask\"].to(device)\n",
- "\n",
- " optimizer.zero_grad(set_to_none=True)\n",
- "\n",
- " with autocast(enabled=True):\n",
- "\n",
- " # Generate random noise\n",
- " noise = torch.randn_like(images).to(device)\n",
- "\n",
- " # Create timesteps\n",
- " timesteps = torch.randint(\n",
- " 0, inferer.scheduler.num_train_timesteps, (images.shape[0],), device=images.device\n",
- " ).long()\n",
- "\n",
- " images_noised = scheduler.add_noise(images, noise=noise, timesteps=timesteps)\n",
- "\n",
- " # Get controlnet output\n",
- " down_block_res_samples, mid_block_res_sample = controlnet(\n",
- " x=images_noised, timesteps=timesteps, controlnet_cond=masks\n",
- " )\n",
- " # Get model prediction\n",
- " noise_pred = model(\n",
- " x=images_noised,\n",
- " timesteps=timesteps,\n",
- " down_block_additional_residuals=down_block_res_samples,\n",
- " mid_block_additional_residual=mid_block_res_sample,\n",
- " )\n",
- "\n",
- " loss = F.mse_loss(noise_pred.float(), noise.float())\n",
- "\n",
- " scaler.scale(loss).backward()\n",
- " scaler.step(optimizer)\n",
- " scaler.update()\n",
- "\n",
- " epoch_loss += loss.item()\n",
- "\n",
- " progress_bar.set_postfix({\"loss\": epoch_loss / (step + 1)})\n",
- " epoch_loss_list.append(epoch_loss / (step + 1))\n",
- "\n",
- " if (epoch + 1) % val_interval == 0:\n",
- " model.eval()\n",
- " val_epoch_loss = 0\n",
- " for step, batch in enumerate(val_loader):\n",
- " images = batch[\"image\"].to(device)\n",
- " masks = batch[\"mask\"].to(device)\n",
- "\n",
- " with torch.no_grad():\n",
- " with autocast(enabled=True):\n",
- " noise = torch.randn_like(images).to(device)\n",
- " timesteps = torch.randint(\n",
- " 0, inferer.scheduler.num_train_timesteps, (images.shape[0],), device=images.device\n",
- " ).long()\n",
- " noise_pred = inferer(inputs=images, diffusion_model=model, noise=noise, timesteps=timesteps)\n",
- " val_loss = F.mse_loss(noise_pred.float(), noise.float())\n",
- "\n",
- " val_epoch_loss += val_loss.item()\n",
- " progress_bar.set_postfix({\"val_loss\": val_epoch_loss / (step + 1)})\n",
- " break\n",
- " val_epoch_loss_list.append(val_epoch_loss / (step + 1))\n",
- "\n",
- " # Sampling image during training with controlnet conditioning\n",
- " progress_bar_sampling = tqdm(scheduler.timesteps, total=len(scheduler.timesteps), ncols=110)\n",
- " progress_bar_sampling.set_description(\"sampling...\")\n",
- " sample = torch.randn((1, 1, 64, 64)).to(device)\n",
- " for t in progress_bar_sampling:\n",
- " with torch.no_grad():\n",
- " with autocast(enabled=True):\n",
- " down_block_res_samples, mid_block_res_sample = controlnet(\n",
- " x=sample, timesteps=torch.Tensor((t,)).to(device).long(), controlnet_cond=masks[0, None, ...]\n",
- " )\n",
- " noise_pred = model(\n",
- " sample,\n",
- " timesteps=torch.Tensor((t,)).to(device),\n",
- " down_block_additional_residuals=down_block_res_samples,\n",
- " mid_block_additional_residual=mid_block_res_sample,\n",
- " )\n",
- " sample, _ = scheduler.step(model_output=noise_pred, timestep=t, sample=sample)\n",
- "\n",
- " plt.subplots(1, 2, figsize=(4, 2))\n",
- " plt.subplot(1, 2, 1)\n",
- " plt.imshow(masks[0, 0].cpu(), vmin=0, vmax=1, cmap=\"gray\")\n",
- " plt.axis(\"off\")\n",
- " plt.title(\"Conditioning mask\")\n",
- " plt.subplot(1, 2, 2)\n",
- " plt.imshow(sample[0, 0].cpu(), vmin=0, vmax=1, cmap=\"gray\")\n",
- " plt.axis(\"off\")\n",
- " plt.title(\"Sample image\")\n",
- " plt.tight_layout()\n",
- " plt.axis(\"off\")\n",
- " plt.show()\n",
- "\n",
- "total_time = time.time() - total_start\n",
- "print(f\"train completed, total time: {total_time}.\")"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "b005e3bd-54b9-44bc-964d-ca0c9585a139",
- "metadata": {},
- "source": [
- "## Sample with ControlNet conditioning\n",
- "First we'll provide a few different masks from the validation data as conditioning. The samples should respect the shape of the conditioning mask, but don't need to have the same content as the corresponding validation image."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 14,
- "id": "262a5129-9445-4ecc-a37a-a97c59386747",
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "sampling...: 100%|████████████████████████████████████████████████████████| 1000/1000 [00:37<00:00, 27.00it/s]\n"
- ]
- },
- {
- "data": {
- "image/png": "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553KT3/6U6W1tVUxGo3KyMgIX/fII4+MWuNYX/f+/fsVp9OpuFwu5fbbb1fuuusupaurSzn55JNHPebhPge9Xq/Mnj1b+X//7/8p9913n/KBD3xAAaA88sgjSl1dnXLzzTcr99xzjzJnzhxFrVYre/bs4fv/85//VNra2pT/7//7/5QHH3xQueOOO5T6+nrFZrMp/f39fN1DDz3En/eDDz6o3H333cqnPvUp5Ytf/CJfc+uttyoAlEAgoCiKonR3dytNTU3K/Pnz+baJpKurS/nUpz6lKIqi/O///q8CQFm/fn3FNfF4XJk7d66iVquV66+/XnnggQeUO++8U1myZImycePG95Wv5uZm5eqrrx713OUyqiiKEggElNraWuXLX/6y8sADDyg/+MEPlM7OTkWr1SobN26suC8A5dZbb33P17ZixQpl9uzZo26//fbbFbVarfj9fkVRxv757t27l2XmvXj55ZcVAMrLL79c8Vrr6uqUxsZGlrXZs2crarVaeeKJJxSfz6fcdtttyk9/+lN+7lgsxvf/3e9+p5x88snKLbfcojz00EPKN77xDcXhcCjNzc1KMpnk647ku/LLX/5SkSRJ+dCHPqTcc889yve//32lpaVFsdvt7/udmmzOO+88xWKxKJs3b37fa5csWaJcc801yk9+8hPlnnvuUc477zwFgHLvvfdWXEf7UW1trXLbbbcpP/nJT5T6+nrFbDYrjz32mNLU1KR873vfU773ve8pNptNaW9vV4rFIt+f9pmOjg7lE5/4hHLvvfcqq1atUgAo3/zmNyue62D59fv9SkNDg9LY2KjccccdygMPPKBcdNFFCgDlJz/5CV+XSqWUmTNnKnq9Xvna176m/PSnP1UWLVrEOqBc5g7Fe+3DR/u677rrLmX58uXKHXfcoTz00EPKjTfeqBgMBuWUU05RSqUSX7dhwwZFlmWlpaVF+d73vqd8+9vfVurq6lg2y/nWt76lSJKkXHHFFcr999+v3H777Yrb7VZaWlqUcDj8nq+x4n0e64XRaFQBoFx88cVjuv6tt95SACif/vSnK27/6le/qgBQXnrpJb6tublZAaD87//+L982PDysyLKsfOUrX+HbvvSlLykAlH/84x8V19lstvdU8IpyYBM73OZ0sIL/wx/+oABQvvWtb1Vcd9lllymSJCnd3d18GwBFp9NV3LZp0yYFgHLPPffwbYcTrLG87htuuEGRJKlikw8Gg4rT6RyzggegfOc73+HbwuGwYjAYFEmSlCeeeIJv3759+6gvXyaTqRBoRTmw2cuyrNxxxx1828UXX6zMmTPnPddSruC3bdum1NXVKUuWLFFCodB73u948MYbbygAlBdffFFRlAMHu4aGBuXGG2+suO6WW25RAChPPfXUqMegL/B7yddYFXyhUFCy2WzFNeFwWPF6vcp1111XcftYFPyDDz6oABilBGbPnq2sWLGCfx/r53usCh6A8qtf/YpvI1lTqVTKunXr+Pbnn39+1POkUqlRz7N27VoFgPLLX/6SbxvrdyUejyt2u125/vrrKx7T7/crNptt1O1TjRdeeEFRq9WKWq1Wli5dqnzta19Tnn/+eSWXy4269lDv3cqVK0cZa7Qfvf7663wbfRYGg0Hp7e3l20m2yj9j2mduuOEGvq1UKikXXHCBotPpKg7wB8vvpz71KaW2trbCKFIURbnyyisVm83Gr+GnP/2pAkD57W9/y9ckk0mlvb39mBT8sbzuQ72/v/71r0ft7RdeeKFiNBorDs27du1SNBpNhYLv6elR1Gq18u1vf7viMTdv3qxoNJpRt78XY3bRx2IxAIDFYhnT9c888wwA4Mtf/nLF7V/5ylcAYFSsfvbs2Vi+fDn/XlNTg87OTuzZs6fiMU877TSccsopFdd97GMfG+vLGPPa1Wo1vvjFL45au6IoePbZZytuP+ecc9DW1sa/n3TSSbBarRVrPxxjed3PPfccli5dWpG85XQ6j/h1f/rTn+af7XY7Ojs7YTKZ8NGPfpRv7+zshN1ur3h+WZahUh0QlWKxiGAwCLPZjM7OTmzYsKHiMffv349//vOf77uWLVu24IwzzkBLSwvWrFkDh8NxRK9lPHj88cfh9Xpx1llnATgQbrniiivwxBNPoFgs8nW///3vcfLJJ+OSSy4Z9RiHcq0dLWq1mnNHSqUSQqEQCoUCFi9eXPE+j5WPfOQj0Gg0+M1vfsO3bdmyBe+88w6uuOIKvm2sn++xYjabceWVV/LvJGuzZs2qqGCgn8tl0GAw8M/5fB7BYBDt7e2w2+0Vaxzrd+XFF19EJBLBv/zLv2BkZIT/qdVqnHrqqUcVFplIzj33XKxduxYXXXQRNm3ahB/84AdYuXIl6uvr8ac//ani2vL3LhqNYmRkBGeccQb27NmDaDRace3s2bOxdOlS/p0+ixUrVqCpqWnU7Yfa477whS/wzxTCzOVyo8IuhKIo+P3vf48LL7wQiqJUfB4rV65ENBrlz/iZZ55BbW0tLrvsMr6/0WjEv/7rv773G/Y+HMvrLn9/M5kMRkZGcNpppwEAr7tYLGLNmjVYvXo16urq+Pr29nZ8+MMfrljLU089hVKphI9+9KMV74XP50NHR8cRyeaYFbzVagUAxOPxMV3f29sLlUo1KiPZ5/PBbrejt7e34vbyN5FwOBwIh8MVj9nR0THqus7OzjGtaaz09vairq5u1GFm1qxZ/PdyxrL2wzHW132ozO4jyfbW6/WoqampuM1ms6GhoWGUkrLZbBXPXyqV8JOf/AQdHR2QZRlutxs1NTV4++23KzaIf/u3f4PZbMYpp5yCjo4OfP7zn8drr712yPVceOGFsFgseP7551m2JpJisYgnnngCZ511Fvbu3Yvu7m50d3fj1FNPxdDQEP72t7/xtbt378bcuXMnZF2/+MUvcNJJJ0Gv18PlcqGmpgZ//etfR23EY8HtduPss8/Gb3/7W77tN7/5DTQaDT7ykY/wbWP9fI+Vw8laY2PjqNsAVMhgOp3GLbfcwjkxtMZIJFKxxrF+V3bt2gXgwAZeU1NT8e+FF16oikS1JUuW4KmnnkI4HMb69evx9a9/HfF4HJdddhneeecdvu61117DOeecA5PJBLvdjpqaGnzjG98AgFGf78H7EX0WY/mMgAMJlq2trRW3zZw5EwAOmysUCAQQiUTw0EMPjfosrr32WgDvJg7S53uwHB2rDjiW1x0KhXDjjTfC6/XCYDCgpqYGM2bMAPDu+zs8PIx0Oj1m2VQUBR0dHaPej23bth2RbI45i95qtaKurg5btmwZ84MDY7dwDpfZqIwhOWOyOZa1T9TrPtzzjOX5v/Od7+Cb3/wmrrvuOtx5551wOp1QqVT40pe+VJHgOGvWLOzYsQN/+ctf8Nxzz+H3v/897r//ftxyyy2jkr0uvfRS/OIXv8Djjz+Oz3zmM+PwCo+Ml156CYODg3jiiSfwxBNPjPr7448/jvPOO29cnutw34FisVjx/j/22GO45pprsHr1atx8883weDxQq9X47ne/i927dx/Vc1955ZW49tpr8dZbb2H+/Pn47W9/i7PPPhtut5uvGevne6wciwzecMMNeOSRR/ClL30JS5cuhc1mgyRJuPLKK49qjXSfRx99FD6fb9TfNZojriCeNHQ6HZYsWYIlS5Zg5syZuPbaa/G73/0Ot956K3bv3o2zzz4bXV1d+PGPf4zGxkbodDo888wz+MlPfjLqvTuWz+hooTV8/OMfx9VXX33Ia0466aRjfp734lhe90c/+lG8/vrruPnmmzF//nyYzWaUSiV86EMfOmrZlCQJzz777CGf32w2j/mxjkiKV61ahYceeghr166tcGcciubmZpRKJezatYstX+BAdm8kEkFzc/ORPDU/Jp28y9mxY8f73vdIXKnNzc1Ys2YN4vF4hRW/fft2/vtE0tzcjO7u7lG3H+q248GTTz6Js846Cw8//HDF7ZFIpEJRAIDJZMIVV1yBK664ArlcDh/5yEfw7W9/G1//+tcrSqd++MMfQqPR4HOf+xwsFguuuuqqCXktxOOPPw6Px8OVBOU89dRTePrpp/Gzn/0MBoMBbW1t73uwfS/5cjgciEQio27v7e2tsHaefPJJtLa24qmnnqp4vGMp21u9ejU+85nPsJt+586d+PrXv15xzZF8vpPFk08+iauvvho/+tGP+LZMJjPqfR3rd4VCah6PB+ecc874L3iSWLx4MQBgcHAQAPDnP/8Z2WwWf/rTnyqs1OMVgiiVStizZw9b7cABmQNw2G6hNTU1sFgsKBaL7/tZNDc3Y8uWLVAUpeI7MhYdcDwIh8P429/+httvvx233HIL336wnvJ4PNDr9WOWTUVRMGPGjIr38Wg4ojK5r33tazCZTPj0pz99yHKm3bt34+677wYAnH/++QCAn/70pxXX/PjHPwYAXHDBBUe82PPPPx/r1q3D+vXr+bZAIHDY0qZyTCYTABxyoz3U8xSLRS4jIn7yk59AkqRRMZPjzcqVK7F27dqKLmmhUGhMr3s8UKvVo07qv/vd79Df319x28FlITqdDrNnz4aiKMjn8xV/kyQJDz30EC677DJcffXVo+KGx5N0Oo2nnnoKq1atwmWXXTbq3xe+8AXE43Fe06WXXopNmzbh6aefHvVY9L68l3y1tbVh3bp1yOVyfNtf/vKXUSUvdFovf6//8Y9/YO3atUf9Wu12O1auXInf/va3eOKJJ6DT6bB69epRzzuWz3cyOdQa77nnnopcCWDs35WVK1fCarXiO9/5zijZBA7sK1OZl19++ZDWM+U+kcv6UDIVjUbxyCOPHLe1le+biqLg3nvvhVarxdlnn33I69VqNS699FL8/ve/P+RBuvyzOP/88zEwMMDllQCQSqUmrbnaod5fYLTeU6vVOOecc/CHP/wBAwMDfHt3d/eonK6PfOQjUKvVuP3220c9rqIohyy/OxxHZMG3tbXhV7/6Fa644grMmjWropPd66+/jt/97ndc73vyySfj6quvxkMPPYRIJIIzzjgD69evxy9+8QusXr2aE5uOhK997Wt49NFH8aEPfQg33ngjTCYTHnroITQ3N+Ptt99+37Xb7Xb87Gc/g8VigclkwqmnnsqxknIuvPBCnHXWWfj3f/939PT04OSTT8YLL7yAP/7xj/jSl75UkVA3EXzta1/DY489hnPPPRc33HADTCYT/uu//gtNTU0IhULjmuh1KFatWoU77rgD1157LT7wgQ9g8+bNePzxx0fF2s477zz4fD4sW7YMXq8X27Ztw7333osLLrjgkMmZKpUKjz32GFavXo2PfvSjeOaZZ7BixYrj+loA4E9/+hPi8TguuuiiQ/79tNNOQ01NDR5//HFcccUVuPnmm/Hkk0/i8ssvx3XXXYdFixYhFArhT3/6E372s5/h5JNPfk/5+vSnP40nn3wSH/rQh/DRj34Uu3fvxmOPPTZKjlatWoWnnnoKl1xyCS644ALs3bsXP/vZzzB79mwkEomjfr1XXHEFPv7xj+P+++/HypUrR9VOj/XznUxWrVqFRx99FDabDbNnz8batWuxZs0auFyuiuvG+l2xWq144IEH8IlPfAILFy7ElVdeiZqaGuzbtw9//etfsWzZslEH/KnEDTfcgFQqhUsuuQRdXV28B//mN79BS0sLx67PO+886HQ6XHjhhfjMZz6DRCKBn//85/B4PGzljyd6vR7PPfccrr76apx66ql49tln8de//hXf+MY3RuUAlfO9730PL7/8Mk499VRcf/31mD17NkKhEDZs2IA1a9YgFAoBAK6//nrce++9+OQnP4k333wTtbW1ePTRR2E0Gsf9tYwFq9WKD37wg/jBD36AfD6P+vp6vPDCC9i7d++oa2+77Ta88MILWLZsGT772c+yETl37tyKA2lbWxu+9a1v4etf/zp6enqwevVqWCwW7N27F08//TT+9V//FV/96lfHtsAx59uXsXPnTuX6669XWlpaFJ1Op1gsFmXZsmXKPffco2QyGb4un88rt99+uzJjxgxFq9UqjY2Nyte//vWKaxTlQJnCBRdcMOp5Di4jUhRFefvtt5UzzjhD0ev1Sn19vXLnnXcqDz/88PuWySmKovzxj39UZs+ezWUJVIZzcJmcohwoo7npppuUuro6RavVKh0dHcoPf/jDirpGRTlQ7vH5z39+1NoPLo06XHnGWF/3xo0bleXLlyuyLCsNDQ3Kd7/7XeU///M/FQBcz3w4rr76asVkMh3yeQ5V1nbwujKZjPKVr3xFqa2tVQwGg7Js2TJl7dq1o9b54IMPKh/84AcVl8ulyLKstLW1KTfffLMSjUb5moPr4BXlQJnJGWecoZjN5opyqePFhRdeqOj1+or66YO55pprFK1Wy2U7wWBQ+cIXvqDU19crOp1OaWhoUK6++uqKsp7DyZeiKMqPfvQjpb6+XpFlWVm2bJnyxhtvjHr/SqWS8p3vfEdpbm5WZFlWFixYoPzlL385pHxiDGVyRCwWUwwGgwJAeeyxx0b9fayf77GWyY1F1spfX/n3KhwOK9dee63idrsVs9msrFy5Utm+ffshSxCP5Lvy8ssvKytXrlRsNpui1+uVtrY25ZprrlHeeOON93yNk82zzz6rXHfddUpXV5diNpsVnU6ntLe3KzfccIMyNDRUce2f/vQn5aSTTlL0er3S0tKifP/731f++7//e8z70aH2OJKFH/7wh3wb7TO7d+9WzjvvPMVoNCper1e59dZbR5VhHkp+h4aGlM9//vNKY2OjotVqFZ/Pp5x99tnKQw89VHFdb2+vctFFFylGo1Fxu93KjTfeqDz33HPHVCZ3LK97//79yiWXXKLY7XbFZrMpl19+uTIwMHDI1/i3v/1NWbBggaLT6ZS2tjblv/7rv5SvfOUril6vH/X8v//975XTTz9dMZlMislkUrq6upTPf/7zyo4dO97zNZYj/f9fiKAK+dKXvoQHH3wQiUTihGq/KBAcKeK7cvy55ppr8OSTTx6Tt+lEZPXq1di6desh88uOlWkxLvZE4OApfcFgEI8++ihOP/10sWEJBGWI74pgqnKwbO7atQvPPPPMmEebHynVUwtygrN06VKceeaZmDVrFoaGhvDwww8jFovhm9/85mQvTSCYUojvimCq0trayn3re3t78cADD0Cn0+FrX/vacXk+oeCrhPPPPx9PPvkkHnroIUiShIULF+Lhhx/GBz/4wclemkAwpRDfFcFU5UMf+hB+/etfw+/3Q5ZlLF26FN/5zncO2cBtPBAxeIFAIBAIpiEiBi8QCAQCwTREKHiBQCAQCKYhQsELBAKBQDANqeoku+Pdwe1EQKRgTAxCVo8dIasTh0ajQalUet/3nOT6va6TJKni7wf/PpbHpfuM9fne75oj4VBrOdTjl78urVZb0Zp6sqjqJDuxaR47VfzxVxVCVo8dIasTh0qlEu/3YTiUgj/UIWY8JzEeLcJFLxAIBIIKDqXcxSH1AIqiHHIIzHv9PlkIBS8QCASC9+VQLunpzFhenyRJU/p9EApeIBAIBIelXIGV/zwRVupkKs+xvL5DWfNTCaHgBQKBQHBYyhXYRCuzsTzfRB0CprKlfjiEghcIBAJB1TJR+QLlWfzVglDwAoFAIJhWTGW3+UQiFLxAIBAIBGOg2g4OQsELBAKBoIKpnh0uGBtV3clOIBAIBONPtVmqgkMjLHiBQCAQTDkmw4Mw3bwWQsELBAKBYEox3RTtZCEUvEAgEAjGhcMp5vLbVSrVeyrw9xrmolIdX5U13UITQsELBAKBYFw4nII8uFmOoihQqVRQq9WjlP3hHmOsrWMPdYAYy8FjOiYWiiS79+GRRx7BsmXLKm678cYb8eyzz77vfb/4xS/iC1/4AgqFAhYuXIhMJnO8likQ4IwzzoDD4UAqlUI0GsXQ0BAymQyy2SwymQzS6fQh72e329HQ0AC3241EIoENGzZMiUlYgurlcCNhVSoVy9bVV1+Nrq4u5HI5bN26Fdu3b8e+ffsQiUQAAGq1Gmq1mq9Xq9XIZDKYOXMmPvGJT+Diiy9GMBjEE088gT//+c/w+/38+GMd/jKZXfomAqHgcWB273e/+12o1epRf1uxYgWampoqbrvhhhtw3nnnve/jLl26FB0dHVAUBT/84Q9RKBQAACMjI/j2t789PosXnHD4fD7kcjnU1dWhubmZN7QZM2ZAr9cjl8shmUyioaEBhUIBpVKJ/xHFYhGpVAqRSASFQgEajQbpdBqZTAY+nw86nQ4ajQaFQgE9PT2T92IFk8JYZra/F4qiQKvVwu12Y/HixZAkCS6XC3a7HaFQCBaLBfPnz4fdbkexWITL5UJLSwv27NmDPXv2oKenB06nE5IkobW1FZ2dnWhtbUUul4PFYsHs2bPhcDiQTqcxa9YsJJNJ5PN5qFQqPPXUU8hms+M+F74aOaHnwbe1taGhoQGyLOOZZ545pII/HgwMDOCqq67Ca6+9hpkzZ6Kmpob/tm7dOmSz2QlZB3BiC/9EcqyyqtFoYDQa4fP50NzcjHg8jubmZsycORM6nY6vUxQFhUIBuVyOXaHkttRqtdBqtSiVSsjn80gmkwgEAohEIshkMsjlckilUtBoNJBlGZIkIZ1OY9OmTSiVSuzCpMdLpVITKj9CVieOY50Hb7VaUVNTg5aWFpx33nkwGAxoaGiA1+tFMBhETU0N0uk0stksCoUCtFot4vE4/H4/9uzZg507d6KjowPd3d1Yvnw5zjzzTMybNw+5XI7vl0qlsH//fgSDQcRiMf4e/PKXv8Rrr70Go9EIu90Ou92OTCaDvr4+ZLPZURb+wS1ox0vOpoK8nrAKXpZl3HXXXfjCF74wjis6MhoaGnDvvfdi9erVfFtXVxf27duHYrGIXC533NdQxR9/VXEssqrRaOBwONDZ2YkrrrgCKpUKQ0NDCAaDSKVSqK+vh8VigUqlQqFQ4M1PrVajWCzyP0mS4HQ6USgUUCgUoFarIcsyu0Hpvn19fQgEAojH40gkEojFYsjlclCr1dBoNNBqtdDr9dixYwcfJCbCpS9kdeI4UgV/sMV/9tlnY8mSJXwwdTgcsNlscDgccLlcKJVKrKxTqRTHzcnyt9vtOOWUU/Dv//7vWLRoEZYsWQKVSoVQKASNRsPKfHh4GNlsFlqtFtFoFPF4HB/4wAdw1llnoaWlBcuXL8e5556LXbt24cEHH0RPTw9isRjy+TwkSUKxWBz1OsZLlqeCvJ6wCv6dd95BZ2fncc/KfC9oky1/HYVCAYqi4Pnnn8eFF1543NdQxR9/VXEssvrFL34RdrudLY9yxSxJEnK5HHQ6HXK5HCtzcr/rdDoYjUYYDAao1Wo+BORyOb5ekiS27smLRYqclH+xWEQ0GkUmk4EkSdDr9UgkEggEAti/fz96enqQzWYRi8VGbZrjhZDVieNoLXi3241rr70W8+fPR11dHVQqFd5++214PB4YDAbodDpYrVakUimk02nk83koigKr1QpZlhGNRgEALpcLPp8PO3fuRH19PbxeLzKZDP7v//4P//znP1FbW4tZs2bB4/EgHo9DkiSkUikEAgFs374dra2tqK+vh9lsRrFYxMDAAAYGBuD3+7Fjxw68+uqrUBQFxWJxVPiqnGMNU0w2J5SCP/PMM3HXXXcBAObOnQtZlo/HssaFWCyGXbt28e/33XcfHnnkkXF/nir++KuKI5XVmpoaLFq0CLNmzUJNTQ1kWeYEIlKypLDVajWy2SxyuRwKhQLy+Tyi0SiCwSBMJhPsdjucTifH1AHw5kaxSq1Wy5YRWeS06dG1xWKR3ZmFQoE3x1wuh3g8jv3798Pv92NgYAChUGjc30MhqxPHkSp4n8+H008/Heeddx7LqyzLsNlsGBkZ4YOkTqeDzWbjOHyhUEAqlYLT6UQikQBwIJlOq9XCZrOhVCpBo9FAo9FApVLh6aef5mtDoRAKhQISiQROO+00pFIpbNq0Cd3d3Tj99NOxaNEiWK1WxGIxPpRqtVoAQCqVwnPPPYdQKIQNGzbgnXfe4dDVdHLRnzBJdhdffDGuuOIKLFq0aLKXMiasVmvFWq+66irU19ejWCziBz/4wXGzkgSTT1tbG2bOnIm5c+eirq6OS4rokEBWeKFQgCRJHC8nZV8oFKBSqWAymWA2m6HX69lTRRsceQNKpVKFlZ7P51lxE/Q3up02LnpOg8HA1pnb7UZ9fT0ikQji8Th6enrY/U+HC8HU50iU0+LFi7FgwQLMmjULM2fOBAAOL8qyjJaWFqTTaVbyJMekTCmfg27XaDQwGAyIxWLQ6/Xs1SyVSvB4PHC73RgaGkI0GoUkSairq4PJZEI2m4Ver8fMmTPR2toKi8XCbniTyQS9Xg+z2QyTycS5KOl0Gh0dHdiyZQt6e3uxbt26cVXyk80JoeBnz56NT3/601i1atVkL+WoOeecc3DOOeegUCjgxRdfRC6XQyAQwODg4GQvTTCOeL1ettytVisrYACsdMkSz+fzrDTJxQ68W15ktVpZ8RLkBSBrHAD/TAo8n88DeFeB0235fB65XA6lUqniMdVqNfR6PWpqauByudDc3IxcLoeRkRHO6Kd/4mA6vbDb7VixYgWWLVsGg8EAk8mETCbDVrgsy3A4HHx4zOfzSCQS0Gg07D2SJAnxeBxWq5XlQ5ZlDA8Pc6ycZJCqRqxWK2pra6FSqdDQ0ACDwYBisYj6+npYrVbMnDmTc1FUKhU/DoW1ZFnmBNX29nbMnz8fGzZswMDAAOLxOMvr4WbNV8sB4IRw0Q8MDKC2tvY4r2bi+elPf4qvfOUrx5QUUsUff1UxVlm99dZb4XQ6kc/nEQ6HodFoYDabodFoeHPSarVIp9OcTaxSqTjcREo4EokgkUjAZDLBYrHAarXCbDYjFoshHo+jVCrBbrdDrVYjlUqhWCxCrVbDbDZzvTytuVQqIZVKVVji5Za+SqWC2WwGcMBykySJ1xsKhdDT04OhoSEEAgEEAoGjfg+FrE4cY20q88UvfhEnnXQS91Hw+XzYs2cPdDode49SqRR8Ph8URWGZjcfjyGQyXMZJeSQA+L69vb0wGo0sZzqdDgaDAdFolPNDIpEIy3ahUEAkEsHu3buxYMECvP3229Dr9fjABz6ArVu3wuVyQZZlDkVls1l2/QMH5HzDhg3YsWMH1q1bh7Vr1x7TgXQqyOsJYcFPVz7/+c/jzDPPxIIFCyZ7KYJxIpfLIRaLQa1Ww+l0IpVKcTybXIzkkid0Ol2FC79UKkGv12NkZITr2d1uNzKZDKxWK6xWK29qxWIRRqORlXc+n4dWq+USOyqPMxqN/NiFQgHxeJwz6AuFAq9RpVLBaDSy29/lcsFqtSKRSMDv92PNmjUTWgYqOH4oigKn0wmXywWLxQKtVotisYjm5ma2cinG/vbbb0Or1cJoNLKip6qMYrEIWZb5cBqLxTA0NMSueso7SSQSKBaL7JXSarUwmUyQZZnj8Xq9Hl1dXSiVSpgxYwby+Tx27tzJj0vhqlwuB6fTCYPBwAl6/f39SKfT8Hq9OO200+BwOPDMM89UtddJKPgqRqvVYubMmXj++edx6aWXcpKKoHqh+DlZFqRYyYpJpVLQarXsnqdySkrCK4/F02ZGCpkUNil3RVH4eeg5aTMjlz1BbnyySux2e4UXgSwxStyjQwZ5HKiMb+nSpXjzzTfZayCoPsobyHR2dsLhcLDSliQJZrOZvU16vZ4Pl+SmNxgMUBQFsViMZXhgYAA+nw+RSIQfx+12V4STtFotQqEQPB5PxeFAo9GwF0ClUrHydzgcAMBVI8CBA7RGo4Fer0cmk+FkUnLhe71eZLNZuN1uNDc3Q5ZlPP300xUJp9XkohcKvsoxGo0477zzcP311+Ppp58WXceqHLK4gQMbE7krqctcLpdDIpGo6Odd/o/K6PR6PZxOJ2fak1seeLfnNsUkaTNWFIVj7BT3pKS68lp3OkDQc9L9y5PxJEnizmLksjeZTJgxYwYikQj27NmDWCw2ae+z4Ogpb5xEFjB95pQfQolx5YdNCgMB73qC6MCp1+s5Y16n00GSJNjtdhgMBvYUURY+xfbLS4x1Ol2FvJISJ7nMZrMVMkwHkvL8E7VaDaPRCKPRyGugBNKXX34Z/f39VaXcAaHgpw0//vGPkUgk8PTTT2NkZGSylyM4Rmiz0ul0kGWZrRCKX5LFLssyl7jRRkuWv8Fg4PulUiluVgOAN+Nyix4Ab87ljUcA8LUA+PrywwBlJVMJHWX4lyc2qdVq2O12LFiwALFYDKlUSmTWVxnllRwWi4XnHFD3Q4PBgHQ6zZZ5oVCAyWRiqx0AW/LAuxnzRqMR0WgUVquVn6uurg4ajQbJZJLd6nq9HhaLhcNSKpWKs+Q1Gg17CvR6PUwmE9+vtraWvwPUYCefz/P3htZFSp7K/BoaGrB8+XLEYjH2LhyqOQ4wNWLuByMU/DTioYcewrJly3DNNddM9lIER8nzzz+PJUuWoLGxEVqtlpVlqVTixCJKRiq3pIvFYkXSEm1CZKGT25Q2XbK0KUuelDdtbHRdLpdDJpOBXq/nWnvgwMZcbtnTGsqhzZQOI+XZ/bNmzYJKpUJ3d/cEvruCsfJelqqiKMjn84jH41CpVJxTYTQaOe+DrGAqOSNZzufzKJVKMBgMHD4i2XO73RWhIavVCkmSkM1moVar4XA4uGyuPMmzvGGYRqPh4UkUyorH4zCZTBgcHGTPAj0eufZzuRxCoRDcbjeSySQfVhOJBEqlEq666ip4PJ6KXiTv1d52qkylEwpeIJhCUDY6WSKkRKnZBwBubENlQENDQygUCpxNbDAYKixu6nxHlhM9JilnSoaipiG5XI7b0ZpMJo5lksWt0+kwY8YMAOCe9kNDQ4hEIpxFTwcPstTI4qLX5PP5EI1GhYKfooxl+hoA3HXXXfjyl7+MOXPmwO/3Y2hoCD6fjxVpNpuFz+eraMRULBaRTqcrck30ej0fQIF3S0FJPlUqFTKZDHul0uk0crkcDAYDLBYLALAL3+12o1gsor+/n4fQBAIBTv4sFotIJBKIRqPQ6/WQZRk6nQ4Oh4PDYfQcVKbq8/nQ0NAAm82GYDB42PdtqlnzQsFPM8444wzcf//9+NznPjfZSxEcBaTEyRohqFtcJBLB3r17kUwm2fKgMcRmsxkulwterxder7eizzxtWuVDaCjmXj6UhmL35Ql6AwMD6O3thcVigcPhYJcrtRulQ8GhcgIAcCIgeQwymQyX3dXU1BxT6ZxgcqBwUGNjI1KpFHbv3g2/38894fV6PbvTKaREeRnkYaJYukajYXc5KXzyEFGCJin2eDwO4N0wUSgUqjg4kEfKZDIBAIektFotHzyBd0MDwLtNecxmMz83JbFSmR4lC3Z0dCASiVR0dSxnqih2Qij4aUZLSwsuvvhioeCrFLImytvQ0lS3aDTKvbTJMilvfhONRrnOPZ1Ocy9u2izLR8dSopRer69IPqK6e61Wy4cHymiuqalBTU0N3G437HY7APDfy70FwOgsfHpO2sS1Wi0fSISCr06KxSJmzpyJYrHIeT/lCZuUpLZz5040NDSwJ6lQKCCTybAyJVd+eRiHXP+ktClWTs1xaDBSLBZjNzu57VOpFDo7OzkvIJ/Ps8KnAwSV19H9ASCRSKCmpoYfO5/Ps2dBp9PB5XKhvb0db7zxBr8HU02hH4xQ8ALBFMJisfCmUm7FU4ydrOWD3ZcUFw2FQgiFQhgeHmY3PbXppES48sQ5m81WsTlSzTFN+cpkMmhra8OSJUv4sEADbvR6Pa8vlUqx+7+8rS2ACotelmUenENeAEF1QrXmarUaiqKgqakJyWQSDoeDs+xVKhV6e3tht9vhdrthNpvZg0MyQUmaZM0DB+Q9Ho9zSKi8DJSSRpPJJNLpNDQaDctwJpPBvn374PV6YbPZoNPpOHxVnmVP2f+RSIT7PvT09KCuro4tesq+dzqdMBqN8Hq96OzsHFNjsckcYlaOUPACwRTC7XZzi1lyg1K2OsXEAVTUpAPgDHXaIHU6Hfbt24dYLAan0wm3280ue2ofS0qZmoSQhZVIJNDY2Ij58+fj1FNPhcfjYcVPNe+FQgHJZJITrCwWCzQaDZe+kWWWSCTYEivvWkaHjamyEQqODqorB8B5ITQdjnq+X3rppdwYiWrfadAMyUZ5m1uSd1LqdB9q8kQNnyhObjabefgMHRgff/xxzJ8/Hy0tLXA6nbDb7YjFYvwdyOfzSKVS7IHI5XL83aODNTXeoVCVx+PBBz/4wYpy08NZ8BMxPnksCAUvEEwhSFEC78bjKRZIljrVkicSCaRSKVb2sViM3ZwmkwltbW1obW2Fx+OBxWJBNBpFIpHgA8Tu3bvxz3/+k8vxaPJcOp2G3+9HIBDg0iIAbEGl02ns3bsX0WiUN3SKkZL3gUINGo2mQslT8lQkEuH1CKoPRVGg1+sRjUb5AOl2u7lrXUNDA5qbm2EymZBIJPggV94mlsI25AKnhMxCoYBoNMqDkyjenU6nOS5PMkbhJ0mSYLPZYDQaMTQ0hDlz5qC5uRkul4sPyy6XC319fRgaGgIAbNu2Deeccw436gmHw9wvIpvNIpFIQJZlZDIZ5PN5GI1GmEwmtLS0oL+/n9c7lREKXiCYQlB8unxcJ3XtokzfJUuWYGRkBP39/RgYGEAsFmP3ePmUOJVKhVAohGQyyfFIirmrVCp4vV4sXLgQfr8fsViMB2wA4N725B7N5/M8QIQeY3BwEMFgkDuPUaY+QXFWKuujx6DXKEkSwuEwlzMJqotCoYC1a9fCbDbD4XBgaGgI3d3d+Pvf/44PfOADqKmpYUVJcXCLxcKlbZQHAoAz7sl9n0wmOR5f7v0hd7xOp+MDJD02eQRqa2vZxa8oCkwmE3w+H/eLIIvcarVyoil5pXp7e9klT613qQe+1Wrlw8dUsdDfD6HgBYIpRCwWq5gARwlHtBkajUbU1NTA4XDA4XCgpqaGB7mQG5SgoTOkVKnul1yPwIFa40gkglgsxrF3cq0aDAYuI6LaYfIOAOBWtRS/L3dXljfq0ev1AN4tIaLufGQFCjd9dVIoFLB//34kEgnOD6FJbOSup2FGhUKBXe5EeZIdJdWVd8Gjwyq1Q6ZeEOUJoRTr1+l0bGmT14CSRLVaLTKZDMtdJpNBPB6Hx+OBoijcNpkOEtlsFlarFRaLBYlEAkajseL3aDQ65ZPrCKHgBYIpxNtvv42uri64XC5uUFPebUtRFE5k6ujogMViwfDwMN544w1s2LABgUCAXeHZbBZmsxl2ux12u50Tifbv38+jXAFwCRtZ32azmQ8RVO4EvJs4lM/nuQ4ZACc+0SGB2oRSH30A7Lqn2mK6H61TUJ00NTVBlmXu8Hbeeeehrq4OBoMB2WwWNTU1CAaD8Hg8FbkllIuh0WgqmuLodDpWniqVit3mdAg1m80wGo38naCDaD6f5zBQPp+Hz+eDxWLhBNP9+/fDaDTC4/FweIrkmg6nsiyjq6sL+/btQzqdhs1mg8FgQE1NDXfFGx4eHpX/MpURCl4gmEIEAgF0dnZWDOygODj1+y6VSkgmk9i/fz+AA8pz3rx5OP/882GxWDhO/uqrr6K7uxsbNmxAX19fheJtbGxEW1sbOjo60Nvbi4GBAfj9fvj9fgAHupKZzWaYTCbodLqK5ya3e3nGvVqthsVi4QNINBrljmYUciBrjfqJlx9cBNUJtabt6emB3+/HVVddhYcffhjbt2+Hx+PBDTfcgLq6OnahR6NRNDQ0cGw9HA5jYGAAZrOZS+AAcDiotrYWTqeT3eh0aKSqkWw2y5MMqZUzZeubTCY+DOTzeQSDQdhstoqYPQ1Bor/X1NRwsykA3M8eAH9/xqLcp4pXSij4acaf//xnfP3rX5/sZQiOEpvNxpZDeUYxNeZQqVRcYkQblSRJCAaD3CyEXJlmsxlerxeSJMFiscBut3Mdu81m4zj7SSedhMWLF7M7PZvNwmKxoKamht3zNLaTOnt5PB7ObqZDCADupEdWUalU4j7e1KQkk8kgmUwiFArxgUIwtRjrUJVcLoft27dzGOljH/sYRkZGEIlEUCgUsGbNGsiyjNmzZ8NisUCtViMejyOfz3PeBeVjAODac5fLhXg8zu5zSZJgMpm4uRMl5mUyGQwPD3N+idVq5dI5OlCq1WrU1dVxfwetVosZM2ZAlmWu6KCDQ3d3N/R6PQwGA9fs22w2AAe8a0899dSY3r+pYuELBT/NCIVC2Lp162QvQ3CUlA/SICuGXNlk0dNIVop9kzWdTCZ5/nahUGCXucFgQGdnJ2cUl1vR1LmOYoxUo07ZylQjXG6RUOazy+UCcMDKCQaDXHZXPoGOBnjodDpYrVbelEdGRrgdr6B68fv9cDgcPNwoGAxyIxs6fFKTJCpBo8+dPDvUrY6Uu8Fg4Fg7yT+1UabcFOoLQTIPvDvljhLxqI5eo9Fgx44dXA4HHJBZr9fLHqpsNott27YhEolg9uzZPJOB+lJks1n09vbi+eefn7T3+mgQCn6a4XK5MHfuXGzZsmWylyI4CrRaLWcek7Vc3t2LstXLk5HI+iHlHgqFEA6HkUqloNfr4fF40NLSwm5Ssp4MBgM8Hg/sdjssFgvH68uncpWPAiWLnFqNkkVGcfpoNDqqCU+xWOSEOuogVigUMDQ0BLPZjFQqhZ07d07yuy44mMNZoAdb9uTdsVqt0Gq1qKurQ19fH7vbS6USl6xRlUUikeAOdfRYNC6WDrXAuy5xargUDofhcrkqKkWy2WxFOSn1py8Wi9zZEQC2bt3KXR4BcEMbWZZhNBqRyWSwefNmeDwePmTodDrYbDbOuo9EIti2bdsh34epilDw04xVq1Zh4cKFqK+vn+ylCI6CcDiMPXv2cKyPlC/VldO8amrWUT6hi2KQNDPe6/XC4/HA5XLBarVydzuj0Qin04nm5ma0tbWxRa/X6yssJHr88slx5dPoyMp3Op1wuVzcm54yqOlnUu5arRZWqxVqtRq1tbWora2Fz+fDXXfdNcnvumAsHJwvIUkSLr74Ym6EFI1GEQwGsXPnTo63P//88/jc5z7Hh0aSCQBspWezWUQiEfj9fhSLRdhsNsyYMQNerxcAkEwmEY/HEYvFWO7J+2Sz2Xi8MZVflg+UocNBS0sLNBoNd66bN28eXC4XfvOb38But6Ourg6zZs3C4sWLeX4DJY5arVbo9Xo4HA54PB709fWJMjmBQHDkzJo1Cw0NDTwIg1zY5FKXJAl+v7+ipIgOA8lkErFYjDOPyUoJh8PcbMZkMnFykd1uh9fr5f7x5dBmnsvl2DI/1CZK11KeAA2iAQ5Yd5lMpsJlT/F6OgSUl/UJpjblOR8AeNY6JYDS0CNymcuyjJqaGrzzzjvweDwA3u12R+5yajtL8kzJeslkEvPmzUNdXR3y+TxisRhCoRCXaJbXrptMpooWzIFAAF6vlwcgUa5JJBLBhg0bMDAwgLVr12JgYABXXnklgsEgtm/fjmuvvZY9X5FIBCMjIwgEAlCr1ejq6oLJZML555+Pn/3sZ2N6r6YCQsELBFMIspbLs9YpWxhAxdx1UrgEKVmHw4G6ujru0EUxe7PZDJvNBq/XC5/PxxnF5ZSPp6XSpUgkgoGBAWQyGSiKAp1Oh4aGBi4zoo2fOpNRjJ5uK4+zl6+dFIXT6UQkEqkaq+hE5VDzz6lO3Gw2o7W1Ffl8HjU1NXj11VcxPDyMxYsXQ5Zl9Pf3V8THyTVOB0XK0XjzzTcRiUQwc+ZMHklM/RTMZjOKxSLsdju7yKmsjjLhKf+EWtvqdDrEYjH4/X6USiW43W7OmL/00kvR1dUF4EDi5zvvvAO32w3gwEEkEAhgx44dsNlsSKfTMBqNmD9//sS+6ceIUPDTELPZjBtuuAH//d//zZ3JBNVB+SQ5in8DqGgmUx67pE2XDgLAgRI3t9vN19EGSeNea2pq4PF4OL5YDrngKY5Oz1Ge2Eed8ahGnxrp0OGANnLK6KfYKFld1OCGaprNZjOi0ehEvcWCo4QOciR7dKCk0kuqFbdardizZw9nu1MCKE2Xk2UZZrMZer2+wtpPJpPcWS6fz2PmzJnw+/38fFarFSqVCmazmWWS2tmWN3BSqVRIJpOcNS/LMif0ud1uLq2rra3l6pBEIoGtW7filFNO4QoPitenUilotVrufd/Y2IiBgQFe+1RGKPhpiNVqxX/+53/i6aefFgq+yqAmNbIss3KklpmkeOkAAFS60mnkJiW9USMR2uTsdjvHvQ+u9wXAypmGylBsn1zvpVKJY5rUOY9yA8gtT+1oKa5Pa4vH49xdzGQy8TASanIi6uGrg4MT7CjUYzKZKvrM19TUIB6P8zyD8omCVKNeXiqnVqu5Zz21jDUajXxo1Ov18Pl8SKfTsFgsnCNCj5lKpSpGElPDJepyZ7PZOFmV5JcOrdFoFHv37sXmzZvR0NCARCLBZX5utxvpdBp6vZ7r/VtbWxEIBISCF0wuUyUOJBg7r7zyCs4991y0traye50SitRqNbvqqcVrsViE3+/nxCODwQCj0VhRMkTuzdmzZ6OjowMOh+OQCpXc6zRtjhS+wWCA0+lENpvlzdpms3Hyk6IoMBqNXBNPBxSDwcBZ0dTwJhAIYGBgAMFgEMlkEiMjI5yIJ6g+yDVeKpVgNpthNpsRDAYxa9YsuN1u9PT0IBKJ4OSTT2YrfWRkBCMjI3j77bcRiUQAHDgYJhIJDA0NIRqNYmhoCDfffDP3Y2htbUVLSwva29u5kRIle9rtds7Kp+8EWeoUVqK/2e12mM1mNDc3o76+HqlUijvl7dq1C4FAAKeffjr3iiAlH4vFMDAwAEVRsG/fvqpQ7oBQ8NMSv9+PuXPnIhwOT/ZSBEeILMtc6kb932nYS3ldMLnfKVvd7XbDZDJxwhyN4KQNsrGxETNmzIDT6Tzsc5OXgDLtU6kUD6GJRCLcLjQajaK7u5sVusFg4Oenx6FsabKaqPSovr4eXq8X8XicN2AqCRRUD+UxcKp7BwC73Q6Px4NoNIpwOIzW1laeKEjX1NbWIhqNYuHChbDb7WhqaoLBYMCrr76KvXv3YufOnXj77bfh9Xpx2mmnweFwwOVyoba2lg+ylLRXbrlToxvycJWHh8xmM3+HjEYj6urqIEkS1q1bh3feeQehUAhz5szhboyhUIjDYwsXLoTFYkEymUR9fT1+/vOfV5SOTmWEgp+GlEolBIPByV6G4CgozzY/uNEMTc8q31jUajWampr49vL+3DQqlsZ5HuySL38+2gjJJU/Kmyx9esxiscgbKgAur6N4ZznU3548AmT5Uzke9QkXk+SqD5JJv9+PRYsWwefzQafTIRqNIp/PY8uWLRgaGkJ7ezssFguAd9vPUnKnzWaD2Wzm5k6RSAQWiwXt7e3chz4SiXA4iQbPAGA51Ov17G6n7wsAdt/TgJvyLoxGo5H7PYTDYZb5bdu2weFwYNeuXbDZbGhubsbpp59eMYLZ5XJxZUg1IBS8QDCFKM8uB95VkqRsKWv+4FGy5eM09Xo97HY7Wlpa4PV6uRvXwVBDHapfpzGc5PIkC4g2xvJYO2XJU095+kfQwYHa7ZJLk8Z3lnsiaNStoHogWYzH47BYLKitreXphSMjI+jt7UU0GsVJJ51UUQpJ8wvKpxXSgZW6IzY0NMDr9WLTpk2suMk7RBUlVJpHg2aoWiOTyfChsbzhEil7OmRQXkp9fT1kWWYPVSQSQSaT4e+V1WpFNptFOBxGOp1GIBCYrLf8qBAKXiCYQtCGR5sWJdWVz1GneCPwbkMaUsIUc7darRxHLG9eo1ar2bU/MjKC4eFhDAwMIBKJoFgswuVyob29nSeEUftZ2oDLx9gCqOhYR3+j2yl7urxePhqNIpvNwmg08lhRUQtfXdDBjBLYLBYLbDYbl5+Fw2Go1Wp4vV40NjZi165d7KUpFos8DZEgOW9sbERtbS2sVityuRzcbjf8fj8sFguMRmOFTFESaHnNezqd5u8L5YvQ7w6Hg71h1C5Xp9Nh+fLl8Pv92LdvH9RqNbZt28atcw0GA4aHh6FSqbjUbtu2bfzdqAaEghcIphBUtkPx63Krg5TqoZQr3U4lP319fXC73WhoaIDdbucNkjZayrqn56KGIHa7nft+ZzIZ/kcHCQDcUY/c+DTZi7L8KZZPz0HWPvBunX86nUYkEkEgEBDWexVBniRye1900UVwOp3cnMZgMGDevHk46aSTkEgk8NZbb3FnRVmWYbVaMWPGDM6ip7K2TCaDBQsW8NhZvV6POXPmwO12Q6fTIZFIcMln+chZSgLVarX8eDTSleLzVJFCUw9p7OuGDRswY8YMxGIxpNNp1NfXw263Y+vWrQgGg9i8eTPq6+uxfv16jIyMYGhoCHv27Kka5Q4IBT/tePLJJ/GlL31pspchOEqcTicny5GiJGhDI0Vb3hueyouAA0o0nU7jrbfeQn9/P2pra9HU1MSZzgaDgd2P+XweDoeDb7NYLBWu+fIyPNrcy4eJkCeBFDsdOsh9T/X7tM5YLMZJhDt27MA//vGPCX6HBeOBJEmor69HT08PJEniHAwqfdu3bx/6+/uRSqXgcrnQ0dHBilir1eKNN97g5LtQKISGhgZYLBZW/slkkmvPqUeCwWDgenpqHZtOp9He3s4ldjQYZteuXZxRr9FouCSOekJYrVYsWLCgYrysJElwuVy46KKLsHbtWrz66qsYGBjA8PAwUqkUAoEAdu7cWRXJdYRQ8NOMZDKJ/v7+yV6G4ChRFAVWqxVms7lirGZ5m9iDE3zKm+JQLJKaiMRiMY6PU+cw8gZQfXAmk+Hn0Gq1SKfTrJjp8cm9SZRn8pPlThn45bF46lxGLUqBA93P9u/fj4GBgaqyhgQHoIMl9YenFsharRapVIpHB1utVjidTh63um/fPsTjcSxduhSNjY0wm814/fXX8cc//hEOh4N7I7jdbrS2tqKtrY3zOKgqgxLraNKb3W7nvA5K6JQkCYlEgkNL5GGiRlHUu568WgaDgfs8xGIx9Pf3Y+PGjdixYweampowMDDATXZIhqsFoeCnERs3bsTmzZsnexmCY4Cs8fIyH9qQyvttkzVNFna5wqV/ALj7Vjqd5gQ5up4a2FgsFna3l8fLy92xNJK2PAmQ3PblngQAFU1NaPQtbaypVAqDg4Po7+8XZZxVSHlbYopL19XVwWKxQKPRIJlMIp/Pc/c48kaVtyxWFAVNTU3I5/M8m2BwcJCb0Xg8HqhUKtTW1nJPh3KvEM1lICVP5XoAkE6nefZCOTR1jsJbsViMD7p0WzqdxsjICNavX49du3Zx0mokEkEqlUIwGKy68cYnhIKnmcHllsV0gYaMAMA3v/lN/PWvf53kFQmOhWKxiFAohGQyyaVlVAJHE66Ad+PwANg1aTQaAbybaUzuc8qqpyYfsixzLJwUPR0IisUiD+egBDhS7uUz6QHwABvK8qeNnKCEvvKe+fv27cP69esRCoWE9V6llFvFb7zxBru48/k8BgYG4PP5OE5uNpsRCoWg0+kwf/58+Hw+Hum6ZcsWyLKMq666CmvWrIHVakVDQwOXUno8HuTzefZoUSIfyVp5EyiST61Wi7feeosTTgHwZDma/a5SqZBIJDjZj6bGBYNBmEwm7Nu3D1qtFkuWLEF7ezsURcFrr73GhwY6+B7spqfvxVRy30vKVFrNETLW9pYqlQq/+MUv8PGPf/w4r2ji2blzJ2bNmgUAR1WbWcUff1UxVlm12Ww455xzeGORZRl6vZ6T3cpnwJOVTO53qgEud9NbLBZ4PB60t7ejtraWLSuy1tPpNKLRKLegTSaTsNvt3HI0Foshl8tBr9cjHo9zEhQdMOjgQVnNlOFf3os+Eolgy5YtWL9+PXbs2MHJT0eKkNWJ4/3ktXyi3Be/+EWcddZZHP+WZZn/GQwG7N+/Hy6XCxqNhlvVUjgpEolgaGiIe3ekUikYjUbuNNff38/fAfIEkYI3GAzwer1wuVwIhUIIh8MIBoPYv38/zGYzHA4HstkshoaG4PV6eWIdPXcikcDIyAiMRiOsVitkWYYkSejv74ff70dvby9efvlljIyMcGfHI2EqyOv0M2kPQbU0JTgSrr76amzYsKGqmi4I3h+ykKncjRKN6G8AeJoWxbbLR3VSsl2hUIBOp+OypOHhYc6mJ+uDrgMOuPLj8Tj6+/u5tpnuS/HM8mE35W1wabOn+H55Mt7u3bvx3HPPoaenh0vkhLxOfd7PGi2Xg3w+z0mX5A2iio18Pg+Xy8XyJkkS0uk0tFothoeHUSqV4PP5UCgUUF9fzw1tIpEIhoeHWV6pSoOa45BLft++fbwmkkdqjON0OtlzS3XwiUQCiUQC6XQaZrMZLS0t0Ov1CIVC+POf/wyDwYCXX34Z/f39bOWXh62mgtI+Ek4IBQ8Av/3tbwGg6q34UqmE2267DS+99BL2798/2csRjDPpdBrbtm2DoiiYP38+K0pSxDRIpnyyFyl3iieSgiULXaVSIRgMIpFIwOFwQK1WI5/PIxqNYv/+/RxLp6Y35ZYS1ddTRjLF2knZl2fSAwcOCtTadnBwEG+++SZ27NiBWCxWdfHLE5mxKDJS5OvWrUMymURXVxfq6upgtVpZqQJgeaXSS8pqp8egBE9Jklihp9NpVvDkCUokEhXeLGrQ5HQ6kcvlEI1GWcaprTPdn/rXJ5NJhMNhDA8Po66uDh6PB319fdi8eTM2b96MZDKJnTt3IhqNcujpaJgqw5NOGAX/5z//GbFYDLNnz8bChQsnezlHxJYtWzgztVAo4Pvf/75oDjJNSafT2LFjB7LZLDweDxoaGlixliet0e+0kVJJW/mo2UKhwDXuiqIgEAjAYrFUWOf9/f0cq6TuYNQ0pDw2T96AQqFQ0VqWOu0Vi0WkUikMDQ1heHgYfr8fe/fuxaZNm6rO6hGMDVLwGzZsQH9/P0KhEBYsWICZM2dyxQYpZ+BAbgiFeEguSd4sFgs3VtLr9dBqtWw9U6fGSCQCq9WKoaEhnkyoUqkwMjLCde6lUgkWi4UbNxmNRthsNsTjcQwPDyMSiSAcDiMQCCAWiyGRSGD79u3YuHEj9u7dC7/fj1wuxzJ78IjcauOEiMGX43A44Pf7K7puTRVokAIAdmkBwIIFC7B169bj8pxV/PFXFUcqqyqVChaLBV/5yleQSqXY/U2d7ijDnqz08hawKpWKy4Uo0a1UKsFqtaKlpQUdHR1wuVxIJpPYtm0bP04ul0M4HOZZ3TT7nTwElOxHP1MTnmw2i+HhYWzfvh1/+MMfjlt2vJDViePghMnDUV7FIcsyFi1ahI9//ONoamripM6BgQFu/0r9FsjiVhQFBoMBPp8P0WiU4/YqlQpbt27l0rt4PI5kMomWlhZs3LgRdXV1aGtr40TPefPmwev1wmg0olgsYmhoiDPtaagMJd+RR+Hhhx9Gf38/542MxcN0JMp+KsjrCafggQMTu7Zs2YL29vZxXtHRMzw8jObmZq69fPHFF3HRRRcBwHEdp1nFH39VcbSyqtFocOGFF6KlpYVj75TNS8o8Ho9zxy6azy5JEh9i6TBA2fZutxsOhwM6nQ6BQICz9WVZhtFo5GS+RCKBeDzOZUeDg4MYHh7G8PAwt5ulpjr79u2r6Kp3PBCyOnGUy+v7KbXyeL0kSWhtbcUll1yCU045BdFoFKVSCV1dXdDpdNzdMJvNIhQKQZZlOJ1OnvMej8d5rOurr76K5uZmeDweZDIZbNy4ESeddBJnuvf398Pj8bCr3W63w2Aw8CHV4/Fgw4YNuPvuu9HS0gKVSoUdO3agu7sb/f397E0gxipfY1XyU0FeT0gFDwCLFi2CwWDA/Pnzcc8994zjqo6cNWvW4D/+4z/wj3/8A4sXL4Zer0c4HD5uVns5VfzxVxXHIqsulwsWiwVNTU1Yvnw5LBYLJx2RO52SnMrnr1PmMW1INC1Op9PxZDqyrChTWafTIRQKYWBgAIODg/D7/ZyoFIlEEAqFMDw8zJn05Vn0xxshqxPHscir0WiEx+PBSSedhGuvvRbZbBZOpxN6vZ69QG63G9u2bUM8HueSN41Gg97eXhSLRTQ0NLDs0rCXgYEBzJs3Dy0tLXA6nZBlGeFwGLlcDo2Njcjn8/D7/TzSeP369di0aRO2b9/OzZoocY6+C8dTpqaCvJ6wCp5obW3F5z73OQAHEvC8Xu8xP+ZYuf/++5FOp7Fx40Y8/vjjE/a85VTxx19VHKusajQaOJ1Onlnd2dkJo9HIipumwdFGRpO6qFxNrVZXuNvL46PlYaFsNouBgQH4/f6KhiE0t53+TQZCVieOY5FXSrz0+Xw477zzAAANDQ0wGo0wm83o7OxkOaLcEaoKodwiklk6ONLI1vr6euzYsYP7NVBbW6PRyAcBGqC0efNmDA4O8sCk8kZQE8FUkNcTXsGX87vf/Q7z5s3j32fOnHnUz9HT0/OeVo2iKFi6dCkikchRPf54UcUff1Ux3rJ60UUXob6+npt8kEVCcXpy11OsnAZ20IQtAJxNn81mkU6nkUgkEAwG4ff7WYnTIcDv91fcdzIQsjpxjKe8arVadHZ2wmQywWazYeXKldiyZQu6urq4Ph4AgsEgPB4PNBoNQqEQdz50OBzweDzwer1Ip9P4/ve/j3feeQelUgnz589HLpfjZl8A+IBKlR4TqdTLmQryKhT8YVCr1RzLORoWLlyIt956a3wXdRyo4o+/qjhesqpSqXjjdLvdmDFjBmbOnMm9tqm7V3lPeACcGLdlyxZs2rSpYoPU6XScjU9TuaYCQlYnjvGS18PV05922mn4yEc+gtraWuTzecTjcfzzn//E0NAQNBoNZs6ciSuvvBIDAwPsSYrH4/jjH/+I7du3I5PJsHxSOVu5Ij94boJQ8FXI8a41tNlsR/0c8Xi8Kup+q/jjryqOt6yWd7aj+uPyDGei/POmevZqkFNAyOpEcrzllUo+KYdDp9Mhn89zu+V4PM694mmyITXVIct8qjMV1igU/AlOFX/8VYWQ1WNHyOrEMVnySt0ayycZTrXOh2PtOT8V5PWEaXQjEAgEgqlNuTdpqjaYoXLAakD1/pcIBAKBQDDxkDKdagp1Kh48DoVQ8AKBQCCYchycMDfVlHw1IBS8QCAQCMaF46WEJ6vUrdoRCl4gEAgE48LxVMLCgj9yhIIXCAQCgeAQVPuhQih4gUAgEEx5JiMWfyiPRDUpfaHgBQKBQFDBZCux93r+yY7FT/bzHwlCwQsEAoFgSjGW8bSC90coeIFAIBCMQijS6kcoeIFAIBBUcKg5BlOFanKRTzaiVa1AIBAIKtBoNOM2iOjg3u2HakF7uLa0Bx8wxqrcDx6wRN3wxlJPf7hDzXutv/y+U6nFblUPmxEIBAKBQHBohIteIBAIBIJpiFDwAoFAIBBMQ4SCFwgEAoFgGiIUvEAgEAgE0xCh4AUCgUAgmIYIBS8QCAQCwTREKHiBQCAQCKYhQsELBAKBQDANEQpeIBAIBIJpiFDwAoFAIBBMQ4SCFwgEAoFgGiIUvEAgEAgE0xCh4AUCgUAgmIYIBS8QCAQCwTSkqufBH25ur2DsiGnBE4OQ1WNHyOrEIeT16JEkCSqVCoVCYbKXIix4gUAgEAjGC0VRpsxhVCh4gUAgEAjGEaHgBQKBQCCYhggFLxAIBALBNGSq5DAIBS8QCAQCwTgiLHiBQCAQCATHDaHgBQKBQCCYhggFLxAIBALBOCJi8AKBQCAQTENEDF4gEAgEAsFxQyh4gUAgEJxwTBU3+vFEKHiBQCAQnHBMFTf68UQoeIFAIBAIpiFCwQsEAoFgSiBJ0gnhOp8oqnpcrEAgEAiqm3KFrlKpKm6fCiNXqxmh4I+QD3zgA9BqtaNu37VrFwYGBiZhRQLBoampqYFWq+UNtFgsolQqIR6PI51OT/LqBIJ3UalUqKmpgaIoKJVKKJVKMJvNyGQyiEajyGQyk73EqkRSqjjTYCJdOZIkQa/XY9++fXC73aP+ftNNN+HBBx887P2n6oZaxR9/VTHRbkeNRoPLLrsMdrsdsixDkiREo1Hkcjm8+eab2LVr16j7kCyUSqUJXetYEbI6cahUqgl9v3U6HS699FLkcjnE43FkMhl0dXUhHo9jw4YN2LVrF0qlEq+rGmRhKqxRKPgx0tzcjF27dh3SegcObIrFYvGQfysUCnC73UilUsdziUdFFX/8VcVEyqrFYsHVV18Nk8mEdDoNRVGg1+uRSqWg0WggSRKKxSLS6TTy+TxyuRxyuRyy2SySySReffXVKankhaxOHGq1ekJkQKPRwGAwoKOjA5dccglCoRBCoRByuRyWL1+O3bt3o6enB0NDQygUCmhoaEAymUR/fz/6+/uRSqWQzWYhSRIrfkmSpoT8TgV5FS769+G+++7DqaeeCp1Od1jlDhw48ZbHj8rRarX4+9//XiF0iqLgnHPOQTQaHfc1C05MVq9ejcbGRkiSBFmWYTabYTKZkM/nkc/n+We9Xg+1Wg2NRgNFUZDNZqHX6yHLMvL5PDweD3K5HEqlEsdBn3/+eeTz+cl+iYIJ4ngrSIPBgKamJtTW1qK5uRkXXHABnE4n1q5di3g8Do1Gg76+PvT19SEYDEJRFPh8PlgsFsydOxdqtRqpVAp+vx99fX2wWCyIRCLo6+tDPB5HIBCYEkp+shEK/jBIkoSbb74ZK1euRFtb2zE/3oIFC0bd9m//9m9s1SeTSfzkJz855ucRnJiceuqpaGxshNvthqIoHLOUJAkajQaFQgEGgwFqtRoqlQqSJMFoNKJUKkGtVsNsNsNisaBYLPLtxWIR2WwWuVwOs2bNQiqVQqFQQC6XE/kmgveFrOpDcdFFF6G1tRV6vR6lUgmhUAiJRAJGoxFOpxMDAwPYvXs3du/ejWQyCbfbjXnz5kGn08FsNkOj0cBms8HhcMBut8PhcCCXy2F4eBg7duyA3W6HWq1GJpNBIBBAMpk8IRW+UPBltLe3w2g0Ajhgkd966638+/Hg61//Ov8cDAbxt7/9Ddu2bROWkuB9cTqd0Ol0kCQJarUaH/jAB6DX65HL5bjUiDY0UuIazYGve6FQgKIokGUZxWKR3aSyLAM4EA9Vq9XI5/NIpVLI5/M45ZRTkEgkkEqlEIvFkEgkEI/Hp4QbUjD1ODgkVVtbC1mWUSqVkMvlcOmll6K2thaRSAR79uzBjh07oFKp0NTUBKfTiZ6eHvj9fmSzWQCAyWRCR0cHJElCMBhEPp+HRqOB1WqFVquFxWKBLMtobW2FSqWC2+2GyWRCLBbDtm3b0NPTw491InFCx+AlSapwq69btw6LFy8+1mUdEzNmzEBfXx9nkx5vqvjjryrGQ1bLuf7669Hc3Ay9Xg+j0Yjdu3fD5XJBrVYjm80im83CbDazBU5ZyYlEAjqdjpU9ANjtdgDgJKZ8Pg+1Wg3ggHyYTCZIkoRYLIZYLIZwOIx9+/bhhRdeYA/URMiRkNWJ41jllfbVUqkEnU6H+++/HyeffDIkScLevXtht9uRyWRQKBTYU9TT08OZ83v37sXg4CBWrFgBv9+PRCKB9vZ2mM1mJJNJXh/9rCgKVCoVSqUSIpEIMpkMHA4HMpkM9uzZg2effRbpdBrFYpHj9Mc7WW8qyOsJreC///3v43Of+xz/bjQaDxtHnyhSqRRKpRLWrFmDSy655Lg/XxV//FXFscrqFVdcgbPOOgupVAqRSAQOhwMA2KUeDAYBHEiOkiQJyWQSBoOBn1ulUkGr1SIajfJacrkcDAYDrFYr9Ho9u/JjsRiKxSJkWWblXigUkEgk2AoqlUrQarXI5/PYvn07fv3rXx/T6xsLQlYnjmOV19WrV+Oss85CNpvFb3/7W1x66aXw+XyQZRm1tbWw2Wx8EKUkuUwmA4PBgHw+j5GRERSLRQwODrIsWq1WyLKMRCKBRCKBTCYDtVoNt9sNjUaDbDaLdDqNaDQKn88Hk8kEk8nE8flkMol9+/Zh48aN+Mtf/gKtVsverOPBVJDXE1bBP/LII1ixYgWamprGcUXjRzAYxGuvvYZLLrnkuFryVfzxVxXHIqsXXnghFi9ejMbGRhSLRSQSCU6QI6s7mUwCAFtElEhXKBS4WYjBYKiIRapUKsiyDIPBAKPRyEl2lJlMf6f6efIEqFQqZLNZmEwmKIrCG+fDDz887S2iE4VjkdfPfvazmDdvHux2O+LxOKxWK4xGI1KpFFKpFCwWC6xWK2w2GwqFAlKpFIrFIrRaLYrFIvL5PAqFAuLxOAqFAocsKTeE/k5hpnw+D51OxyV0qVQKkiTB5XLBYDBApVJheHgYJpMJGo0GyWQS3d3duPvuuznMRBb9eO61U0FeT7gYvCzLuPbaa3H++efD4/FM9nIOi8vlwsqVK/GZz3yGBWVoaAhPP/30JK9MMFGo1WrMmjUL8+fPh8fj4fI2jUbDbnS1Wo10Og21Ws1ycvD/ANgNSpsgbWTl1j3F9Ol64N3yT9pkyXWv0+kAHKgQcbvdqKmpweDgILLZLPL5PCKRCDZt2jQB75JgqqDVamE2m3HWWWfBZrPxobO5uRmZTAbFYhGpVAqhUIhzRMg7RAdW4EDpHCXI6XS6iuY3mUwGkiRBq9VWhJHoMEq3p9NprmwqlUooFAqIRCKcazJ79myceuqpSCQSyOfziMVi2LFjx6S9d8eLE0rBG41GdHR04IEHHpjspYwJWZZx//338++bNm3Cxo0bAYA3U8H0RKvVwul04sMf/jAaGhpgMBgqlHQ2m4VOp4NOp0M2m4XRaGTlD7zbtY4oFAoolUqctawoClv7dFCg5Dpy1ReLRd4gS6USNBoNh7BMJhNyuRy0Wi2MRiPMZjO++MUvIhqNIhaLYdeuXejt7YUkSWyJCaYvGo0GdrsdixYtwowZM5DP55HJZGA2mxGPx1nZqlQqpFIpmEwmpFIpVszksicFrSgKdDode4wKhQJCoRBisRh0Oh0MBgMkSeLDbfkhtVgssuVP8ixJEvx+P+eU1NTUYNWqVdwHYu/evdi+fTvL/nThhHLRr169etpYwMuXL8ff//73Y36cKv74q4ojldWuri5cddVVbP2QtaPT6ZBOp3kDKxQKnP2ezWahKArUajX3bKCkOUquK7docrkcNBoNvF4vu+jJwqGYKCXVybLMG7DT6YTH4+FsemozarPZMDIygkAggFAohHg8Dp1OhwceeAA9PT3H/B4KWZ04jkReNRoNfD4fTjvtNPznf/4ndu/ezco4mUyiq6uLy9UikQhsNhuMRiMMBgMSiQRGRkbg9XrZmler1TAYDIjFYtDr9QiFQvD7/di/fz9UKhUsFgscDgfMZjOKxSK8Xi/0ej0fgLVaLbLZLIrFIn9nKM5P4QKVSoWenh4Ui0XU19djaGgI1113HfR6PfL5/GGblh0JU0FeTxgFf9999+HjH/84rFbrcVzRxBGJRHDPPffglltuOabHqeKPv6o4Eln9l3/5FyxatIhL4EwmE5eolVvRer0eOp0O4XAYiUSC64MBsCVD7vxEIgG9Xg/g3Tg9QQ1xDAYD9Ho9rFYrJzRptVqoVKoKq8psNnOnM6ox1uv1CAaD2LNnD+LxOCdPxeNxbo97rAdSIasTx1jlVaPRwOVy4ZRTTsGnPvUpnHLKKfjLX/4CAJzk2dzczNnt0WiUvUiURU9yBYD7N+j1evh8Ps4ZSSQS6OnpgSRJ8Hq9sNls0Ol0SCaTcDgcMJlM0Ov10Gq1nGhHljhZ9pFIBBaLhb1hOp0Ob775Jh9STSYTly6TF+BYYvJTQV5PGBc9bVrTBbvdDrPZPNnLEBwHqK7XaDQiEAiwG9JisbDCJktdkiTe3Mo3FJ1Oh3w+z5Y/ZSeTG542MKPRyO1sybLXaDTQarXQarVs1dPvFMMnVytwwHPg9/vh9/s5Yao8X4BK+QTTC8rfOP3003H22Wejrq4O/f39sFqtUBSFXeNmsxnhcJi9Q7FYjD1IJCNUhpnJZKDVaqHX65FMJrljHbWwpYZhyWQSyWQSsixzH4fyTqM2mw25XI6VNMXzi8UiYrEYotEoXnvtNZx++ukolUoYGRlBY2MjLr74YmzZsgX9/f0Ih8OT9daOGyeMghcIqgWymMlaz+Vy3CqZlDMAjqOTS748u5gs7HLXPrkeKUmJ4vSUQEcNcrLZLDKZDFtawAFLjdZDj08WeiQSwfDwMCKRCMfySbHH43G+TTC9IA9TbW0tfD4fh408Hg/Lmkaj4UZLJBeUcEdJcnQYJHmlnyORCJd8UjIccEDuSXkD735fKFZPXRrpd6r0oANvKpVCX18ftm/fjrPPPhs2m40Pq01NTYhEItzQaTxc9ZPJCaHgnU4nuyenEwaDAQ6HY1qcNAUHoNgkTX9Tq9Vs6UiSxJtUuQIH3lXOwLsJdvQ7lQFRrXD5XAVKdKJMeUVROEEqnU6zRUUJTzqdDiaTiZ8/HA4jEAigWCzCbDZzjJRq63t7e1EsFtk1OlWnKgqOnFKpBKPRiGQyicHBQWQyGbS2tsJmsyGRSCCdTsNoNLJrXJZlKIrCsXPg3XARlX6Wu+rj8Thn3AMH3Pb79++H1+vlgy41uikf9kUeqEKhwF4ovV6P7u5uaDQaJBIJdHd3w+l0YmRkBBaLBY2NjUin0wgEAqipqUEikUAoFEI0Gp0Srvaj5YSIwQ8MDKC2tvY4r2Zy2LFjB7q6uo76/lX88VcVY5XVW2+9FT6fj7N5dTodt58FwIlxZLmThUS30eeZy+W43SxlCpPFRN286P65XA4qlYotdJ1Ox3XK1OebWn/SY1CCVCAQQDQa5YY7ZrMZWq0WpVIJyWSSO5QNDQ1h586dxzRvQcjqxDEWeVWpVFi6dClOO+00WK1WDA8P44ILLoDdbkcul+PBRtSEiTxQ2WwW0WgURqMRiqIgHo+jt7cXiqLAarUin8/D7/fD4XBg//792LlzJxKJBFpbW7FgwQJ0dXVxXonVaoXZbIYkSbDZbHC5XJxQR2tUq9UIBoOIxWLo7u7G5s2b8dprr8HlciESiWDevHno7OxEMBjEyMgIzGYzCoUChoaG8Nxzz1UcpI+EqSCvJ4QFP52Z6DnjguML1f3ShhWJRNjtSKVA5P4kq5s2zXJrnhQ3KXOqMyYrh6weKkMCwM1GKB5PneuSySRyuRxqampgMpn4GiqNIndoeQ98ylimITdU6ieYHlBjmFWrVsFsNqO3txcbN27EaaedxnkblMxGyaDkHh8eHuYYO3BACVutVnazU+LeY489xjJdX1+P0047DXV1dRUDkgqFAoaHh2E0GpHP5xGNRjk85HQ6uf+92WzG5s2bkUqlMHfuXFxyySUoFApYv349/H4/du3aBbPZzIdhjUYDk8nEbv5qRSj4Ksfr9eK+++7DV7/6VeH+nAaUW+HFYhG5XA5ms5ljjqRI9Xo9Z6objUbeHMutBkqKo8PAoawQKisi5UyhgFgsBlmWYTQakc1mOSnKYrFw+1py9dN9c7lcRRMdel69Xg+VSoXm5mZ89rOfxcMPP4xcLjcxb6hg3KHDJmWtk7VuNps5wz2bzSKRSAAAd4+jOHx5oifJK4WmKOckn8/jwx/+MBswdrsdra2tsFgsAMBhpGQyiWKxiGg0ilAoxCEAr9eLeDyOfD7Ph4Z58+ZheHiYk0t7e3vR3NwMu92OcDjMnijKP6EDbCAQmBLW+NEwrRW8LMs4/fTTuU54OmKz2fDZz34W//7v/y4UfBWj1WrR2dnJ2cCkMFUqVUWTG2pKQ9n0tAGWu+jJUj9UYht5B6jpCGUZkxVPj0FKneroqc+32WyGzWZDqVSCw+FghU4Jf7QRlre2pTCC1WrFRRddhF/+8pdCwVc5KpUKTqcT0WiUPUEzZszgGvfy/A3qH09eH8r/KB8nSxVB5GEym80488wz+VBgMBgqqoaoHW08Hud4fXmJXalUQjqd5vAW9bLPZDJ8GBgeHkZTUxNkWYZareYmOuXZ+GazGcFg8IiT7aaKZ3VaK3i3240//elPwjUomPJYLBb827/9GytzajLjcDh4w6HSNo1Gw+708hGwlLBEFjTVrpO1XSgUuOSO4qGUNU8bGJW/0eZLeQDJZJJdq2TVeL1e2O126PV67lpGtc2k4KnrHlnz1ERHUL1QmWRdXR36+vogSRLsdjvmzZuHVCrFB0ty1Ws0GtTU1CAajSIcDle4vOmwabfbsWPHDgSDQRiNRsyePZt7MsyYMQNutxuZTAbhcJg72Gk0GgwPDyMUCmFkZIS9XTSaluL7sViMFT59P6iPPQAuw8vn85z/kk6nefDX0VjvU8Xin/ZJdmq1Gvv374fP55uAFU0OiqLA6XQiEokc1X0Fx5+xJi3dfvvt8Pl83HWObie3JQB2z2cyGZ4Il06n2RVOkAKnAwMpb7Ki6HBAj5PL5fg6KqMjJS3LMnfQo5p8o9EIo9HIGzoNt6HHzuVyfB+dTsddwm688UYuSzoShKxOHIeTV7qdlPrKlSvR3t4Om82GYrEIt9sNnU4Hm83Gw12AAzKbSCQ4Rk4ldSTXoVAIv/71ryFJEtxuN2bOnImrr76aD5DUdCmVSnEIIBwOY2hoCIVCAf39/ejr60MwGERHRwcSiQTsdjvH0cPhMHQ6HTweD2RZxsjICHsetm/fjh07diCdTmP+/Pns/crlcvj5z3+O4eHhI06yo1yUyWZaW/AAKuI8AsFUhjrDabVamEwmdm36fD6YzWZu2EFZ6mTZkzVTXkNMWe1ktdCmSvML6NBQKpUgyzIfKMhdWW6B03WkpNVqNdclJ5NJdqEaDAZ25Ze7OemwQI1MxPexeikfZBQOh2G323nyG3lKqYY9lUrxQC+Kb1OCJsW4qQXytm3bsHjxYnR1daG1tRX19fVoa2tj+aS8kHXr1mHRokUoFAoYGRnh9sz5fB5GoxEajYYPsZQcqtPp2CsVDAZZvjUaDQKBACwWC0477TS43W489dRTmDlzJlQqFUZGRvjQfKSz46eKjE97BQ8AP/zhD2GxWDBr1ixceeWVk72ccSUYDOLuu+/m+JOgunn99ddhsVjg9Xoxe/ZsGAwGDA8Pc7kbudQjkQhb4rFYjLPkyxvkUPcuSpajOnrq/qXVahGPx7lLHR2GKTGPbqPGJORO1Wg0cDgcnPNRXm9P/6dSKU6CCoVCyGQyyGQy8Pv97IkQVDeKomDjxo1QqVRobGzE2WefzUlw5OIOhUKsxEl2KFeDEvV0Oh18Ph8MBgPq6+tRV1fHFRt0yAQOlGY2NzdzPwfgwOExEolwFQm53amvPR1CacIcfUcymQxMJlNFA6lCoQC73c4esVAoVFGdUo2cEAqeam9Xr149rRT88PAwXnvtNdx5552TvRTBOPHGG28AANrb29Hc3AyLxcIT2nK5HPR6PXeO02q1XI9uMpk4xm0wGKDT6TA8PAy3283xSODdjnTlPeYp2Y42XsqKp4Q+8hyUZ+NbrVak02m29BVFQSwW49rmXC6HeDyOcDiM3t5eDA8PY3h4GH19fZP59grGEUmSsH79epRKJSxatAiXXnop16EXi0XE43EMDw/D6XRWTHYjjxIpY7Vajfr6em7iVN5itnySodFoRFdXF48kpoTUYDDIBwaCZLtQKCCTyfC6KAE1nU5zC2dKKh0aGoLH44FGo0E8Hsfg4CASiYRQ8ILJ4fHHH8eXv/zlyV6G4DhgNpvR0dGBbDaLuro6NDY2AgBbLrRBUdkRKV5S3uRSJAuFWtJStzqa7lVXV4dMJoOhoSEEg0HeiF0uFwwGA3fSo7a05GJXFAUOhwOpVIrj7Fu3bsWSJUvgdDphNBpRU1MDh8OB2tpavPbaa3jzzTcn8y0VjDMkB5SzIUkSPB4P4vE4y1h/fz9sNhsr23Q6jXw+D7fbjWQyiXA4jFwux/XqfX19rLxJrp1OJ3Q6HeeKyLIMp9MJk8mEYDAIr9fLpXKpVArxeBwul4u9V5SBbzKZOGnO4XCwF4y+Q5IksULfvXs33nzzTe6UN1Vc7keKUPACwRSFFHYqlWJrhSwcg8HAw2EAcAMcsqapvK08kzkej3PsXqfToa6ujkvg7HY73G43NBoNj+mkjY16iHs8Ht4Ed+/eDavVymM+s9ksmpub4XK52NIHgFgsVtUbpOC9ofh0KpWC3+/nmHwikeCEze7ubtTU1FTMOaDYN5WDSpKEF198EV6vF3PmzEFDQwO8Xi83q1GpVDAajTxUiUo7aYgYNVcqFosIBoOIRCLwer2s1ClkVV6RYjQa2TuVTqfR19fHpXwUpqp22RUKvoq5/PLLsWDBAiiKgosuuogbSwimB7RhUYZyOp3mhLryenaKzdNmS0qfSu5SqRR3u6NSO7Ko8vk8ZzqTRWYymdgqVxSFG5CQa9VsNqOzs5MPHLSBDg0NwWq1VnTNk2UZhUIBXV1dcDgciMfjePHFF6u6O5jgACRzxWIRDocDp5xyCidYZjIZGAwG1NbW8qyCUqnEzZmAA4e/fD6PVCqFXC4Hk8mEVCqFgYEB7Nu3D7Nnz+ZZ7tSNLpVKcXiJckry+TyHq6i0jh6LmtY0NTXh9ddfh91uh9PpZC9XIBDgaXaUYJrNZuFyubBw4UJs2LCBk0yrkRNGwZ977rm44IILJnsZ40pDQwMaGhr41CmYHrS1taGzs5O7faVSqYqGMuWd4shyoXa2tOlSmQ5tgGS5kwcAADeyKY910nPQNbThkaVFyXd6vZ5b5dJkMJvNxlYaHRyoDEqWZdTX1yMej1fESgXVCx0Iyc1NlRzAu5PmaMhXJpNhmSQ5ItmiwTSSJKGurg5tbW3wer0wGo0s4+Ulo3TYTaVS3ECnfJYChQTou1Ie189mszxgKZvNIhAIVDR0slqt0Gq1cDqdaGhowLZt26q6KdMJoxU++clP4uMf//hkL2Pcyefz6OnpqdoTpmA0CxcuxKmnnsqKOhgMci0wZSHTxlc+kIbq0cmtSONjqR7d5XKx1UMZ87Is8+ZHGyL9TvF7Sp6jw0KxWOSDAXkFSIFT1n0qlYIsy4jH43z4AMAbsmB6oCgKZ577/X7eh0hpkvVL7vHy8a/kzqdDYKFQwJw5c7Bo0SLU19fDbDYjkUhwYybgQD19KpXipjnZbLYiiZTc9jTohsoz9+/fD0VREAwGuSZekiQelpTP56HT6VBbW4va2louraNDcbVywij46crevXvR2dk52csQjCM2mw1WqxW5XA6pVAo+n487xJU3pwEOKPNMJsPZ8KSgKeOeSuDMZjNb4uVz5amMiBKlaMOl7GPK0KcNmpKnKAGKSCQS3BiHDgDFYhEDAwNsTUWjUaxZs2ZS3lPB+EIHNrVajcWLF2PBggUYGhrivBGSRZJTsvJzuRz27t2LwcFBHi0ryzKPFKaqj+HhYU4sBVChwMvnwNOhkw6aVN1B4SBqrvPKK6+gr68P/f39KBQKmDFjBs444wwu5QsGgwiFQrDZbDjjjDPg8/mg1+sRj8cn+J0dX4SCFwimGJFIBPF4HF6vlxuKWCwW2Gw2VrzlHeaoXp0sDbL2ywfQlCtjstapBK68x7eiKBzjJNLpNLs0ywfh0KZK5UaJRIK729H1ZrOZm/QcaT9vwdSmPC/DYDDAZrPBbDYjHA6z4h0ZGYHH42FlT1Uh1EuhpaUF7e3t7M6fMWMGjEYjTzI0Go2cK0JZ+Pv370c4HOZ8lPK+9KFQiDspjoyMYPfu3di0aRO2b9+OfD4Pl8uFlpYWzJs3D5FIBB0dHVi4cCG0Wi38fj+efvppvPrqq+wVqGb3PCAUfFXzl7/8Bffcc89kL0MwzpDLc3h4GAaDgbOID7a4yTIm1zqN5CzflMqtnfIOXuU5G3RAoGSlTCbDVhhBir/8Z2osQi5UKtujOPzIyAgMBgNisRj6+vrQ3d09Qe+g4HhDcidJEpqbm9Ha2gq1Wo1oNIpcLgetVgur1cpNlpLJJCezRSIRRKNRto5tNhvS6TROOeUUBINB9PT0YHh4GHv27EFjYyMcDgdXjVC/Bxoak0gkuJMeZe5brVb88Y9/RCaT4SEzHR0dfAChsbDbt2/HihUruKEOJQVSy1sKhVUzJ4yCf/3119HU1IQPfvCDk72UcWPXrl144YUXJnsZgnFm3759sNvtsNlsnKRECpgSjqgkjubGk4Vc7sosn81OLlNyn5cnLZWXApX3Gqd/5I4vv295Mh81xAHAsX9yzZpMJsRiMYRCIQwMDEzo+yg4/qhUKgQCAQQCAcyYMQORSIRnIGi1WlgsloohSdR29s033+RrrVYrdDodIpEI0uk0K+pEIsHDa4xGIzweD9rb2wGAHysWi3HYiHo0+Hw+7N27FxqNBrW1tXC5XDxClqYwUk/88sMpHXypiqTcPV+t5XInjIJ/4IEHMDg4OK0UvGB68sILL2Dfvn342Mc+VqHYKfPYaDQiEAhwQxGLxcK1yLSxUuOQckVOsUrKeD44q/lgBU7o9Xq+hjwAdJggC0eW5YomOoVCAVarlcd90gFAMH2gA+BLL72EXC6HG2+8kfvMk1Kn/gxUeSHLMmbMmIGXXnoJkUgEgUAAe/bswdy5czlZ2GAwwOPxIBAIYPfu3ejt7QUAnHnmmaitrUWhUIDJZOIudMlkkj1YkiRhyZIlmDFjBiwWC1wuF5xOJ8sj5Ykkk0nMmjWL12i1WpFIJJBIJFBfXw9JkhAKhfi1VqNyB04gBS8QVCO0iZLSBIA9e/ZgyZIlcLvdbGXo9Xokk8mKnvWkfGm8JpUTUWYz9QEvL4nTaDSwWq0AwINjNBoNwuEwWziUwEelcwA4w5+mxBWLRezevRsmkwn79u1DOBye0PdNcPyhAx81ljEajWhubuahSYlEgqs0TCYTd5NTqVS46aabEI/HsXnzZmzcuBE1NTXc3Y6myyUSCUQiEVitVhQKBbzyyitobW3F9u3bOe4fCASwfft2HmqTTqfxxz/+ESeffDLfFggEYDKZMDw8zJ4nr9cLn8+HoaEh7pfvdrsxZ84cSJLEngPyklWrgp/242LLMRgMaGtrw+bNm4/TiiaOyy67DH/729+OakRsOVX88VcVRyqrGo0GLpcLn/3sZ1FTU8OduILBIDQaDex2O1v3JpMJ+/fvh9ls5lI5ANzQhlym6XSae8VT4pIsy0ilUmy9G41GPgCU17lThj0dEmw2G/bt28cxTloPuTZDoRD6+/uRz+exadMmhMPhY45nClmdOMYqr3QANRqNaGlpwV133YVsNsuVGCqVCjqdDhaLhb04pVIJ4XAY4XAYmUwGpVIJFosFkUgEtbW10Gq1CIVC6OvrQyQSgc/ng8lkQigUwrJlyzA0NIRoNIpQKIRt27ahoaGBZymUN1dyOp08hY4G25BXi6YiUuKe2WzG8uXLsWrVKm7PTLkuR1smNxXk9YSy4NPpNPr7+yd7GcdEsVjEDTfcgNdee+2Ylbtg6lIoFBCLxdgCImubZm1TZjvNaQfALvLyITGEWq2uaHpDiXLUSpY2dGpIQrH18lai9DiU2Wy32ys6kZHFk8lk+Lm2bduGWCxW9clKgkNDyXbU6vUPf/gDT5WjgySFhCKRCMLhMHdYDAQC8Pv9CIfD7L5/++23oVar4fF40NbWhqGhIezYsQNqtRpmsxnBYJBLMmVZ5vh6KpXixk5U0tnT08Oya7fbWbmXl/D5/X5u1rNt27ZRfRooh2UqKOuj4YRS8MCBTfC5556DJEno6upCc3PzZC9pTOzatQt79uxBPp/Hf/3Xf4mRmycAxWIRe/fuRbFYREtLC5xOZ8WMdioHymazFXFxsrKpzIeUNWXblyfG0YGgPB5P8XngQOzeYDBwcxCKpweDQVgsFt4oKWO5VCpxQl0oFMLg4GDVbo6CsUNysGbNGrhcLsyePRu1tbWw2WwAgFwuh2g0Cr/fD5fLxTXmgUAAw8PDMBqNcLvd2LZtGzKZDGbOnImmpiZotVqEw2EUCgXo9XoEg0Huca/T6eB2u7nXQz6frxgtSzPpS6US7HZ7RddGCnvt2rWLPVN79+495Nz3apbfE8pFfzDf+9738PnPfx4AKmqBpxLUX/62227Dj370o3F//Cr++KuKY5XVSy65BAsXLsSuXbvQ1tbGm1R5P3ra4CjJrlAoIBQKsSveZrNxv261Ws096in5jlzzZOFTZrHVasVbb72FhoYGtpa2b9+OlpYWLp0r71b2+uuv4x//+Md4vG0VCFmdOI5GXsnS1ev1uPzyy7F69WrMnTuXB9F0d3djYGAAzc3NMJlMePvtt3miGw1F2rBhAwYHB6HT6dDY2Ii5c+eyYqZSTwDcrIl6MZR3WZQkiYcgDQ0NYdeuXejs7GTZLRQKMBgMiEajeOKJJ3jc7Hh7maaCvJ7QCp42SLJQaLOaKiQSCTidzgrLbLyp4o+/qjhWWaXH0Gq1eOCBB7Br1y7odDpYrVaMjIzA6XQiFouxK5OGbOzbt4+70dntdqjVai5VisViCIfDqK2t5exig8HAIz3J0s/lcvD5fOju7kapVEJ9fT3efPNNzJo1i+vzs9ks7r///uMmp4CQ1YnkaOWVDpzUG95kMmHJkiW45pproFKpMDw8zF3t4vE4N7DZt28fx8ZpQtxLL70ERVFQU1PDU+WMRiP8fj/nhZjNZrbOE4kEJ4M2NTWNmg/f39+PTCbDFSO//OUvkUwm2YIfb6aCvJ5wLvpyaDNKpVJYsGABnnjiCaxduxbPP/88nnzyycleHoB3M1UFAqoxv+WWW3DuuedicHAQfX19WLVqFWe8U7ObZDIJv9+PVCqFfD7Ps97dbjc/TiKRgNfrRSKR4E15ZGQEkiRxtnOxWIRer0ehUIDX6+WkJABsLVGjkeOp3AXVAckAKdFsNos333wTg4ODnDh65ZVXoqenB6FQiGP0JpMJ/f39bJXr9XqsWLGC5yhQwmixWORSufLaegAV5aHAATc93ScWi2Hz5s0IBALQarVobm4+IXKYTmgFTyiKgq1bt+JHP/oR9u7di23btuE//uM/cMstt1RkJU8EP/zhD7mkiGZ7CwSEoijo7+/HP//5T84k/t///V986EMfYkVMJUpms5mz4lOpFJLJJGpqagCAB9VQ6RvVvtNjUKc6UuLUkpQUei6Xwz/+8Q/eyKkMTyAgOaD/o9EoT3Azm82QZRmzZ8/mUBB1ptNoNDw/gXI6qBkNHWCppS15oigWTwdZyqSPRCLYs2cPkskk56JEIhGEQiHkcjkEg8HJfIsmjBPaRf9eqFQqvPTSS1iwYAHXBR8Puru7ud3jhg0bcPHFF8Pv9x+35zuYKv74q4rjKauSJOG6666Dx+NBsVhENBpFJpNBa2srd+5KJBLo7+9HR0cH17Ink0nYbDa21CkUVF7LXiqVeFONxWIcC12/fj02b948ob26haxOHOMpr+QqL08A/djHPsaHS2qbnM/nYTQaOaOeOsyRJ4AUvFar5ZkHVIIXCAQwNDTEFrokSdi5cyfPRyBrPRqNcovb4+1xmgryKhT8+/DMM8/gnHPO4d+PNk5/uKz3K664AjqdDnfddVfF9KSJooo//qpiImT1wgsvRHt7O2cbO53Oiglw6XQaXq+XY/ClUgnRaJTd+tlsFpFIBMlkEtu2beNEJ7vdjkQigb///e/I5/Po7OzEq6++etxfz8EIWZ04jpe80uMqioKTTz4ZdXV1sNvtmDlzJlcJmUwm1NbWIplMQpZlHltMo2K1Wi10Oh0MBgOcTidKpRL27NmDN954A2+++Sbq6+vh9/vZcJo3bx4effRRRKNRzhEAwB6E48VUkFeh4N8HytYk+vr64Ha7j+gxKH5JllE5ZAFptVpks9ljW+xRUMUff1UxEbJ6cIvZm266ibPq7XY7FEXB0NAQTCYT18CXSiX09PTwNLB8Po9f/OIXLJeUiEoldvQ8k5EXImR14pgIeSVlSx0UXS4XjEYjzGYzHA4HbDYbamtrEQgEeGyy1+vl4TAA0NDQgOuvv76i3LM8aY5yS8oz5CdKjqaCvAoFf4Sceuqp0Gq1OOuss3DHHXcAOGCFv9cgDUVRsHbt2imZLFfFH39VMRmySj21m5ubcdZZZ8Hv9+OVV17h2nhqfUt1xRqNhg8BU1EupuKapisTKa+khCmebjAYYLFYoNPpkMlkONOdGubQGGRy7ZdPKTxUU5rJalQzFeRVJNkdIVTfG4vFuInDmjVrKgYTCARTAeraSF3mwuEw9u3bV/UzrgXTC0q0o8x46stApW/lUxIJsv4Prl0/lFKdCop2shAW/AlOFX/8VYWQ1WNHyOrEMdnySqGhqej1HCtTQV6FBS8QCASCKUW191SY7AMSoXr/SwQCgUAgEIyVqXI4EQpeIBAIBIJpiFDwAoFAIBBMQ4SCFwgEAoFgGiIUvEAgEAgqmCpJYoJjQyh4gUAgEFRwuCQxofirC6HgBQKBQDAmpkp2uGBsCAUvEAgEAsE0RCh4gUAgEAimIULBCwQCgUAwDREKXiAQCASCcWSqJCMKBS8QCASCClQq1ZRRUuPBdHotR4IYNiMQCASCCqp5ittUYKpUGwgLXiAQCASH5Ggt3/L7HU/r+Ugfm8bQnigWfVXPgxcIBAKBQHBohAUvEAgEAsE0RCh4gUAgEAimIULBCwQCgUAwDREKXiAQCASCaYhQ8AKBQCAQTEOEghcIBAKBYBoiFLxAIBAIBNMQoeAFAoFAIJiGCAUvEAgEAsE0RCh4gUAgEAimIULBCwQCgUAwDREKXiAQCASCaYhQ8AKBQCAQTEOEghcIBAKBYBqimewFHAsnykzf44mYFjwxCFk9doSsThxCXo8eSZKgUqlQKBQmeynCghcIBAKBYDyZKofRqrbgBQKBQCCYSkwV5Q4IC14gEAgEgmmJUPACgUAgEIwjU8WKFwpeIBAIBIJpiFDwAoFAIBCMIyrV1FCtU2MVAoFAIBBMA6ZSiaFQ8AKBQCCoYCopqWpDURSUSqXJXgYAoeAFAoFAcBCTkSQ2nQ4VU+W1iDp4gUAgEFQgSdKEKPmDFSH9fvBzH+72qcpUUfDCghcIBALBKI63kqLHlySJDxT07+C/T9SaxoupchARCl4gEAgEFZCiPV4K9WDlfqi/azQaXkv5usrvf7jHnWymioIXLnqBQCAQHJLxUFQHW+j0uJIkQavVQpZl5PN55PN5aDQavn7mzJnYvHkzisXiIV32arUaKpUKarUaAFAqlVAoFCquPVSyW/khoPza8QxLTJWDhlDw78MjjzyCZcuWjdvjPfroo7jzzjsBAOvXr4fdbsdf/vIXfPnLXx635xCcmHR2dsLr9cJut6OlpQVqtRqpVAoqlQperxczZ86E0WiEyWSCWq1GJpNBNBqFXq+HWq3G0NAQHn74YcybNw+Dg4PYuXMndu7cCQCora2Fw+FAMplEb2/vJL9SwURxLErvUPF1SZJQKpUgyzI6Ojpw+umn48wzz0QqlcKrr74Kh8MBl8sFu93OsprP55FMJhEMBtHU1ASbzYZt27Zhy5YtyOVyCAaDMJvN6Ovrw5YtW6BWq9He3o5wOIxEIoF8Po9EIsHrONzrmSpW93giFHwZN910E5qamipuW7FixajbjoVLL70UTqcTkiRh3rx50Ov1OP/88/nLcMcddyAcDo/b8wmmJ6tXr0ZzczMMBgPS6TRisRhKpRLcbjdaWlrg9XoRiUSgUqmgKAoKhQLS6TR8Ph9sNhu0Wi1yuRwsFgvUajXS6TTsdjsuu+wymM1m5PN5zJo1C5s3b8aGDRsgyzJ0Oh00Gg0aGxsRjUYRj8en5aYoeJdj/XwlSYLH44HZbIZer4dKpUKxWITNZsOsWbMwZ84cNDY2sgVvsVig1+tRKpUQiUSQSqVQKpWgVqtZpl0uF2pqajBjxgzk83k4HA5IkgSdTgeTyQSr1YolS5Ygk8nA7/dj165d6OvrQ6FQQDweRyqVQqFQ4GY05Z6F6cYJr+BtNhvmz58PAPjMZz6Dzs7O4/p8J598Mk4++eSK2zo7O/l5165di6GhIQSDQWzZsuW4rkVQXZhMJnR0dCCTyeCiiy7C3LlzYTabkUgk4Pf7sXPnTphMJrS3t/NGqdfrUSgUEAgEsG/fPng8HnZtKoqCXC6HYrGIdDoNlUqFpUuXIhQKwWKxoKWlBT6fDwMDAygWizCbzTCbzairq4Pf78eePXv4/vl8frLfHsEUQpIk6PV6eDwezJ49G263G7IsQ5Ik5PN56PV6NDY2wm63I5/PQ5IkNDY2Qq1Wo1gsIh6PIxqNYmhoCCqVChaLBS6XC3v27IHJZEKpVILD4WC5S6VSrPjr6uowd+5c6HQ6jIyMwOPxYNu2bYjH4wgEAhgZGcHIyAiHCahufToq+RNWwcuyDJVKhVNOOQUvvPDCZC+H+c1vfgMAePHFF3HRRRchk8nwWoEDp81MJjOZSxRMMDqdDpIkYdasWfjxj3+Mnp4ezJo1C0ajEcViEQaDAWazGTU1NSgWi4hEItDpdKitrUU6nUaxWERDQwOGhoag0WhYIRcKBUSjUWSzWdTU1MDlciGdTkOr1UKSJNjtdrS2tsLlcgEAZs+eDY/HA5VKhWQyiRdffBHRaBSJRAKBQADFYnGUW3Y6bpqC90alUkGv16OhoQHnn38+li5dCr1ej2w2i3Q6jVwuh76+PmSzWQSDQciyDIPBgFwuh0gkglwuxzLY09MDk8kESZJgMBhY9sijlMlkkEwmkUqlIEkSzGYzXC4X389ms+HMM8/EjBkz8M477yCdTmNwcBB///vfkU6nOeZfLBaRzWanTIOa8eKEVfAbN25Ee3v7lOkZfDDnnHMOBgYG4Ha7sW7dOsyZMwcAkM/n4XQ6kc1mJ3mFgonid7/7HRoaGtjiGBwcxIwZM1AoFJBMJmE2m5FOpzFz5kyEQiHs378fra2tiEajkCSJrfWamhrIsoxcLodcLgedToeGhgaEQiF2iZZKJaTTaWQyGRgMBqjVauh0Olx11VVwOp182FSpVDjjjDPw0ksvobu7m3NJXC4XVCoVSqUSdDodNm/eLJT8CcbFF1+MU045BXa7HVu2bMHg4CDUajUSiQQymQw8Hg86OjowODiIWCyGbDaLmTNnIplMsuL3er3IZDJoa2uD1WqF0Whkl3s2m0Uul2MFbbfbYbfb+aAbj8dhtVqRTqdRKBSQz+dhMpnQ1dWFYrEIj8eDRCKBCy+8EGazGVqtFuFwGM888wxee+015HK5aaPoJaWKv31Hk6losVjw0ksvYd68eZBl+TisavwolUrYuHEj5syZA71eD+CARbRx40Z86lOfwltvvXXMz1HFH39VcTSyqtfrceONN+Kcc86B1WrlBKVEIoHBwUHYbDZ4PB7k83mkUinIsox4PI5IJIK2tjbkcjkUCgUUi0W2UFwuFyt4lUoFjUbDbtFCoQBJkpDL5aAoCtRqNUqlEnp6euDxeGC1WqFWq/lwGYvFkMlkoCgKjEYjwuEwUqkUBgYGsG/fPuzatQvDw8MIBoPj4sIXsjpx0KHwSJBlGd/61rfgdDpZppLJJBwOBzQaDVKpFDKZDFwuF0wmExKJBJLJJNLpNIxGIwYGBpBIJGAwGFBXV4d8Po9isQij0Yh8Po+dO3fCZrOhWCwiGo0ilUpxDonBYIBWq4VGo4FOp2PPlVqthtlsRm1tLZLJJMt+NpuFTqeD1WrlfJQ9e/bg9ddfR3d3N4LBINLp9FHJHH3Xp8Ih4YSy4Ds7O/HJT34SixcvnuyljAmVSoVFixZV3CZJEhYuXIgvfOEL+M1vfoMXX3xxklYnOJ74fD4sW7YMixYtglqtRi6XAwBOjKPNzWAwIJvNQqvVQlEUaDQa6PV6RKNRyLLMVoxKpWLrnZQ+cMAjpCgKu+2p5Igsd61Wi6amJk6wo1hlLpeD2WyGwWCAoijQ6XRwu90IhUKQZRlqtRqhUAjZbBaKonByk2D6UJ5hb7fbsXTpUvY0pVIpFItFuN1uTmIj2VQUhY2rUqmEZDKJnTt3QqfTQaVSQZIkZLNZRCIReL1eqFQqFAoFaLVaRKNR1NbWolQq8XdCq9WyggeAeDxeIb90KM1kMigWixzTD4VCKBaL0Ov10Gg08Pl8cDqdMJlMiMfjfHg9UqbSQfSEUPCzZ8+GRqPBihUr8I1vfGOylzMufOpTn0IsFhMKfprhdrthMBgwd+5cXHrppbDZbADA1gxlGvt8PsiyDI1GwxsbNQfRarWIxWJwuVwoFArIZrN8O2Ulk1JXqVSs5CnZSKPRQKVSQavVsvVEMdTyg0FNTQ2SySTnhNBmarfbAYAz7Sl7Wij46mGsSoqUY3t7O84991w+0FHSptFoRDweZ7mhg6harYZWq2X56+/vR2dnJyeA5vN5RKNR2O12ZLNZZLNZWCwW9Pf3c+UIJfLRQZPul8lkYLVaYTAYoNFooNFoOE5Pj09VJalUCkajERaLBRaLBR6PB0NDQ4jFYohGo0f9/ok6+AlkzZo1qK2tnexljDsUX50KriDB+PCJT3wCCxcuhM/ng06nQ3d3N3w+H1tLZElns1mkUino9Xo0Nzdjx44dbDmXSiUUi0WUSiWucSeLqFgscoewdDoNs9nMFr5arWZ3J1k8lNRJh4NsNstNRpLJJFQqFaxWK2RZRiaT4cNAQ0MDHA4HBgYGIEkSCoUCBgcHJ/ndFYwnkiShpaUFZ599Ntra2rhUTafTsZenUCjAYDBwmIjK3dRqNR8sNRoNOjs7WZlrNBo4nU5otVrs2rULarUaVqsVHo8H8+fPx44dOxAMBqFWq7F8+XL09fVBURSEw2EEg0E0NzcjFApx7buiKGzhy7KMQqGASCQCg8GARCIBSZI40e/jH/841qxZg2effRYDAwMAUNV77AkRgx8YGJiWCj6fz2Pr1q1YsGDBUT9GFX/8VcVYZfX3v/89rFYrAHBsUKPRcJw9Go2iqamJM9ZlWYbL5cLevXuhVqvZ+qYGHzqdjuOhdDs1HCGPAOV30Eba0tICs9mMcDiM/fv3c8yT4rLFYpGT7cgVajQa+TVQTTMdKpLJJHp6evDWW2/h+eefP+r3UMjqxPF+rWDpszj77LMxf/581NbWQqPRIBgMIhqNcsmaxWJBJBJhD5LJZEJdXR2i0ShsNhvy+TzC4TCXalIeiCRJWLduHUKhENxuN3w+HzweDzKZDHbs2IHa2lq0t7fD7XYjm81iYGAA2WyWPU+BQABmsxkqlQrpdBoWiwWFQgFGo5Hr7BOJBDQaDbZt24a+vj60tbVh3bp1KBQKWL58ORYuXIibbroJw8PDR6Xgp4K8TmsLvqamBo8//jiX+Uw3tFotZs6cyWV+t9xyC9atWzfJqxIcDQ6HA9/97nfh8XgAgLN/DQYDgAOfNSlSs9nMHerUajXC4TBkWWblm8vl2MImRU7WEyUikaVPrlQA0Gg0MJlMsFgsXJpXKpW4RAl4t0VoJpPheD0lLlHWPV1XKpU4u9nhcKCrqwtz585Fb28vXnvtNWHRVyFUySHLMrq6unDSSSfBbrez56empgaSJLGLXFEUBAIBToYLh8PYsWMHAMDlckGWZZRKJVbEqVSK/4/FYtixYwd6e3vh9XrR2NiIrq4umEwmpNNp+P1+2Gw2ZLNZxGIxLq8rFApcNkeWud1u5+9GOp2GLMv8t46ODtTU1LA3rK+vjz0At9xyC+666y709/dXZeXStFXwXV1duOSSS3DuuedO9lKOK0ajkV/jfffdN8mrERwNbrcbixYtwrJly7gjHXWfO7hXNsUw8/k81wqTlU89u8mlSIlM5K6n+Dq54ilmTwqekptisRi0Wi1bRFRSR5nwlCxlMpkAHFDwiUSC10HPRR4Fct3S4UWr1Y5LBYhgclCpVDCZTJg7dy6MRiNbw4lEAiaTCcFgkGXx4Eql8qYyAwMDUKvVkGUZdruda9qpEoQ6etpsNlitVuTzefT19bE3K5vNwmg0IpFIcK4Hlcm53W72BFBzHeDdAypwoL8EdXU0Go2QJAnLly/H9u3bOSR10kknYcmSJUgkEhgeHh7zeyRi8MeZZcuW4Tvf+c5kL0MgeF9aW1txwQUXQFEUthJIKVPMG3h3mAZtWGSBkDVOljslOVF9fKFQqHDTUzy/UCiwAiai0ShKpRKMRiPHR6n5DfBuW0+bzcYu0Ewmw1nT9I+ajtBz06GDDilTtf+E4NCQzJBy9/l86OzsZPc6NVjy+Xzo7e1FJBLhskyLxcIJoWq1Gg6HA+l0Gt3d3Zw8R4qZOiPmcjmkUik0NjaipaUFLpcLsVgMu3fvhs1mQy6XQzgcRqlUQiqVgtVqhdPphNfr5bBVKpXi5DqK2VNOCrntbTYbe5v0ej06OzvhdrsxODiIVCqFcDiMpUuXYtOmTUek4KcK01bBT5UTlEDwftTU1GDevHno7e2F0+lkJS7LckWmO1lFmUwGra2t6OjoYEVJ7TdTqRQnNymKwvF1KpPL5/McS6f7UpId/U4Zz2RtWa1WdvFTnL6hoQGRSAQmk4nd/lSHX14OBYA3dgohlGfjC6oD+izJNX/22WezG95qtbIrvlQqYc6cOdx0hjrUUSVFqVRCJpNBoVCA0+nkpM/h4WH83//9H2bNmsUDk2bNmoVCoYBXXnkFPT09mD17Ns477zzs3r2bQ0SlUgn19fX8HYlEIujq6uIkOuDAwXjXrl3QaDQIBALsGbjiiisgSRJsNhuXlL799ttYv349kskktFotdu7cCYfDAQAVh+T3i8lPhfg7ME0V/K9+9SusWrVqspchELwvn/3sZ3HmmWfyoIxgMMj1vZT9Ti5EypJvaWlBXV1dhRVMvb4DgQCCwSAnvZE7lDLrSZGT67J8oyyPYQaDQQDvTgArr4OPx+MIh8PQ6XSIx+MoFAqoq6tDIpFgj0EsFuNkPIPBgGg0img0CrPZDIfDgZqaGgQCAcRisYl/0wXvy8FT5EgOFi5ciLlz58JqtXIIx2g0wmAwwGQycftjktdcLsdud7LKC4UCZs2ahWQyyQfXVCqF5uZmZDIZ9Pb2cqImhXvcbjfy+TyeeuopFAoFAAcOGzU1NZxLQp6tH/zgB7jwwgtRU1MDg8HAh2W1Wo1ly5ahpqYGiqJg//79kGUZWq2WvQYA4PV6sX//fvT392NoaAjRaBTJZJJL/sp72E91pqWCt9lssFgsk72MCeerX/0q6urq8MADD0z2UgRjxG63sys7nU7DZDJBo9FUWOB6vZ6tZL1ez8q2HNo84/E4RkZGIMsyzGZzxWGhfEOin8map9gk/UweMIrTUyIUHSri8TiXv5FnobxRDrWqLbfijUYjdDodmpqasHLlSlgsFtHHoYqQJAkWi4Xj1UajseLzpuZGFF6igx4lvalUKpYJGg6Tz+c5d8NoNFZMjwuFQjCZTGhtbUUwGMRLL72Eyy+/nBU6eas6Ozv5Z6oKmTFjBmfuk+cKOCD3yWQSAHgQDVWaZLNZnq2gUqlgt9tRKBSQy+Uwc+ZMaDQaDA4O4vXXX68aJT/tFPwll1wyLUvixsLpp5+OYrGI/fv3489//vNkL0fwPrS0tHAjmXQ6zRsb1Q3ncrkK67k8+72cSCSCaDSKwP+PvTcPk+us7vy/dW/VvbXv1dW7Wt0tyZIsa7ExeMNYOGBj44Q4hAwQlgATkyEJGXjCZIZfSCCTkJCVzDMEByZxwkAwYMBgsMFgY2xsWbYs27KkbrVaavVa1bXXvVV1a/390XOObsmbbHV3Lf1+nkePre7qqldVb7/nPdv3LC9jfn6e+4JdLhd6enrg9/tht9tZkIby6JQrJwNN3wPOev7n5uvpQCfRGvP3G40G59cp306eGAA+SL1eL4dfl5eXRcFdG3Ku4aK6C5fLBUVRONROaRnqxiChG3Mahva0uZakVqvxVLhSqQS73Q6v18sRIQqH+/1+hMNhngEvyzJ8Ph8CgQCq1SqnkCh3rygKxsfH+cJKBp6q7SmMT/vTXBhK3SAA4HA4+HJdqVQwODgIu90OVVVx4MCBpt+Zdqar+uAlSUI6neY+4o3KwsICBgYGzuuxHfzxdxQvVBPy27/929i+fTv8fj9sNhuCwSAAwO12cyEQHXYk1EHDMmjEpsViQT6fRyqVwunTpzE3N4e5uTmuNn7LW96CSy65BD6fj/t+qaiI9OhLpRJfGmhet7nqGAB7RnTRIGNOlfz0eFojKeiZNegpAkD5/0qlgrm5Ofz+7//+ee1DsVfXjxfar7t378Zll12G/v5+KIqCVCrFNSPAilGkbgvKrQcCAZRKJR6Qlc1mUS6XuUXu3Ium2RPP5/M89pg87Pvuuw/j4+Po6+tDb28vRkdH8fTTT2Nqagr1ep3z6fl8HgMDAwgEAtzyaS4ILJfLXEFvHhlbKpW4sJUM/+TkJOx2OywWC7LZLO666y5omva8S/G57187iON0nQcvEHQCFosFO3bsgKIoiMViyGQyGBkZgcfjgWEY7C2QES8Wi9B1nQ8NOrTK5TKSySTOnDmDUqmETCaDkydPIpVKIZfL4W//9m+hqip6e3tx4403YufOnSxSQ7315M1QiJ68dDLI5AVRjzzJ52YyGeTzeW5TqtVq0DStSQqXFO7IqFMrHlVCJ5NJRCIRJBKJtjgQBc2YUzU0Vtjn8yGfz+OSSy7Btm3bcPjwYcRiMdaKDwaDWF5e5tz1wMAAUqkUbDYbfD4fC85QMWi9XufxxaSAl06nUalUoOs6KziGQiH8zu/8DpLJJOf/JUlCNptFrVbjC2cqleLwfKPR4AiXpmk8eS4SiXC0gfQkKApAF1gACAaD2LFjB6eXisUiDh06hMnJSR7K9EK0y2VUGPguJBqN4uTJk7jqqquwtLTU6uUIXgSfz4f5+XkoisJDZarVKhRFAbBiQMlzoNA3ecdut5vz3vV6HSMjI3jiiScAAFu3bsXTTz+NQqHQ5L089thjOHjwINxuN4c5vV4vi3zYbDbulSePhjx9q9UKTdOQSCQQi8UQCoUwOjrK4X/gbGufoihwOBz876OUA6UG/H5/U86+v7+fW54E7YHZsNP/X3HFFYhGo6jValhaWsLXv/51XH755fx5WywWlodNp9McblcUhSvRdV1nw0ptoHShTSaTSKVSSKfTyGaz2LdvH+8nq9WKcrmMO++8E0tLS9iyZQt27dqFXC6HHTt2oLe3F8lkEpqmYXR0FIZhwOFw8Nz4SCQCt9vN6QEaXmMYBotKybKM5eVlBAIBbj81DAObNm3if6Msy7jpppuwuLjIEYF2Rhj4LkTTNPz1X/818vl8q5cieAloMIuiKFBVlQ8+M1SlTIeszWZjTXnKx1NBU39/P2RZxuLiIkZHR9lTpxw5AB7iQT2+LpcLp06dYg+ePHTy4smLov+SwIjL5eLDmcbOkg45HaDUq2+u4qcLCR2YqqpiYWGh7Q/KjYg5BN1oNLB//36kUinE43GUy2UMDAxg+/btCAQCLKs8Pz8PAHC5XDzHnS54wNlhM+bpcTQSlka8UsFdLpdDNBpFOByG3W6Hrus4ePAglpeXMTIywlPfKNrl8/n4Yrm4uIh8Pg+bzYb+/n4eRgOsFKSS3gNdHGgNVLNCha40c57C+LVaDUePHn3B39V2pGsMvMvlwpVXXvm86uKNiK7ropK+jbFarVwISjKfFNY2e89UpV4sFrkHnYZlUL85HTyGYSAYDHKfPI3KpIEe9HzAWRlcqibOZrM8StPtdnNNAD2eCqaoP9/tdsPtdjflL6mqmgqtyGM3V99T+J/+63A44HQ6O1JAZCNB4jZOpxOLi4s8fCgUCmFgYIBV4xKJBAzDQLlcZkNJxXJ0EQXArZakdEiqijQdjuYbkFdN1feKoiAYDGJ+fh7FYhGJRIJTWmRwZVmGpmlcV0IV9B6PB7lcjiNVpDFhHp5ktVoRCoVY5In+LbR+KtB77rnnXjI8D7SPDkvXWMORkRHWZBcI2hmPx8M6DSTlWS6Xoaoq5yapUEnXdSQSCfj9fgSDQTauVIBHhxo9PhgMwufz4ciRIwiHw9xXr6oqCoUC97kbhoFisQifzwdJkjg8urCw0FT17nK54Pf7EQgEYLVaWdebvDOzFK3H48HS0hJkWYbb7UYoFML09DSH5CkUS0beZrPxaFlBe9JoNOB2u7F//37cddddGBkZQSAQgCRJeOaZZ3Dy5Enk83nOT9Oljy5v1DdutVqRyWQ4F79lyxYsLS3xQCSr1crtoqVSiacUUtunw+HA9u3bsXv3bh5etLCwgBtvvJENN118k8kkwuEwZFlGMplEPB7Hzp07MTMzg56eHkSjUXg8HtTrdSQSCZ7xYPbo6TLidDqh6zrsdjsSiQQOHz7MVfj0/rQzXWPgBYJOgTyFQqHQJDdbKBRYU568luXlZQwPD3OVcbFY5JwmhebJOzJLwV522WWYnp5GLpeDpmmIxWJcOUyyoS6Xi4fEDAwMoK+vD/l8HkePHmVxHareJyPu9/sxMDDA/dA0R5valmhiGBkBAByapyJBTdPQ39+PSqWCWCzW4k9D8EJQVEaSJNjtdkQiEbhcLrjdbv58o9Eoe9m5XA5PP/00+vr6EI1GWcudjHupVOIxsPT8/f39HBmi/ZPP51l8qa+vD0tLS1hYWMDi4iLuu+8+VsGr1+uIRqPYtGkT/76QJG0+n8fk5CS2b9+O8fFxDA8PIxqNYuvWrSy4A4AHzaTTaRZcotkM5sI/ikhs27YNO3bswJe//OXnzYloV4SBFwjWGVLWMk++opA15crJeEejUc5vU/iePHIAfIDSc9HX6vU6hoeHEYlEoGkaUqkUtwDRIUYHHbU6FQoFaJqGUCjEVcl2ux1+vx9Op5ML6qjqOJ/Po1KpYGlpCfPz8xgcHISu6wiFQnwQf+lLX+K2qlKphHg8zoVNVMAnaE8o51woFJBKpViYxty3vry8DE3TuDOC5sLTz1NqiYrwaP/SRdYwDBauIZ0Gujxms1ksLi6iVqtxuxtFfJaWllAoFPDoo4+yOh0VbNrtdlx99dWIRqMIBoPw+/3weDx8+aUWN6rip1kKiqLwTAXqHnE4HAiHwygWi3jiiSe4F59SX+1O1xj4eDyOT33qUwCAd7/73diyZUuLVyQQvDC6ruOnP/0pvF4v9u7di9HRUUQikab8u7koaXl5mdt7Go0Gcrkc5ubmOG9PCna9vb2shAeAdeLtdju3ttGhSx46ydOSJ0V9wjTVjqIIoVAI+XwebrcbTqeTC5ooh9rb24u+vj5omsayoLIsY9OmTRgcHOQQLuU6c7kc9+8L2hvDMHDkyBEsLi7iTW96Eyu8UWEa0ByVohA9DSiiPDrl2oGzyne0H8yCM9S6Rt0idPGlkbOU4qnX6xgdHeX+e2ClXsDj8SAcDnPlvMViQSqV4s4Tqm0hESZS0zN/jaJWtGbDMKDrOnRd59bPTqBrDPzy8jI+/elPAzg7Z3h4eLjFq2oNiqJg3759ePbZZ5uERgTtga7reOCBBwCczb2HQiEWogHAIXdd19kIUvFRqVTCyZMn+ZBMJBI8HINC++Z57yQeQiFyOnCpopkuCNTXns1mOaRPoc/h4WF4PB74/X709PTAarXC4/HwRWFwcBDhcJiFTICVfXj11VcjEonwvO++vj6eHLa4uIgTJ05gdnYWS0tLok2uDSERo8nJSdTrdVxyySUIBoM8uZB0FMiALy8v8z6ktBO1UZLcMl0mKfJE+9Tr9aJUKjWJLFFIv1qtQtd17h5xOp1wOp0YGRkBcDbaQINtKMJFBXiJRAIDAwOsVkeRCeDs7xrtWxLeof1IxtzlcqGvrw9jY2N45plnOuJs7SolO0KWZXzgAx/AF7/4xXVeUXsxNDSEubm5l3xMB3/8HcWL7VWLxYK9e/fizW9+M3u/Pp+PC9gymQx6eno4HN7T04NQKMTqWn6/n407tZ2R92Gz2TA9PY2FhQWeNOf1ehGNRpuKh+bn5zl3ScIi6XSaR9fW63Vs374dTqcTbrcbXq8Xfr8fw8PD8Hq9LIBjt9u5D5qK7ygtQJ5ZsVjkKV/Ly8uYnp6Gw+HAn//5n7/s4BmxV9ePc/crhdf9fj8GBwexY8cOXHPNNTyEBQCSySSSySR785Ik4ciRIxy2J6NM7ZPmMcKU4qExs+YhMKSZkM/nsXXrVv57oVDA8vIy+vv7MTo6ytK3jUYDwWAQc3NzvKfS6TT27NnDKQaLxYJ4PM4Kj5lMhutRSLRJlmWEw2E0Gg2EQiEoisK59w996ENIJBIvuSfbYb92jQdv5hvf+IaYJifoCG677Tbs3r0biqJw2JvazKxWK0ZGRlCr1dDb28uFcYZhYMuWLVz9Sx4H5Q/pAFxYWMDk5CS3oZH+O/UeW61WnpNNet/pdJq9ca/Xy9XymUyGIwGGYaBQKGB+fp69Nyqwo7596uu3WCxcQEUHKxXsbd26FRdffDGmpqZEe2ubYW5/BM6mdnp6erB9+3ZceumlkCQJuq6zkc5ms9w3ThPlxsfHoSgKstks14vIsoxgMMhpG1LFo2gWFYtSrQaFyX0+H2q1Gndi5PN5HDhwgOWefT4fwuEwarUa13tQZMjn8+Hw4cPweDysp+/3+7G0tMSDZex2O9LpdFMhIM2JKBQKrE//7LPPdoxuQ1f9VlksFtx999248sorOf8jELQrt912G3bs2MG5RQA8dAYAD8+gCmTqJbfZbKxXTz9DAjIUNnU4HPjhD3/IMrVU2EetTKqqspId9c1TVTxFAuiQN6t4GYaBZDKJWCwGXdexuLiIcrmMTZs2AThbHEhCITTkhtZHY0Zp3alUCvfee2/H5DQ3CmaRG7qQ7du3D5deeilGRkZY/ZC6OiwWC/r7+7G4uMgtbi6XCwA4bE7RH9oj1EFCUsz1eh25XI6FlUjgiS6RLpeLB8C43W5EIhGUSiX4/X6Wrw0Gg3xJyOfzkCQJoVAIPT09mJ+fZ2EmmkdPtSkWiwW6riMWi3H/Puk+lMtlLjStVCp4+OGHuUPghWinKXNdZ+Bf//rXb/hhM5qm4V/+5V84XCpoP0iL3ufzcZU8edbkCVOYnUKVNLGLit+oGM8cTqV2ulOnTmFpaQnhcJgHxJjDkFarlYdtVCoVSJIEVVXh9Xq5PYpaher1Og+aof5mn8/HbUSkU08eF4mAUFW/WejEPNimVCphfn4eBw4cENX0bQwVm1199dXYtGkTvF4vrFYrC8hQZwVFk6rVKgvjUAGd0+nkNjvSYDBPHqRLai6X431eqVS48I7W0dPTwyp5dMFdXl7G8vIyisUiF40CQCAQQCQSQW9vL4fXSXWRRHWog4QK7KguhYoIqduEeuNlWWYd+hfDHPloNV1l4AUr5HI5/N7v/V6rlyF4GcgrNitpUfEb/alUKnA4HMhkMiwAYlYFo+ehYijyXH7+85+jVCohm82yEaY+ZLvdDofDwZr05FHRIQeczcFS8ZHL5WJRkp6eHpb/LBaLHIonAR16PlmWm6IPtVoNmUwGLpeLi+6WlpZw9OjRlrz/gpfHrEV/+eWXAzhbuEZ672Twi8Vi08WOUkoulwuqqrKKnKZp3EUBgIWd6DkBcGEeqSDS70d/fz976WSAl5eX+TJM6SEA6O/vh9frRW9vL3K5HBt587TEc1X0/H4/i0jV63W+LFCIXlVVJBKJdXr3Lxxh4AWCFkGeNQAW9yCJTtLjzmazMAyD5Tfdbjc8Hg9OnjyJaDTKgzUoxB2LxTAxMYFYLMZVwnTwXnvttdi5cye3z5GMqFk8hLwU8yFtt9v5MK7X61hYWOAiKZpIR4c4RRTMLVD0b6PJX9FoFJqmNRVoCdoXkj+mdrNCocAiRtQDT956rVaDx+PhoTFUHT8yMoJgMAibzYZ0Og2Hw4FHH30UuVyOjbLP54PP5+MedSrGo7a7np4eqKrKXncymcTc3BxfhMvlMkqlEs6cOQNVVfnxNF2OLiGZTAaJRAKapuHUqVPo6enh8drlchmZTAbJZBK6rmPz5s3o7++HYRjIZDKIx+NQFOVlI04iRC8QbHDi8Tj6+vpYpIYORzJ66XSaZV+pF5hEOYaHhyFJEmKxWNOQl1QqhWPHjnFRXC6Xw/bt2/Frv/ZrrBlOIXPy6smgmwuHKOxKxpq058mjMrfbkQwt5fnpokDjYymCQIfz448/DlVVMTU1hXvvvbdVb7/gPCBDJcsyDh06xB0Q9DVVVZFOpxGPxzk9A4D3UrlcxsjICF9AnU4nTp06hUKhgJ6eHni9Xg6bU387edOUVqKU6+LiIqamprBz505WcszlcvD5fBgZGUGhUMDc3BwOHDiARCLBaYNwOIzNmzfzJbW/vx9veMMbEAqF8Nhjj3H73okTJ3jgDBX0bdmyBcFgEJVKBUePHsXRo0d5je1ixF8KYeC7jAcffBB/9Vd/1eplCM4D0r+mAS6pVIrD3ORBm9vfyDsmVTsysLVaDS6XC0899RROnjzJ4UpFUfDGN74Ru3btgsvlavLMzYYeQJN4iLnAiv5L/fVk5Cm3Snl4gvKilFeltiLKzdrtdoyPj/N87snJyXV7vwWvDtoXi4uL2L59O9xuN3dTZDIZjsQMDQ1xWxp54YZhYGJiAvv27eNqdJJPNg+fobGyVJBJNSEOh4MH3FDx26lTpzAzMwO73Y7t27cjHo/zJDqHw4FAIIBEIsEXg9OnT+PUqVMIBAIcYl9cXEQ8HkcgEODLq67rGB8fRzwex+LiItcCuN1unDlzBhMTEzh9+vR56TWIHPwa0Gg0cOedd+Itb3kL+vv7W72cliDLMuevBO1Lo9HA4cOHsW/fPvbOqWKXDDQp25FBpep38thpHCzlMynfTuNeI5EI9u7di6GhIQ6xUmjVPP6SxoGStw6czX2aC/1oTZQTpX8HPR+13gFnC+vocWaPhwqt6N8gaH8ajQaOHTuG3t5eHr1KKR5zjrxer8Pj8UCSJI42nThxAh6PhwWSaHohVccD4L1pzvnT9+nvlUoFbrebNRpsNhsCgQBisVhT/p+GGNGFgSbPaZoGv9/PUsqLi4us1UAXZtqTJFtrFoeq1Wo8PKdT6DoD/6EPfQj//u//jltuuWVDVtO/5jWvwac+9Sl8+9vfbvVSBC/Dl7/8ZYRCIXg8Hm5VI6148tIpBA6sTJ6jWdVULNdoNLC4uIgzZ84gFApBlmW+JFx77bXsSZ17KJ87PpYMPBlcytFTuNTcn0wFfef2AlMRHsndmpXKgLOqaNRi5Pf7sWnTJiwvL6/juy54NTQaDRw4cIDz3+FwGIqiwO128z6liYRer5c/d0mSEI/H8fDDD2N4eBgDAwOczrFYLJwbJwNPAjfUcVGtVtHf3w9JkqBpGnp6ejAzMwNd11EqlXD69GmoqoqBgQHU63WkUilomobe3l7Mz89D13X+/cpkMrDb7QiHw9i/fz+2bNmCRCLBXR+kmU+qjclkEg6HA41GA8PDwzhz5kzTvIdOoCuV7ADggx/8IP75n/95HVfTHtxxxx143/ved96P7+CPv6N4qb169dVX4z3veQ+y2Sw2bdrEh5zdbucwOLDi+Y6NjWFoaOgFnyeTyWBpaQnxeBylUomFRc7Ns9NhRs9PXjYAzltSFTwdtlQnQIcyDaZZXl7mAzCXy7Fhp15j6mOmCEAqlUImk4Hb7cbPf/5z/P3f//15v4dir64f5oslQUb5Na95Dd72trfxhZF04DVN43oNqoanGhNqZaOiOsrl2+12eDwevhhSWJ8MMrVyUotmT08PpqenceLECZw+fRqZTAZbt27F9PQ0FEVBNBqFYRgsVx4MBjmCRYqQVHxK+vd0wSC1vXg8jrm5OSwtLfHc+0gkgmPHjuFb3/oW6+2/3H5sh/3aVR68mXZ4cwWC88Hn82Hr1q3sEVMePplMAgCi0Sh72clkEoFAAE6nsym3LcsyYrEYUqkUDMPg0D4ADsGT9065TbvdzvlOOqzNfcDUskfynqRvr+s6e1zUWkcqZLqus4dGB2c+n+eiPq/Xi3g8jvvuuw9PPPFEy95zwUvzQsad9hDJxpL4Cxn5aDSKZDLJCnDASlTn61//Oi6//HIWlslms1wjAoCL3w4dOoRAIMBecyAQgN/v56LOcrmMRCLBIjh9fX3o7e3F4OAgcrkcCoUCqtUqF/VRkWcsFmPJ2Xw+j2KxiGg0ynUt9HtULBbh8XjQaDS4f95ut6Ovrw+xWIwVHDulwA7oYgP/8MMP47/9t/+Gz372s61eikDwkjz77LP453/+Z3zgAx943lx3AFzI1mg0kM1mcfz4cUSjUc4zkoY99cHTgWie6W32xOv1OpLJJJaWltDf349IJMLFc3Tgmb1vKoIyPx8JgJh73OnQozU4HA5omsbeII0HnZmZwcmTJ8Us+A7CXGsxOzuLBx98EL/zO78Du93eNBvd7/cjm81yumlqagqXXHIJ68RTpwh55eVyGblcDs899xyy2SxL3JoL+UhMp1arYW5uDul0GoqiYGBggGtLLrvsMhZhot8bTdOaCvbokkoFddQpUiqVOK21uLiIiYkJeL1ejI2NcS6+UChwCqqTRJmkVi9grZiYmMBXv/rVVi9jXXnqqafw7LPPtnoZglfImTNn8KMf/ajJ4wbQJLJBE7BIHCYWiyGZTCKbzXLukzwY8tjpQCUjTYaXPBvy9inXSQadogKkOEYXDl3XObxJY2sbjQZUVWUDTqkIKtgz5/pLpRIWFhYwMTHRNAhE0BmQ55pKpTAxMcGRJNKGN3dUUA1HsVjEwMAAF5BSERywEqnKZDKYm5vj7g/qZafnKRQKSKfTiMViWFhY4By7JEk8lElRFIyOjmLHjh3c1tbT08ODmWgWPFXuk4wyheVpr9NjNE3jSYp+vx8LCwt8sXgl71U70LUePLDiSWiaBpfL1TZv+GrTaDSg6zoA4P/7//4/3HPPPS1ekeDVQO1vdFCSt5zP5zn/SLlyRVGwtLSE5eVlSJLEFcXmFjgyrJR3Jw+FPBBFUbB9+3YEAgEkk0lUKhWEQiHYbDYOb5IqHcnpLi8vo16vo7+/HxaLBQsLC/D7/Txz2xzWp8lxZOTpoD5y5AgOHDjAIU9BZ2GOLtHnRyqI5GGTvrvD4cDo6CiWlpaa6kGopa1cLuP06dM4cuQInE4nh8SpXmNkZIQfMzs7i0wmgz179sDtdnOBKRlhYOUyQGc+ee4kGGUYBpaXl6GqKtcA0O8JrR9YqXPZtm0bV9eHw2HcfffdmJiYwMzMzHl77+1ib7q2yI6QJAnz8/Po7e1dhxWtP5OTk9i+fTsAvKp52h388XcU57tXf/CDH3DVL1XWl8tlpFIpNBoNbN68Gel0mvPoNpuNe4vp0KtWqzyak7wmYOUApLw4KdSR3ry5He8Xv/gFe2c0hIYK6+hwDgQC0HWdZUMpB0q5ffLSSqUSNE3DxMQEHn30Udx7772ves+Jvbp+vNh+pSiTy+XCe97zHuzcubNpTymKwoOIgJWQfSwW48EzlUqFL5pUaEc1HlQYShGkcDiMYDCIUqmEfD6P5eVlDAwMYGJiAm63G+FwmNc0Pz8Pl8uFzZs3Y2hoiBXnisUiFhcX+UJCKo65XA4LCwvw+Xw8MZEkbGnSXLFYxH/5L/+Fu0nOlYh+Odphv3a9gQeAiy66CJ/73Oe6boTsv/3bv+Ezn/kMpqamXvVzdPDH31Gc717dtGkT3v/+9+O1r30tG2AK0dfrdVa5o/whAJa21XUdbrcboVAI9Xod8Xi8qfe9VCrxNK9CoYBsNsu9ydTHns/n4fF4+GdJIIdEechgK4rCkqPmXCblQKkAzzAMHDhwAI888ggOHjx4QQOQxF5dP16oih44W0lvs9ng8/lwww03YHR0lC96Xq+X1Qspv06z1am/nAw6tVFSxwjtSSrUVFUVbrebf57GDkuSxLK3zzzzDBwOB89LCIfD6O3tbdLLL5fLiEajXNxH8xrod8p8WZZlGY8//jiOHz+OqakpTE1NcRQKOP89SBeCVtPVIXri+PHjuP3225HJZPDud7+71ctZFW6//XbceeedF2TcBe3HzMwMfvCDH6BUKuGXf/mX2bMhRTvgrAKeWaSGBGbIOyIhEdKEJwNMBxnNxLZarcjn800T5Ox2O3tc1EpH+Xvqh6cIAGnKBwIBAGcnadVqNSQSCTz00EN45plnMD09LaYbdhAvZsjo69VqFel0Gr/4xS9QLpexefNmeL1eZLNZrkSnP2ZhJDLuZhVF88Q22mPmscfAWWVEEvGiOfQ+nw8ej4enI4bDYY4e0ehZYGUfz83NsTgUzXUgIR1KdU5PT+PIkSOYmprC/Pw8v/YrvVy2y2V0Qxh4APje976HXC6HHTt2YN++fa1ezitmbm4OCwsLXDH67//+73j44YdbvSzBGvD444+jWq1i586d6Ovr4xY0amujimAATcVt5lAijeME0FSRbxYn8fl8LPQBgD0qClOSt0ZtTzabjYVv6MBOp9P8PTLqwEqP8cLCAn784x9jbm5O5Nu7CCrgBICpqSnY7XYYhsGjifv7+1nVzhy6B9A088DcrUGGnww8edWUK6chMOStU/GnLMvwer1QFAXBYBDhcBj5fJ73OABW1NN1nVtKdV3n6BNFtJaWlvDYY49henqa61JonZ3KhjHwAPCzn/0M119/PZaWlvhApPBlu0Lh1y9+8Yv47Gc/C4vFwr2mgu7l0KFDuO222/Av//IvbKBJpY7U7mgmdzqd5v5hKrZLJBLo6+tDPp/nYS8EFR75fD6kUin09fUBQJMnQ9X21ApHlwYq+KvValhYWMCpU6dgGAZqtRoKhQJ+8IMfYH5+HoVCgaMOYq92HpRSeilPniI5zz33HE6cOIFwOIzXvOY1WFpagtfrhd/vRzgcRigU4uer1WrcQkdtndSZYZ4PT6FzUpmzWCwIhUJ82aX20GeffRaBQADLy8vIZDLIZrPsyLndbh5IMzMzg56eHh5TTN0AJACVTCZx9OhRnDlzBolEgi/QF/r+tZoNkYM/FxpB+LnPfQ4f+chHVnlVq4emaYhGozh48CC2bt2Kxx57DNdcc03Txr9QOvjj7yhe7V4lz/vjH/84fv3Xfx3Ly8s4duwYLr74Yp7lHovFOGROFcbz8/MYGBhgSU9zOxDpgvf392N+fp5nulPVPKnbUW7eMAxIkoRKpYJsNouFhQXouo77778fMzMz0DSNDfng4CBcLhd0Xcdjjz22mm+h2KvryCvZr2b9+HA4jFtvvZVD9o1GA729vSxQA5yd/06GnfTpKUplt9ubpieaWy3pQhoMBjk073K5cPLkSTz55JM4duwYrrvuOuzevZsvxnTZOHPmDEeZHn/8cZw4cQKRSATZbBZnzpzB0aNH+d/ULWfrhvLgCXN7R7tTKpXwm7/5m3A6naz4JMKdGwc6FB955BH2oDdv3ox4PA5d13nkK1UHU1hSlmWk0+mm9jtSmqvX60in06jX65zjpB57TdOQz+cRCoVYiGR2dpYP6RMnTuDgwYPIZDJc5Qys5FHn5uaQzWabipIEGwPyslOpFB544AGMjo7iNa95DVKpFE92o+p40kOg/Dd59SRXq2kaSqUSd5PQvPh6vY5t27ax5gNVyZ85cwZTU1PIZrOIRCJwu91YXl5GtVpFJBLB+Pg45/QfeughPPXUU9zbTiktUn/sNjakgSceeOAB9PX14dZbb8U//uM/ol6v47WvfS2uvvrqdVvD9773PUxOTsLlcuG2227DP//zP7MACG26Q4cOrdt6BO3J5OQk788HHngAVqsVO3fuxJ49e2C325tCoMBKlIo0IKiYzuVy8ZAY6vP1er2oVCrssVNoPp/PI5lMIpFI4NixYxgZGcGJEycwOTmJU6dOQVEU6LqOfD7PhUxUKCXYWJBxB1acptnZWTz00EMoFApQVRXLy8usthgMBjE6OsqyySS0ROp2FLanC2IkEuHaEurqoJZRijYBK2171ArtcDiwdetW3HfffTh27BhPn1taWsKBAwcwOTnJraVUA9CtbGgDf/fdd2NhYQEXXXQR/vAP/xDVahW33XYbBgcHMTIysqqvNTk5icHBQW5zIu644w5861vfQigUwnXXXYc/+ZM/wcLCwqq+tqDzocEXV155Je666y7U63W8+c1vRk9PDwKBQNMIWbvdDqfTiUwmw5X25lGwZllas652vV5HNptFOp3GwsIC0uk0FhcXcerUKSwtLeHQoUOYm5vj4TLHjh173kQ5wcbEXDGv6zq+//3v42c/+xm2bt2KUqnEAjg7duzA0NAQt1FSaxydiySDTOqIfX19nD6ilBEAHp2czWYhSRIikQj8fj/v6UgkgsnJSTz55JM4ePAgR6eSySQ0TWuq8l+LaFO7XBo2ZA7+5bjkkktw+PDhV/26576l1WoVgUAA3/ve93Ddddc1PebWW29t6WjXDv74O4q12qsOhwO7du1CX18fhoeHsXnzZoyNjWHz5s0sEAKA1Ryr1Sr3IsfjcezYsYNVvp577jl85StfwfT0NGRZ5klc4+PjePTRRzE1NdVSeVmxV9ePC9mv5sJlm83GNR02mw2RSAQ33ngjVFVFb28vyuUyYrEYp5BIGdFqtaJUKsFut8Pr9bLmfSAQwIEDB7Br1y4MDw/jC1/4ApaWljAwMMA97pFIBP/6r/+KfD6PUqnESo+U7jr337gW+6pd+uCFgX8BZFmGx+N50e9/+ctfxq/+6q++4PcKhQI2bdrUlN+3Wq145pln8IEPfAC7du3Chz/8YezduxfASj/nuRtvPengj7+jWMsbPXWDnPsHAAYGBtDT0wOXywW3242+vj4Ui0UkEgnMzMxwmBIAC9nIstw0jS6ZTDa1N7UKsVfXj9Xcr+b5BJIkQVGU53UvNRoNGIaB9773vdixYwcSiQROnjyJ6667jnvf6/U6PvOZz3C7GwC+rJIUM3WakASteQjSC61rLfdUO+xXYeBfBfv27cPAwMALfq9arTbJcY6NjeFv/uZvcMcdd+Chhx6Cx+PB5s2b8cADD6znkl+UDv74O4pW7VWHw8HCIVRpT5KcNByE5HAbjQai0Sjm5+ebvI92KeoUe3X9WIv9+lLPSZ/t8PAwvF4visUiCoUC+vr62BBLkoQjR45wnt5qtcLv90PTNN6j56aeWrln2mG/bugc/Kvl0KFD5134Rj2W99xzD8rlMpLJJE6fPr22CxQI/h/FYhHFYvF5XzfPa280Guz1FItF1gQXCFaT89lTs7OzTY+Nx+P8/+eOJaZ9W61Wm6RkW23Y2wnhwW9wOvjj7yjEXr1wxF5dP9p5v5rX1i657heiHfar8OAFAoFA0DGYDedqG9G1LLxrBcLACwQCgUCA7jHsRHsLsQsEAoGgbWjn0L3g+QgDLxAIBILzRhj5zkEYeIFAIBCcF+YKdWHo2x9h4AUCgUDQxPkY727LV68m7XL5EQZeIBAIBIIuRBh4gUAgEDQhvPPuQBh4gUAgELwoqx1ubpfw9UZA9MELBAKB4CU51yi/kIf/QiIxayEcc+5zvtiF4eVe8+WGzdD3z0dD/8XW2Go6WqpWIBAIBALBCyNC9AKBQCAQdCHCwAsEAoFA0IUIAy8QCAQCQRciDLxAIBAIBF2IMPACgUAgEHQhwsALBAKBQNCFCAMvEAgEAkEXIgy8QCAQCARdiDDwAoFAIBB0IcLACwQCgUDQhQgDLxAIBAJBFyIMvEAgEAgEXYgw8AKBQCAQdCHCwAsEAoFA0IV09Dz4dpm528mIacHrg9irF47Yq+vH+ezXc+epv9x89Rf72Vfyc6+GtX7+F6Md9qvw4AUCgUDwijnXgL0Sg2Z+7FobwnYwtK1CGHiBQCAQCFaRdonYCQMvEAgEAsEq0i5RA2HgBQKBQCDoQoSBFwgEAoGgCxEGXiAQCASCLkQYeIFAIBAIupCO7oNfT2RZRn9/P/+9UCggmUw2PUZVVfT09AAAlpaWUKlU1nWNAgFhs9lgs9kgyzKq1SqKxWLT9y0WC2RZhs1mQ6lUapuiIMHGRJZlACvFafTnXKgyXezV80cY+PNkaGgIp06d4r9/85vfxNvf/vamx1x99dW4//77AQB79+7F4cOH13OJAgGAFeO+bds27NmzB319fTh9+jS+8Y1vND3G4XBgeHgYO3fuxE9+8hNkMpnWLFaw4XghQx0IBOB0OiFJEorFImKxGABAkiTY7XbYbDYAK3s7nU6jVqut/8I7EEujg69D69Vr+J73vAe///u/j5tuuglHjhxBKBRCqVR63qGoqioCgQAAIJlMolKp4Nlnn8Wb3vSmdVnnq6GDP/6OYr32ajgcRn9/PxYXF+Hz+WC329FoNGAYBi677DJks1mUSiVIkgS/34+5uTkkEgk4HA5IkoRnnnlmXdb5ahB7df1Y7f1qfj76HK1WK/r7+zE0NISTJ0+it7cXqqryY+12O44dOwaPxwO73Q5N0yDLMjRNQ6FQQKlUausoaTvsV2HgX+K5b7/9dtjtdmzduhU7duzAd77zHbz97W+Hqqrn9Rx33XUX7r//flx55ZUAgP/5P/8nhoaGcMMNN+BjH/vYmq39ldDBH39HsdYG/vWvfz2Gh4cxODiIvr4+KIoCwzDw6KOPolwu4/LLL8f4+DgAoFKpoFarwWazYXFxEdlsFocPH8bp06exd+9ePPTQQ5ifn0cgEEB/fz+efPLJNV37+SL26vqxmvuVnkuSJFgsFtTrddx8881YWFiAJElwuVyYnJzE0NAQHA4HZFlGrVaDLMtIpVJQFAWqqqJarSKTyUCWZei6jnw+DwCo1WrI5/OQJAmqqqJYLKJcLq/a+l8t7bBfRYj+HMiYWywWvPvd74bdbufvvfvd735Fz1Uul+F0OvnnJiYmsGnTJtx88834+c9/DgB4/PHHsbCwsHr/AMGGwel0IhAIoLe3F/v378fY2BhCoRB8Ph8ikQhyuRxHkq644goEAgG4XC7U63XUajVUq1WMjIwgn88jm82iWCzixhtvhCzLmJ+fh6IocDgcmJubw9jYGCYnJ5FIJFr9zxZ0EBaLBZIkQZZlOBwOqKqKer2O4eFhNBoNaJoGYMVbr1QqcLlcsFpXzFKj0UAgEEC9XockSVAUBaVSCXa7HYqiwOVyQZIkriFpNBqw2+2QZRmGYaBYLKJer7fyn99yhAf//wgEArBYLPiDP/gDfPKTn1y153053ve+9+Gb3/wmdF1ft9c008Eff0exmnuVvJyRkRHs3bsXN9xwAzZv3gxZllGv11GpVGC322EYBp599llYLBbs3bsXFosFHo+HPSRd1/lxTz75JObm5vC2t72ND9HJyUk8/PDDmJmZwYc//GH83d/9HX72s5+1zDsSe3X9uND9arFY+I/VaoXX60VPTw9CoRDK5TJ6enqaDHAymYSmaejv74fL5UK1WoXFYoGiKNB1HcViEaqqotFooF6vw263c1pJ0zTMzs6iWCzyz8iyjMXFReTz+Zbtm3bYr8LAY+XAzGQyUBRlVZ7vlfK1r30N73znO1vy2h388XcUq7VXrVYr/uzP/gzbt2+H0+mELMvweDwAVkLvkiTBarWiUqlA13XIsswVyg6Hg9eh6zrOnDmDsbExRCIRHD58GCdPnsQb3/hG1Go1WCwWJBIJTE9P4+DBg+jp6UEkEsHRo0dxxx13rMq/5ZUi9ur68Wr3K01uI89dURSMjY3h0ksvRaPRQD6fhyzLKBaLkCSJL6SlUgk2mw1utxsAoGkanE4n7HY7crkcisUiZFmG0+mEruv8/GTsfT4fMpkMlpaWsGXLFlQqFWiahqWlJUxPT6NQKKzm23NetMN+3dAh+j/6oz/C+9//fr71tYqbb74Zv/jFLzhXLxCcy9vf/nbs378fkiRhZGQENpuNQ+31eh3VahWVSgWyLMNisaBcLiObzSISiQAA4vE4otEogJWcZaVSgdfrhcfjQalUQiQSgaIoKBaLcLlc+MlPfgJd1+F0OmGz2fDTn/4UFosFlUoFw8PDOHPmTCvfDkGbYb4QSJKEgYEBDAwMIBQKYWBgAIZhoFQq8Z6VZZmNusfjQTabhcPhgM1me96etlqtcDgcfEGoVqtQVZUvrHShCAQCcLvdXHxnsVjg8/kwODiIycnJFr47rWPDGXiHw4E///M/BwBce+212LJlS4tXBHg8HoyOjrZ6GYI2gw7Kiy++GFdddRUuuugiVKtV9tAlSYLNZkO5XEalUkG1WoUsy+w5UK7SMAxOAVHoU5ZlWK1W9tbN3v3s7CyGh4cBAPV6HeVyGW63m8Ohp0+fFgZeAKDZsNtsNuzYsQOSJMHtdsPlcsFms7GnTYa40WhweN1iscBms6GnpwdWqxW6rqNarXJbXLFY5P3caDS4hoR+VpIkSNKKXlutVoNhGLzHq9UqGo0Gh+wpvL+R2FAGPhQK4YorrsBHP/rRVi/leSiKgmuvvZb/nkwmceTIkRauSNBKFEVBIBDAlVdeiauuugrj4+NwOBwolUqoVqt8CJJXXalU2DuqVCrs4ciyzBcBWZb5YkCh+2KxCKvV+rx856ZNm6AoCvL5PMrlMi666CJYrVakUim43W5MTExA0zQWdjp+/HiL3zHBemMOk5PI18UXX8yeN3VrGIYB4GwVPQAupKPnCQaDKJVK0HUd9XodLpeL97LZkDudzucZaavVCkmS+JJrNvj1eh1utxvRaBTVapUvrK3Mza8nGyIHb7fbYbFY8Na3vhVf//rX13hVq8N9992HG264Yc1fp4M//o7ifPcqGe1oNIqrrroKt912Gx9a5P1QMRGF4yk0D6x0bhiGAY/Hw1XwkiTxc1Duk9qVGo0GqtUqP25ubg4XX3wxkskkRwRyuRwf5PV6Hbqu49ixYzh48CDe+c53wmKx4Dd/8zfX8u0DIPbqenI++5UuigAwMDCAq666Cl6vF5lMBqVSCbVajavdrVYryuUy96/b7XbU63XIsgxVVXlvUhV8rVZDNptFo9HgSyoA/lmKDtCF1+FwAFjZ/7VaDblcDtlsFna7HX19fQBW6k4ajQaWl5fx+OOPr7k33w77dUN48JOTk+jt7eVNIhC0K5///OcRiUQgSRIajQYXzeVyOVSrVfj9fs5hAme9KHqs0+nkojvynuixxWKRQ/ySJKFWq8Fut/P/VyoVOJ1OxGIxLnYyDANer5dbkSwWC1RVxdjYGO666y787d/+LarVamveLEFLMBv/X/7lX8aWLVtQLBZx6NAh+Hw+blMDAJfLhZmZGbhcLlako+/TeUwtbYZhwOVyQVVVyLIMn8+HfD7Pr0cFeaR4Z7VaYbfbYbfbm0RvqtUqnE4nh+bpckqXZ6vVumFC9V1t4KPRKO655x709vZyTkcgaEfsdjve8IY3wO/3c767Wq0inU7D5XJxaJI8I/LmycMhb97sVdFjrVYra9KHQiE26IZhwGq1Nh2EqqpienoaxWIRoVAIw8PDfJBSrp/ynJdffjnOnDmD2dnZFr97gvWCjLKiKLj88stRq9Vw/Phx3mv5fJ49ckmSUC6XOR9ORpb2G3D2EhqLxbgmhMLtZOjpv41GoyktZbFY4HQ6YbVa+XwnaVtZlpHNZjlMn06nUSqVkM/nkUwmYbPZ2loFb7XoagOvKAouvfTSVi/jVTE2NoY//MM/xOc+97m2CPUI1hZVVXHNNdfA7XazsbZYLEin09xuRGF5c0EcsBLWp5ymOZxJzwOAPXwSuKHCO8pJZrNZZDIZaJrGF4vNmzcjHA6jUCgglUo1eT1U3UwFT0NDQ8LQdzm0r1RVRTAYRCgUYkNaqVTg8Xg4FURpIDLU1WoVtVqNC90o/UPtnJR6KpfLsNlsLFlL2g50UQiHwxzap8uCoij8mpSuootvrVZDsVhErVZjUR2/3w9VVTExMdHKt3Nd6FoDHwwGsX379lYv41UzPj6OT33qU/jRj37EN2RBd+J2u7F582ZccsklLOZBf8rlMnRdR61Wg6qq/Ic8IovFwqFPugiSx0SXAmDFwFutVpRKJc7TG4aBWq2GWCyGM2fOYH5+HrVaDaOjo9ybnMvlsLy8jFOnTnHoMxwOc6Efrb+vrw8+nw8nTpzg8Kyg+7BarXC73QiFQk2FcvR1KqyjdI4sy9y6Rl52pVJBuVzmPHylUmEtklKpBFVV4XQ6uS6EnpOeiwpFFUVpugzQ5UGSJN6D9XqdI1XASsqAagKmp6e50r5b6UoDL0kSbr31Vtx+++2tXsoF4XQ68dRTT2HXrl2ior5LsVgsuOqqq/CRj3wEdrudNbXJQxkaGsLk5CSCwSAXi6qqyv9PWt5UcESVxOVymQ9ACu3bbDaucLbZbBgeHub8vdfrxZVXXonLLruMn3dpaQmnTp2C0+mE0+nEkSNHEA6H8ZrXvAYzMzMYHR2FzWZDKpWCqqq4++678drXvhZHjx5t9dsquEDIYJ7790gkAp/PB6vVikKhwFXqlFd3uVxYXFxk9bqBgQHUajW4XC40Gg0UCgUsLy/D6/XyJYBa6WiscbVaxfLyMnp7ezlSRK+fyWTg9/s5DE8XWNr7siyjXC5zzz11lpCss9Vq5f08NjaGU6dOdfWFtCsN/De+8Q3cdNNNrV6GQPCy/NZv/RauvPJKDjWGQiGubgdWqoIHBwf5ECQPngw8ABa2oa+XSiWcOnUKyWSSvShVVdHb28s9whaLhQ9ByrPLsoxYLMbeP2mB//jHP8bx48dZaUyWZUQiEVYZy+VysFgs+MEPfsADQATdB138AoEABgcHsbi4CE3TuOedCjRpr1KHRiwWY9VFYCXi43A4OJxPFfZjY2McXic5ZJJdliQJmUwG6XQaXq+Xi/GAlfZnikZRHYA5ZWW1WuH3+xEMBjmF1Wg0cN1112F5eZlfqxs9+a408Ha7/bwnvgkErSQcDsPtdvMoTKvVCqvVikajwS1B1AJEBh4AcrkctwsBK9KeZGgB8PPIsgy73Q6v1wu3281FSsDKgZZIJLilTpIk6LqOSqXCoVBN0xCLxVAqleD3++FyuVAqlfiwLxQKKBQK6O/v5+pmQXdC5ypdKCnETga4UChwioly31RDQqFzWZb5MksXTMqfK4rChW80I8HhcHCqye12Q9d1qKoKt9vNxaj0HITX60WxWGyqrDenr+j37NFHH20S0ulGus7Av//972cVrk5mdnYW99xzDwAglUq1eDWCteD1r389wuEwhx+z2SwCgQAfVpRfJG+EvB2v14tnnnmGNbmBlRY46jl2u93c/0vheFIAI6PfaDT4ew6HgyMChmFAURT2zhcXF6HrOkKhEAKBAJxOJ4AVzyoWi2F5eRmxWAy5XA6KonAhk6B7oIgP7cVyuczRIUr5UFEdVcJTKyZFlsgQV6tVFAoFLoAzDIP3pblIjgpJqWaECj91XYfX6+VLAVXJU40SpbYoNE+/M3QRrtfrTRr17TBWdi3pKgMvSRL+/u//Hl6vt9VLuWCOHj2KD3/4w61ehmCNsFgseNe73sXjMx0OBxKJBHw+H8rlMve0kydOlfJ0qB47dgxTU1PI5XJspIeGhtDb2wsAiEQiCIVCyOfznMfUdZ37kIGVFiWv18tDPYCVXCb1wKdSKUxNTaFSqWDXrl1wuVxNfc6nT59GPB7HwsICZmdn8eCDD7bkvRSsHeZuDSpOMwwDmqbxniHPnNTnrFYrXwZKpVKTsdd1HblcDg6Hg4vtaH8CaBr5qigKstksK9zFYjEYhoFgMIhCoYBqtYpSqQSn08kRMCrMowsryTCHQiEO3ycSiZZORVxPusrACwSdBIUYKWQ4NDTE/bnkYZPn5Ha74ff74fV6cfXVV8Pj8XAF/aWXXopwOIyRkRGekR0MBmEYBh+0JJJD6l6kYU9hedLsprncpDk/MTEBh8OBX/qlX+LK+mq1ypECt9st0mFdjDl8PT4+zlXnpI1AFwBqWaP9AYCNNwD2oK1WKwYHB5umwwFoikbV63VWXKQWzlqthpGRESQSCe7sKJVKKBaLGB8fh9/v5yp9EoZyuVzweDwIBoP8dWrPow6Ubg7PA11k4Ldt24af//znrOIlELQrg4OD+NznPgfgbK7crKENgAvaJEnig7VYLOLkyZO47LLLoGkaa4DncjlMTU3hwIED2LlzJ17/+tdznzu1zxmGgWw2i3q9jsXFRVgsFuzYsQN+v59fk0Kl2WwWExMTmJycRKVSwZ/+6Z8CAPcW67qOqakplEolbNu2DU6nE1NTU+v6HgrWBxKT2blzJ7dJUmicDLjb7eY9TJdTCpVTtCiXy7GoEgC+SFL+3Ov1cmgdOKsvH4lEMDw8jFqthunpaQwODqJarSKZTHLFfSgUQqlUgizL8Hq9qNVqXGlPUbBYLMY1A+cOwOlmusbAW61WHo3Z6XzpS1/CV77ylVYvQ7BGkOdN6l8AmmZbOxwOOBwOeL1eDA8PY25uDrquwzAMlMtl7NmzBy6Xiz1tOuxe97rXYfv27Tx2c2FhoWkIDeU/aZhHqVTCvffeize84Q1wu938+ul0GolEAhaLBSMjI2z4KX+5vLyMgYEB9PX14b777sOBAwda/I4K1goKc1NqiCRmSTueDKl56AwVe5K4ksvlQiaTaeqPJy0GKq6TZZlz8xQNqNfr8Pl88Pl8PAMhk8kgmUwik8nw6NhYLAafz8e985QmIINOe9lisWBhYQEzMzMbQsUO6CID30088cQT+NnPftbqZQjWEDr8qFeXvAlqlQsGg1xLMj8/D03TOJ84MDDAoXjDMDA/Pw9d17Flyxb09fXBYrEgHo/zYA+a7KXrOgqFAqLRKDweD7cxUbiS0gXxeBzz8/OoVCro6elBMplEMBjkFjuXy8Utd+l0GjMzMy1+NwXrARWzUU0IFdZR6xlFoShUToaWWtjoOYDnt6Sdq7hIHry5eM/r9SKfz3OxHl0WdF1HIBDgAUoUFSAFvFwuh1KpBEmScOrUKczNzXW95050hYF3OBwIBAKtXsaqkEqlUCwWW70MwRqhKAo8Hk9TJTt5F+Tt9PT0cKHbU089hZmZGQ6PkpdCgh/9/f2IRqPo6elBIBBgZbAnnngCvb29HJ5PJBJYWFgAAFadk2UZb3rTm5okZ8vlMg4fPozjx4/D7XZjeHgYS0tLUBQFtVoNPp8PIyMjqNVqePbZZ0XVfJdDxpU8bNKDJ+U6auWkWQc2m43D5HRhXV5e5vZM+joZcfMoWI/H01SRb7fbkclkUC6X+RLh9Xo5KkX98rQ+KqKjdRiGwfrzR44cga7rSCaT0HW91W/rutEVBv53f/d38Zd/+ZetXsaqsG/fPuERdTG33HIL3v/+9zd5Qw6HA36/H36/H0NDQ4jFYpidnYXT6cTJkyfh9/tRLBbZI3E4HEilUigUCizzST9XqVTg8/lYSlTTNDbupVIJ27dvh91uRywWQzKZxL59+9DT09PUynTo0CHEYjEAZ/vrJUninmSqjv7DP/xDLC4utvgdFawF5OFGo1EMDw+jXq9DURQUCgU21GaFunK5zMVxHo+HBZn8fj/Gx8eRyWRgGAYb/enpaR6apKoqIpEIXzKLxSKWl5fhcDi4HY90ITZt2oRt27ahXq9jaWkJkiRx8am5YK9arULXdei6jnw+j0AggNOnT3d93/u5dIWB/+IXv4inn34a9957b6uX8pK8853vxLZt2/CpT32q1UsRtIgf/vCHOHXqFD7zmc9wmJyKltxuN+ccc7kcpqenEQ6H+UAirW1d19nIJxIJ7NmzB5VKBdFoFDabjQdruFwunvbWaDRwySWXIBgMoqenB6FQCP39/bjnnnsQj8dx7bXX4sorr8TU1BQWFhZYbrRSqSAUCuHRRx/F5s2b4Xa7USwWWfZW0N1Q7QZ1Svh8PpZAzuVy7DmToJIkSdiyZQsAcEpnaGgIPp+PQ/WyLCORSLCQDcnWAmcHJzUaDTidTpadpTVomoZsNot0Og273Q6/34+pqSkUi0U28FTkVygUWMUum82ytK0w8B1GNpvF3Nxcq5fxotTrdXzsYx/D3r17ccUVV7R6OYIWous6lpeX2cOgCmRqParX6ygUCkin09A0jXt1qRrZMAxW9aKhM4lEgg/XSqXCnv3hw4fxzDPPoFgsYnR0FCMjI3A4HJwXtVqt6O/vx+TkJL7//e/jySefxOjoKBYXF7n6fn5+HpIk8WxuqpwOhUKtfBsF60Q+n0c8Hsf27dtRLpd5n1JLJRls+kPfNwvMhEIhKIqCVCrFCoyBQACxWKxJ5KZYLKJQKABYSWWZJ9PRHwAoFAqc36foAQ2qoQvH0NAQC+Tk83nkcrmmC+lGMfRdYeDbnUajgRMnTmDXrl0wDAM/+clPXvSxIv/e/VBxGx04lHMEgHQ6zaNbS6USez00UIb6hSkkWSgUcOLECZTLZXi9XsiyjGKxiEwmg8cffxyLi4vcauT3+1mJrFgswmq1IhgMwu1248knn8Sjjz6Km2++GcFgkD2liYkJzM7OYvv27VhaWuJ1hkKhDVOJvFGxWCy8l6ja3TzLQFVVLp4DwGF7cwEc1Y2YZ7KTMBMV41GRJ7XZ0UCYcw08GWUK7VOEyWazIZ/PQ9d1/hpdSEnhLpVKce4e6E7d+Reiawx8rVZDoVDgME07Icsyvv/97+O6664Tal8CDrPTbGuab12tVjE/P88CHqTVnclkWB2sXC6zAl02m8Xp06fx9NNP45FHHuEqekVR8Mwzz+DgwYMIh8MYGxvDG97wBhSLRRiGwYehpmloNBro7+/H1NQUzpw5g6eeegq/8Ru/gX/6p3/C8ePHec0PPfRQC98xQSswp4+Wl5cRDoe5ToOq0qn/nTx50qCneQXRaJRHH1ObJl0A/H4/arUad3qUy2UuIiW5ZU3TuLuDoln0uqTJ4Pf7MTMzw4JNtVoNp0+f5jWRAM9GMepmusbAHz9+HH6/H4lEoiukagXdy/z8PN7//vfjG9/4Bvf7VqtVLC0t8ex3GqvpcDjg8/lQqVSQyWS4VeiOO+5gXe5QKASPx4MnnniCJ8E9+eSTGB8fx/ve9z7s3buXq55pOAzN2C4Wi+xpWa1WHD9+nHvdBRsb8piLxSKOHTuGiy66CG63G4ZhIJfLwTAMBAIBVkakDo5UKsXDjegyQKNk+/v7kc1mOTpAXSSJRIKHzRSLReTzeWiaxlLLFB2gy4JhGCx0k81mYRgGe+jkpQPgPb5R6RoDD6ApXNQOfOELX8Dtt98OWZbx8MMPt3o5gjaiVquhUqkgn8/DbrfDbrdjamoKkUikaaiMLMs4ePAgenp6MDQ0BKfTicOHD/Mhd/r0aZw8eZJznel0GidPnkStVsNNN92E/v5+DsWbNbsDgQAqlQq+8IUv4OTJk9yeWS6XOccp2NiYizsNw4DH44GmaSgWi6jVaqwaSu2elE5aWlriEcUnTpzAyZMnWbmOjL2iKPw8lKun+hAy2jQ/geRlqbCTxJ2y2SwUReHfGQBNxl0AdNVsx0ajgT//8z/HiRMnWr0U/NM//RPi8The97rX4emnnxYbT9BEo9HA17/+daRSKbjdbjidzqZhHQCwvLwMVVUxOjoKSZJw7Ngx3H333Zifn8fs7CzS6TSHPW02G9LpNJLJJOcxo9EoBgcH0dvbC4/HA5/PB4/Hg56eHsiyjAcffBCnTp3iud7AWR1wsV8FZmq1Gs6cOYN8Ps85cAq1Uz0JCTGRFz89PY3nnnsO8/PzWFpaQjwex/LyMjKZDHvdpGhnjhZkMhmkUimoqgqHw8EtcmTcU6kUR7qo6JO8e0EzXWfg7733Xu7hbSVf/OIXYbFY8KEPfQiNRgOHDx8WoiCCJg4fPox6vQ6PxwOn04lwOMxKXYVCAUePHkUymUQgEICu63jmmWdw9913Y2lpCadPn+apXH6/H8FgENlsFvl8nguQ6vU6enp6WDiHWpncbjcajQaeeuop5HI5Lpaj/uZzK44FGxsyvvPz81zlbs69m9UQHQ4HACCZTGJ2dhZnzpzheg8KyZNRp5+n/UfT4Sgnr6oqfD4fd4zQkBg6R51OJ4fgaQ2CZroqRC9JEh566KG2yMFT6wewcvu99tprAZzVHBdsbCwWC/7u7/4OsiyjUqmw+tazzz6Liy66CEtLS/jhD3+IZ599lifMaZqGWq2G2dlZFu/o7e3F6Ogo8vk8+vr60Gg0EIvFmgqNAHB1PR2wwWAQv/Vbv4XPfvazHJKn/nlxERWYoYr4UCjEle/UtknfJ2Ntt9vZI6e6D/p5h8MBu93Oj6fLqHkqnaqqrA9Rr9cRiUQwNDSEarWKeDyOoaEh1qxXVRXHjx/naXOC52NpdHBcwzyrGFgxnul0ui0MvGEYkGUZzzzzDF772tdiaWkJTqcTX/jCF/Cxj32s1ctjOvjj7yjMe5UkN6PRKGt5BwIB/PZv/zbC4TCP1iwWi1zURKHJ6elp/Nu//Rvsdju2bNmCsbExVKtVuN1u3H///UgkElxd/I53vAPXXHMNxsfH+XC22+1IJpOIx+NIJBKYm5tDIBDA4cOH8eCDD+Kxxx5Df38/7HY78vl8WxXbib26fpj3K/3/7t27Ybfbuf88m81yWomK2+x2Ow+PISlaGkKjKApUVYXdbmcDTykpKrCz2+1QVZXz7bVajR0lqsxXVRWGYSCTyWB6epor52kQTbvQDvu1qzz4doKUn7Zu3Yr7778fgUAAkiTh13/919HT04Pf/M3fbPEKBa2k0WggGo1i//79PLs9Eolw3pEGuVBfL1W6h0Ih3HbbbZiZmcHS0hKOHj2KUCiEWq2Ga665hoVvfvzjH+PBBx9EOByGz+fjPmZJkpDP55HP51kGlIbK7NmzB5lMBi6XixXAfD6fGAUrYIOtqiqLy5DmPICm/UUXVKqIJ68fAF8MGo0GdF3ntJHNZmMtevL4aRoccLZ4jqRyaZb8yMgI989TOH9mZuZ5zh9dNDYaXWPgg8Eg3v3ud/O84XbB7XZzeB5YmQV+ww034CMf+Qi+9KUvsRCDw+HABz/4Qfzrv/4r8vl8q5YrWAdcLhf2798Pu92OzZs3o6enhwvliFKphFgsBo/Hw+FOu92OcDgMj8cDr9cLn8+H5eVleL1eaJoGv98PVVXh9Xqxa9cuZLNZHD16lHvud+3ahUAgAMMwUK/X4fV6WV++XC7zz1999dVIp9OIxWIol8uIRCJIJBLskaiqiptvvhk//OEPOScr6C7MSm+KomBoaAhWq5U9aqvVyqJJZHBJ/RBYyaeTkhzpOZDnTv3stK9p4Aw9nqABNVTERwV1dGbSJZSq8WlOAok00eWDfnc24rnaNQa+r68P//AP/9DqZZwX4XAY//iP/4jHHnsMx44d437mz3/+87j77rs35EbcSPj9frz3ve/FU0891TQHnlS5KBe+sLCAnTt3cp7e7CWNjIygp6eHq4kPHTrEno/P58P+/fsxPT2N06dP48SJE3C73ajVati+fTsfzv39/Rwi1TQNpVIJbrcbb33rW3Hs2DEcOnQImUwGmzZtQj6f52EhLpcLH//4x/HII48IA78BUFUVu3btYollMpg0WY6U7ajwrlqtcuGbLMtIp9NN4XdSpSN1Rgrv0xx52u80lrZcLrMmvdVqZRVGiijQ3ynKQO16JOSkqipCoRB0Xd9wXnzXGPhO5ODBg/i1X/s1fOtb33peSEnQvciyjGAwiBtvvBEnT55ENptFb28vj8WkPCZ52k6nk3W66aCkP16vF7FYDPv27YPT6UQ8Hsfs7Cz27NmDq6++GnNzc0in09B1Hffccw8mJyexZ88ejI6OolwuY3BwENVqFZOTkzh8+DA++clPYtu2bQiFQhgbG8PJkyfxne98ByMjI5ibm2NlsVAo1FRoJeguzPlji8UCj8eDTCbDqcdarQabzcb5dmph0zQNXq8XkiRxxwaNcKWe9t7e3ibvX1VV5HI57qc3F+VRLZPdbofP50M2m21aI42DBcB6+D09PbDb7ZicnIRhGAiHw9i6dStisRh7/+2QH18PuqbIbufOnThy5EgLV/Pq0DQNhmFAkiQEAgFkMhl89KMfxR133LEur9/BH39HYd6rAwMD+OxnP4u+vj7+OoUix8fHUa1W2QsxDIPV63K5HF8CKKxJnsuZM2cwNDTExUqhUAiapjWJ1pRKJRw+fBjFYhGqqmJgYAAjIyPsiff39+Nd73oX98FLkgRd1/HVr34VxWIRExMTcDgcuPLKKzn/+Q//8A+4++671+U9FHt1/TDvV6fTiT179nCrGnBW/EaWZb6IUoSpXC5zrj4ej7PQEj1nIBDg/QmshNALhQIXlNbrdZ5WVygUmrToydADK/s5kUggn8/D4/FAkiSOMJCyHRXqDQ0N4ZFHHuHLxnrspXbYr8KDbzFutxtutxvZbBa/9mu/BgB48sknW7wqwVpiGAaOHz+OQqGAnp4eOJ1ODnF6PB6epw0A999/P2RZhsPhgMPh4FA6VRYDYK+eJnk5nU6oqopKpQK32w2LxQLDMJBIJLB582YcP36cx8g+++yzuPzyy9HX1wdZlvHd734X119/PVdKK4qC17/+9Uin01y9bBgGvvzlLyMQCGBycrJVb6NgHTAXtFG7JvWpUzqJetDp7zRVrl6vs/4C/bw5lK+qKof37XY7AHAu32azweVysQ49jZGlfntJknjULMnZ2u12OJ1O9uRJAKdcLuPEiROcq28Hw7teCAPfJpRKJXzrW99q9TIE6wBVGpOXUS6X+cCi/l7iscceg9vtRm9vL/r6+tDb28sKdsBZyVuXy8WevyRJyOVynKMk4ZxGo4FAIIBoNArDMJDNZpFKpTAwMIDh4WHk83ksLi7ya9NhODAwwOH/paUlLC0t4fDhw+v9tglaBLWhkUod9bFTUR0pL0qSxI81F+MRlCMHzs6KJ6+evHRFUfg56GJLnjhpi5AwDhlvMvyUNjAbcQrvp1Ipjg5sJLrGwFerVcRiMfT09HRkPluSJESjUSwvL2+4TbjRUBQFY2NjTQcSeTQ0RIMUwR588EEkk0kMDQ3h8ssvx7ve9S44HI6mqVwA4PP5OAdKwzrGxsa4VSmZTEKSJKiqiq1bt2JoaAiJRIIr9ak4avPmzTz8hoqfqFDJ7XYDWBmWY7fbOZ8p6F7ImC8vL8Pj8bB3TFX2jUaDNeTNVe5kzKlinooxyWunyXOUb6fCPZoal8/n2ZPP5/MoFApQFAXhcJinItLjqHPKPA6WQvOKosBms/HlY6PRNTl4oL2Ebl4tIyMjmJmZWbfX6+CPv6N4ob7cO++8E16vlw9Kv98PwzDgdDrh8XgQDocRDodx22234fTp03A6nbjooovwwQ9+kEP19XodiqIgGAwiHo9jcXER8/PzyGQyeOtb3wqXy4VSqYR4PM6HMSmH5fN5lrglrXp6fYoMUCFUo9FAIpHAiRMncPDgQWQyGXz3u99d1yp6sVfXDwqzmz3h/fv3c2smdWYEg0G+jNIo41KpxGI1lCcngRuXy4VAIIBSqcTCN1RJT210ZnW7UqkETdOaikt1XWfvX9f15100XS4XG39zG99zzz0HwzDW7T1sh/0qDHybsbCwgI9//OP42te+ti6v18Eff0fxYgbenE8k/W1g5UB1uVyIRCJQFAXZbBZzc3N47LHHsG/fPmzatAmqqkLTNBw6dAjZbBalUokHgVDOcvfu3YhGoxzmDAQCLGRTrVZ5rjx5U9SeREV+wIpGQ7lcRr1ex8mTJ/HTn/4UqVQKTqcTDz30UNPc+LVE7NX141yP12az4eqrr27KwXs8Hi6Co3RQrVbjSBTNYPd4PNziJssyEokExsbGnvc7YbPZIMsyh+opL5/JZFAsFmG32zkiQKF+mqWgKErT5ULXdaTTaRiGwYV5mqbx5Xc9aIf92lUGHgDe+9734mMf+xh27drVghWtDg8//DC++c1vrktffwd//B3FC+3V66+/Hm984xsxMjICVVVRKpXg8Xig6zoajQa8Xi88Hg8ikQisVit7Q319fXA6nSiVSlhYWMCPf/xjZDIZ9uadTieCwSBCoRAX7vX19fEhrKoq5y1tNhs0TWtSDPvZz36G7du3IxAINImNSJKEbDaLqakpHDhwgIuY5ufn8ZOf/GTN30OxV9ePc/erLMuIRqPo6emBy+VqEqAhw00tbxSap8p6v9/PrWwUCerv7+dwfaPRgCzLnH+n17darXA4HJw/D4fD/LxUza/rOovk0CWWvHxgZT9TON/r9WJ2dhZLS0t8GV5L2mG/dk0Onrjjjjv4dnjxxRe3ejmviquvvhoOhwPPPfcc7r///lYvR7BG3H///fB4PKjX6xgeHgZwNo9IbUhUNUzzsjdt2gS/38/zt+l7iUSCDTx5P16vF4lEAuVyGR6Phz3xQqHA+t/Ueke51kQigXg8jvHxcfamKBVA1dCjo6OYn59HKpVCX18fhoaGMDs7Kyrqu5harYaFhQXOrZNwjLnAzmKxsBATGW4KzVPhXa1Wg8/na5K4BcCXBDLgdMGgiycV4Znz+tRrT4ZUkiSOXNEEOhK8Id38QCCAcrmMbDbLwjrtYIjXiq7z4IkPfOAD+NKXvrSOq1l9NE2Dz+db06K7Dv74O4qX2qtXXnkl3vOe9yAYDKJWq8Hv98Nms3E/OsnJksENh8N8MFarVWSzWfzoRz+CpmlwOp2IRCJwOp2sJEatRuZBHzabjSvyqdAvmUzigQcewK233ore3l6uwE+n05zHJM8tl8uhVqvxQZnJZPCJT3xiTfeT2KvrxwullOj9HxgYwJ49ezjHXiwWAaykckipjgw16czTKGIqLE2n0zy4horpqNuD9rzdbockSTxalqJYhM1mg6qqSKVS3GdP6QOn08ljaUk7ol6vo1wuQ9M0JJNJTE1NcSpiLfZWO+zXrvPgBYJOw+PxYHh4GLIso1AocDiT2oKy2SwflFT45vV6OUzpcDjwtre9jZW/EokElpaWAIDny9PgDjo43W43AoEATp06hWAwiEAggIGBAWzbtg3FYhHpdJovBdTSR8IkdJD7fD54vd6mNQu6G4vFgng8jocffhjbtm1DMBiE0+nk71MenC6gJLlM8xMcDgfy+TyH8slzp/w67VMy1uVymavgaVY8RQmo24MurXSRJYEmUtprNBrsLJlTWFNTU2tm3NuFrjXwd911F2ZmZvDjH/+41UsRCF6SRx55BLFYDJ/5zGfwla98BVdddRXGx8e5px0AG1cytplM5nkDQehgdTqd6O/v50poymUqisJyo1arFalUCl6vt6koypxXJY/K/DM0SczpdCKbzXKYlA7lbj4sNzLUzkYCNhTxKRQKvIcAcJTnXEEaUlhsNBqw2+1wOBxskM05e9KEoCp6mtFAg2gonUQeealUgt/vR6PR4BA9RTyp4NRut0PTNOi6zmugkc3dfjHtWgOfTqdx4MAB/Pf//t/xR3/0R/B4PK1ekkDwgmiahomJCdxxxx3Ys2cPBgYGuCc4n89z2w/N3aY8PRl/6qMndTHzMBAyuIZhQNd1PiCpxYhC7vQ1mminKAofuHSgU24VWBFmOnXqFCKRCADwsBtB90KfLxWuZTIZriGh/UF7ktrYLBYL3G43p5jIG6fno5+lfUX7j7xzCvmbc/AksEOpImBlgBPtZarep3XQz9KlAABfHLod6eUf0rnk83n8xV/8BX7+858jmUy2ejkCwYtSLBbxzW9+E+FwmMe2ktwsHWokDmLW2KaDrFAosIwsFeeR0lepVEI2m0U8HmdviIbX0OPIK6ILAnlhFAEwC5uQF099xqlUCj//+c+Fgd8A0D6oVCrQNK1plCsAvnjSZZC8cUVR4HK5uALfbNzpwkqFnGSISenR/JyUd6foFABu6aR1mC/D9DrUQUJFqFQ/0O17tqsNPHHTTTfhe9/7XtOs4XaHDlHBxuLDH/4wHnnkEdTrdc4jFgqFpj9kwOkP5TWJUqmETCbDIXeqWFYUBX6/H263m0d3krAIsBIJKBaLKBaL0DSN9x8ZfRrmoes6ZFnGpZdeip6eHmiaJiroNwhmg2gYBo4dO4bFxUUeD5tKpQCc9cDJi6dQPBlm+i9dNinfTu1rZITpeag4j9rnKO00PDyMvr4+zss7HA709/ejr68PLpeLFRhplgNFthYXFztS8fSV0rVV9Odis9nwK7/yK7jzzjvXcEWrx49//GO89a1vXXPlpQ7++DuKV7JXrVYrxsfH8da3vhWXXHIJ57gpr0kFSRSKp15h8k7ODa+TZ6MoCsuKVioVpFIpOBwO1rGvVCo8pIO8LipaSqfTiMfjCAQC2LNnD5LJJF9CfvGLX+CP//iP13wvib26frxS4+dwONDT04OhoSHem2av3TyURlVVOJ1OZDIZrnB3OBxwOp2cgjKfe3ShpUgWTbGjQjwACIfDTYNmaEonRQXo9R0OB9LpNB544AFOV60V7bBfuzYHfy6VSgU//elPcc011wAAvva1r2FwcLDFq3pxKEQl2HhUq1WcPn0aX/3qV3H33Xfjox/9KKszulwuNBoNzmWWy2XE43F4PB4OpRuGwaF0sxY3Fe2Rl0T5TmqbIzUwRVFYKISq9WlEZzwex//9v/+XhXDi8ThisVhbHGaC1mEYBmKxGHK5HCKRCMbGxlhBkQrqlpeXkc1mEQqFUCwWOS9eLpeh6zpcLhd77WS4yQsnL54uHiSMYy62o24RaqcjnQhgJaplsViQSqUQi8U4fN/tbBgDDwDJZBIPP/wwAOB//a//hUgkgsHBQbzjHe9o8cqauf/++8VkuQ1OqVTC/Pw8AODee++F0+lEOBzGddddx727lCc3DAN+v7+peIkkOqmVzpxrp5ApgOcVRimKws+rKAqsVisXULndbj6MaUTnwYMHcfDgwRa8Q4J2goxspVJpGgm7adOmJglaCs+TcSejrSgKt8+ZK/HN1fjmKXX0msBK/Yrb7eZ+eqpboSI6i8XSpJNPY2M3AhvKwJv5y7/8SwDAZZddhr1792Lr1q0tXtEK09PT+NKXvoSvf/3rrV6KoE347ne/CwAYHR3F6OgowuFwU0Wy2ZMBwOF20vIGwO1zJH5Dnr7ZwFNkwDzHmwqqqMJ+YGAAAwMDOH78OI4fP44HHnhAjI4VMI1GA6lUCqlUCsvLywiHwzxQiYrlzAV59DWHw4FsNgsAXGBKhXK0X+lnSDSH0k/ZbBZer5drRahXnr5PlfW5XA7VapUFpDYCGyYH/1I4HA5kMhku4mgF9DGMjIzgzJkz6/66grVltfaVLMv41V/9VYyPjyMcDiMYDCIcDrN3XigUoOs6BgYGOG9JVcter5ena5mVxegy4HA4OAdKHhM9fmBgoEkHfH5+Hu9///sRj8dX5d91Poi9un6sxn4lbfrrr78ekiQhn8+jWCzC4/HwXqVIUbVahcvlYoNPxXAU3ifvm0L6ZOAtFgvS6TSrN1KenlIDuq5jdnYWiUQCmUwG2Wx23drj2mG/CgP///D7/QCAj33sY/jkJz+5as97PnzrW9/CBz/4QQAr05HW83bZwR9/R7Gae5U899e//vV485vfjMHBQQSDQRw9ehROpxNbtmzhA1CSJJ4Pv3nzZmia1jTTmzx5m80Gp9PJBVHUM0+V9ZqmYXx8HI899hg+8YlPsAjOeu4fsVfXj9Xcr2R0A4EABgcHsWvXLmSzWei63qTnAKCp44PkZsnTp0p7s8aDx+Np6o6SZRlut5s16BcWFjAxMcFCUetJO+xXYeDPYXx8HNu3b4ckSfiP//iPpjDnWvDZz34W3/jGN3Do0KE1fZ0Xo4M//o5iLfZqKBRCNBqFw+HA/v37MTo6ir6+PoRCoaZQaLVaRaFQgN/v5xA95UHdbjcXI5GnRKFOqpKPxWJ45plncPToUTz33HM4cuTIqv9bzgexV9eP1d6v5M07nU54PB5cccUVLM1MTo1Zc6Fer6Onp4c1H8hbp/8HwOkpACzWBKwU/Lndbhw7dgwLCwvI5/Mt2TvtsF83bA7+xZiamsLU1BQsFgvuuOMONvButxu33nrrqrxGPp/HXXfdBWDFe2+VcRd0NslkkgWcrFYrEokEQqEQvF4vdu7ciWAwyP3r5CnRgQiAe+jJGyIjT4exYRjI5/O4//77ceLECRw+fHhdQ/KC7oEKPw3D4CmEiqKwwmIoFGpSXqSi0Gq1yrUiVORJBt6cly8UCmzkS6USUqkUlpaWWOluoyI8+PNkcHAQBw4cAAAEg8FX7NkvLi7y5p2ZmcGVV1656mt8NXTwx99RrOde9Xq9+MAHPoArrrgCPT09kCQJmqaxZCh5QoZhYGhoiEOlNpsNLpcLc3Nz3Ev83HPP4b/+1/+6bmt/KcReXT/Wa79S8efFF1/MQjjUQ2+z2XjOu9VqRSQS4clyVBzaaDSQzWaxuLjYNEZ2cnKy5YV07bBfhYF/FfzHf/zHK2qtq1ar8Pl8KBQKa7iqV0cHf/wdRav26m233Ybdu3dz/++b3/xm9PT0oF6vY35+Hqqqoq+vj3viAeA1r3lN01jOdkHs1fWjFfvV5XKhr68Pg4OD2LRpExeB0iX1+PHj8Pv90DSNBZpKpRLuv/9+pFKptmt9a4f9Kgz8qyAQCDSNSHw5SBqxHd/qdlxTN9KqvWoWD6nVajxjGzg7bcs8RAZA24bhxV5dP1qxX+k1qcCO5iaQDK3ZQ6fOEIvF0rZtb+2wX4WB3+B08MffUYi9euGIvbp+tHq/Ut1IJ9MO+3VDDJsRCAQCQefQ6ca9XRAGXiAQCASCLkQYeIFAIBAIuhBh4AUCgUAg6EKEgRcIBAKBoAsRBl4gEAgEgi5EGHiBQCAQbDha3Qq4HnR0H7xAIBAIBIIXRnjwAoFAIBB0IcLACwQCgUDQhQgDLxAIBAJBFyIMvEAgEAgEXYgw8AKBQCAQdCHCwAsEAoFA0IUIAy8QCAQCQRciDLxAIBAIBF2IMPACgUAgEHQhwsALBAKBQNCFCAMvEAgEAkEXIgy8QCAQCARdiDDwAoFAIBB0IcLACwQCgUDQhVhbvYALYSPM811rxLTg9UHs1QtH7NX1Q5ZlNBoN8Z5fAO3w3nW0gRcIBALB6lOv11u9BMEqIEL0AoFAIFhTLBZLR0axOnHNZoQHLxAIBII1pR3C1a+GTl03ITx4gUAgEAi6EGHgBQKBQNBEp4emBSsIAy8QCASCJjo9NH0+bIRLjDDwAoFAIBB0IcLACwQCgeB5tJuHu9rr2QhRCmHgBQKBQPA8zjWAa2HwqX3u3Od+oa9dqEFutwvLeiDa5AQCgUDwsqyWx/tihna1Dfq5bASP/VyEgRcIBALBukMGnbz1F1PPeynDbL4UNBoNWCyWDWnIXwxh4F+CQCBwQWGdQqGAUqm0iisSCF4Ym83WdGCa/wusHH4vpS9erVZRrVbXZ7GCDccL7U2bzQZZliFJEmRZRqVS4e/TPq3Vavz3er0OSZJQr9eb9vBLXQ42OpZGB1931jKnIssy0uk0PB7Pq36OP/7jP8ZnPvOZVVzV6tPBH39HsZZ71WKx4Fd+5Vdgt9ths9mgKApsNhtcLhdsNhvK5TKy2Sx2796NTCaDQqGAer0Om80GXdehqioefvhhPPzww2u2xtVA7NX1g7zqC3nPXyivbrPZEI1GYbPZMDo6it7eXgSDQaiqisXFRVSrVSiKAqfTiVqthsnJSX6eZDKJWq2GeDwOwzBQrVZRLpcRCoVQqVTYoWoXL74d1iAM/Dl8+MMfxh/8wR8AAMbHxy/oNVKpFJLJZNPX/v3f/72tjH4Hf/wdxVrs1csuuwxXXHEFSqUS7HY7JEmCzWaDzWZDsViEYRiw2+2wWq2oVqvwer2o1WqwWq38uHg8jmKxiFKphHK5DFmWUa/XsbCwgOnpaUxPT6/6ul8tYq+uH692v557MZBlmSNDl156Ka688kpUq1UsLS0hEonAbrfza0mShGKxiEajAVVVoSgKKpUKyuUy/5FlGTabrSkS5ff74XQ6MT09jQMHDmBqauq817qWe6od9uuGD9GPjo7id3/3d/nvl19+ObZs2bIqzx0MBhEMBpu+duutt/LX/sf/+B8oFAqr8lqC7sfv92Pv3r2o1WqQJAl9fX1wOBxwOBwol8uo1+uo1Wqw2Wyw2+3Qdb3pkMnlcpBlmQ1+qVTix8uyDKfTCUmSUK1WEY1G+XWSySQymUxbHFiC9oUMJnnqgUAAu3btQq1Wg91uh9/vR6VSQb1eh6IokCQJtVoNlUqFQ/EAYLVa0Wg0YBgGrFYrVFUFANRqNbhcLlSrVUiSBFVV4XA44PF4YBgGZFmGz+fDyMgIzpw5A0laaRJ7sdTTRtjPG9bAX3755XA4HNi9ezc++tGPrtvr7t69G7t37wYA/PSnP0Uul0MsFsPx48fXbQ2CziIajcJqtSISiWDfvn2oVCrsaReLRVitVjbuAFAul9nLqdVqnKMsl8t8eNZqNT74yFOqVquc63Q6nRgYGIDb7cbi4iIWFhZQq9VQLBaRy+Va+XYI2hCzxx+NRuHxeNDb24s9e/bAZrPB4/EgnU5jeXkZFoulKZdeqVR4T9tsNkiShEajAV3XYbfbAawYaYpIFQoFqKoKu90Op9OJZDKJWCyGdDoNl8sFj8fDl9lqtYpsNrthc/QbKkRPtz4AeOaZZzA+Pr4Wy3rF3HnnnXjve9/bkoK8Dv74O4pXulctFgsXxb3rXe9CMBiExWJBpVLhA7BarfIhSfuaXqdSqfBnS18rlUp8ACqKgmKxyF5XrVbjP3TY0h+Xy4VYLIZisYjp6Wk8+uijLdk3Yq+uH69kv1JYnjzyd7/73RgcHISqqshms1BVFVarFZIkwWKxoFqtcurSvDf7+/tRr9dRqVRQKpWQSCT4Ikt70263o16vw+v1IhgMIhQK4Stf+QoWFxcRCoUwNjYGAMjn87BYLEgmkzhx4gSKxeLqv0kvQzvs1w1l4G+55RZ885vfBLBSddwuNBoNzM/PY2hoqCWvLVh7XuleHRsbw0033YRCoYBGowFFUWC1WlEsFhEOh1Gv19m4WywW5PP5JkN9rsGnx1ksFgSDQTidTs67UyiTvPxCoQCr1Qqr1QpFUaAoCsLhMB577DGcOnUK2WwWExMTq/sGnQdir64f57NfyQt3Op0YGhrCa1/7WgwMDCCfz3NoXVEUxONxOBwOTgXJstzUYUT1IPV6HS6XC5IkoVwuQ1VV1Ot15PN5NtDpdBqqqqJcLqNYLCKfz+PMmTMIBAIIhUIIBoOwWq2Ix+OQJAn5fB6zs7OIxWKr4kC9krx9O+zXDWPgP/3pT+Od73wn3/DajWq1iqeffho333wzlpaW1u11O/jj7yheyV696qqrsHXrVrhcLlgsFpRKJTa25NkbhsGfXblchqIoqNVqTb3A9XodVquVIwEUrvd6vbBarcjn85BlGQD4v7quAwDn8e12OwzDgNvthq7r0DQN2WwWJ06cwKFDh1Aul1f5nXpxxF5dP15qv5ovjaqqYv/+/RgfH0e1WkWxWISiKGzIa7UadF1HNBrlfagoCqrValP+3e/3w2q1Qtd1zrFbLBYoioJSqcT1IrRnqaBUURRMTEygr68PwIrnThEAj8fDl2Jd1/H444/zhXk9aIf92tU5eK/Xi9/7vd8DsOK9t6txB1YKSy699FJ8/OMfx1e/+lUcOnSo1UsSrCOKomDfvn1oNBoYHx/ngqRqtcoHKnnsZk+dwpdkyCnXSIel+TBWFAUAuCKZWuUoF09hf1mWOeQqyzJfHlRV5Zzppk2b+HCNxWIteMcE6415L0mShF27dqFUKsFms6FUKjVFkyjiRHvMal0xNdVqFZqmodFosOeuKArsdjsXddIf2tuyLPP3gbP6IhRpIqNN4f9arYZEIgGn0wmn08n1K9PT00gkEigWixsmJ9+1Bj4YDOKyyy5rq5a08+FjH/sYe0eCjYHdbkc0GsXrXve6ptw7ADbi5sOLDHW9Xke1WuV0k9VqZa9IVVXO1ZNnT14VVTJTWJRC9AD48YVCAeVyGYZhQJIkOJ1Ojgw0Gg0Eg0H09/cjk8kIA79BIAOvKAr8fj/27NmDxcVF5PN59pj9fj80TWOjbbFYYLfboWkaX0Dz+TwkSYLX6+UoEXnaANjzp8stdX4AK78r1POuaRrq9Tqy2SwymQycTifn6Kkfni6nfr8fo6OjXKwnDHwHI0kSbr31Vtx+++2tXsqrwlxlKuh+xsfHcf311yOTySAQCAAAf/ayLCOXy/FBSIcfGX2bzQan0wlVVWEYBhvzSqUCr9fLuXqLxYJisQiv18shekmSMD09jd7eXiiKgnK5jEqlglQqhRMnTnBe32az4ZZbboHT6WTvXtd1LCwsQNO0Vr51gnWCLouyLOOiiy7CG97wBsRiMd53+XwesVgMDoeD9yq1YM7PzyMWiyESiWBwcBC6rmNgYKDJszcMA+l0mgVukskke+4ul4vD/hQ9KpfLHLqnVk5VVbF9+3be+8FgEJIkIZfLQdd17N+/H8ViEUtLS20jhrPWdGUO/lvf+hZuuukmLjTqNMrlMn7wgx/gbW9725q/Vgd//B3Fi+3VG2+8ESMjIwBWlLqi0SiHzO12O3K5HKrVKqxWKywWCwzDgN/vhyRJfOgZhoFKpQKn08n9xYZhQFVVVCoVfq1yucyCOHSJdLlcKBaLfChT6POpp57i55iamsLrX/96jIyMQFEU5HI55PN5HD58GI1GA5lMBk8++eSav4dir64fLyR3rKoqLrvsMgwNDcHj8bCRVBQFmqbhxIkTmJiYgNPpRDAYhNvtRqPRYIElwzAAAH19fQiHw3C73XC5XHA4HHxpzGazyOfz0HUdNpsNDoeDL6M2m40r6QOBAILBILeQzs7OIp/Po1wuI5fLwefzYXZ2FolEgutKfD4fUqkUZmZmcPz48TV3oNphv3aVB2+xWPDtb38bV111Vccad2AlBOZwOFq9DMEa80u/9EuIRCLsGdGhSblHClHSH6psJ6+Hwut2ux0ej4d7iAFwO53X62XREDpIKV+pKErT70m1WmXhnNHRUWiaBsMw0NPTA4/Hg1AoBEVR+OedTmeTfrig+6DPWpZl3HjjjfB4PJxCIq++VCohnU4jFoshHA4jGo3C7XajXq9jZmYGpVIJXq8XHo+H++MBcKEo7Tvak06nE8DZ/V0ul5siUxRtKpVKSKVSHKWiaJbNZkOhUODnMgyDQ/Wk8LhR6BoDHwgE8Bu/8Rt485vfzOIIncpDDz2E73//+61ehmCNUFUV4+Pj6O/vBwA+gMh4mmU4KedOlcMWiwWqqnLenS4DpVKJvXUKq1erVX4s5ebJGNPzkYGnPCddMILBIGRZRiaT4b550ran3niXy4UzZ85geXl5vd9CwTpBRrevr48NM+3NfD6Per0Oo5lM4QAA0c9JREFUTdOQTqehKAq8Xi98Ph/nyt1uN18OXS4X3G43VFVFrVbjYk+al0DV84qioF6v88wE6o2nGhTa84VCgdNWVquVQ/nmCBX9blA6oFKpsBzuRqBrDHx/fz/+9//+361exqrw1a9+FV/84hdbvQzBGuF0OnHNNdfAMAzuzaV+YhKvofx6rVZrKnCjVjcKfxaLRWiahlwu1+SNR6NR5HI5SJIEh8MBRVGQzWabKuMBcK+x0+mEw+GApmmsbU8yylSwRxeNRqMBq9UKu92OWCyGmZmZ9X8TBesCFVhedNFF7FFTS2UqlQKw0pveaDQwODjIUSEq6BwaGkIkEuE2uEajwYqKVFRHESbSZKCIAXV0AGcnxlE0i1rffD4f/y6QV0+a9VQbkMlk4HA4WOaWIgfnm4d/uce1cz6/awy8QNApUFjSrP1er9fZCyKvBADnKOkAIaM6NzcHSZJgtVo5t05etc1mQy6X48PObrfD5/Ohr68PiUQCNpuN1cWoEIoOWZvNBk3TWKte13X4/X6oqgpN0/hnyXMX45C7E3Okhy52Zs0DuuSpqoqxsTH4/X7OxedyOe7UoEsraTjQ0CNg5YKg6zqnj+gCS33sqVSKn9dcb0JrImVHAHC73bBYLMhkMigWi6hWq4jFYjxDwe12c488XSLMbX8vxav5frukrbqiyO4jH/kIPv3pT3MFcqejaRruuece/MZv/Maav1YHf/wdBe3Viy++GJdddhkMw+CcO429JINLRt7hcHAYfXl5GYlEAoVCAQ6HA+FwmMOcXq8Xp0+fxujoKJxOJ7fPkcY3sOKFWywW9Pb2NkUC6JJBoc1sNotGo4HZ2Vk+eAcGBrBt2zZUq1Xous6HKM1PWFpawg9/+MM1fw/FXl0/qOZjYGAAo6OjGBgYQH9/P49ppXz20NAQkskkt6xVKhXetwB4AAxdWimcTnuZ9iF5/cCKbC0Z5mg0Ck3ToOs6KpUK8vk8IpEIF5T6/X4UCgWk02m+GDzxxBMIhUIsDuV0OhGJRCDLMnRdx/z8PJ588kkWg1qr968duqC6woN3Op1dY9yBlduo3+9v9TIEa4DVaoXD4YAsyzwoRpZlOBwODsXTIUhh9FQq1aTA5fF4oOs65zBzuRx6e3ubet/JwNMAGRIRIdU7CrUXi8UmsRtJkqBpGht9u92OUCgESZJQKBR4Ql25XEYkEkGlUkEmk2nV2ylYI2gf0edPOXW6CFKfOXnrwEqaiVrbqAjP5/MBWBGnoehPrVaD2+3mFBANOwLAPeqBQABWqxWlUomft1wuY3Z2lh9rsVgQiUR4YBeJ7eRyOXg8HgQCAY4gLC0twefzcZGdOeT/Si6O7RyOfyE63sC/8Y1vxK5du1q9DIHgZent7UUgEODDzzzGkkZfkgdeKpWQzWY57EieExUdmQ8+YOVSSP8PgL0sc6iQJnSZx3CaD0vgrGQtVeRTixKF8Cl/KUkS/H4/dF1vEsoRdAeKoiAYDCIcDjfpL9CFlPQQ6OJIIjY0Cpb2NkWTSGoWWNlrNPOAak3q9TpfWumSYLVakUwmOdVUKBR4iAxdXOmCm0qlWJ2R0lZ0Ka7X68hkMgiHw7BYLBfUodRpufiON/B/9md/hte97nWtXsaqY7PZEAqFeOqSoPPZvXs3+vr6UKlUOCRvlpZVVRVOp5PzmGfOnOF8I6nKNRoNxONxluGk6XCUW6SLAx2wZqMvyzLS6TTq9Trsdjt6enqa5GnJM1MUpanlLp/Pw+fzNQ23oSgEpRQcDkdLJnYJ1ga73Y7du3dz9IZa1Ch3TUbY7XbzZZP+SxfAcrmMeDzOHrp5LOzU1BQsFgsPl7Hb7TwghrpJFEVBoVDgXDpFDfL5PBt4kmQGwBcPn88HwzAwPT0Nq9UKn8+HUqnEkQjg7KCc1Qyjt5txB7rAwHcr+/fvx6lTp+D3+9silyO4cEi60ywBSwba7/fD7Xbj3nvvxcLCAmw2G7Zu3YpNmzbB6/Uik8kglUqhWCxy0RsVJJEnRDKduVyOBXIANPUPR6NR9rgobEqeGOXkz5w5g2w2C0VR4PP5kM1mWf0uFArB6XRiYWGBw/Xj4+P4z//5P+Pzn/98Wx5ygleO2+1GKBSCw+HgHLfL5WqSNqa0TbFYZA/darVifn4edrsdiqJwdTxFj6j4M5PJYNu2bbxnqa2NPG66RNDEuEwm01Q1r2ka/05Q6D8cDmNgYIDz+dRhomkaRkZGuCc/n89jcHAQS0tL3DJ3vgV3hNlbN2tL0Nfa5fegow38yZMnMTAw0OplrBlutxtTU1O44YYbMDk52erlCC6Aiy++mNXiJElCKpVi0RDyijweDxqNBl7zmtcgHA5zHj0ej3MlslkGlHqCNU2DqqqYn5/n6IDNZkN/fz+y2SxyuRwfmlarlXvoSWCEIgc2mw2pVApnzpzh1qNSqQRVVRGLxTgaQF+n0KnVasXIyAj++I//GF/4whcQj8db+VYLVoFGo4HTp08jEonw5U5VVc6vk6yxLMvcbVGpVOByubgdjhQWe3p64Pf7USwWUSwWWWOhXC6z8abLAYXzE4kEZmdnkc1mWeOh0WigUCjw5dU8iMZcD9DX18ctczRqdvv27VAUBcPDw9wC+tRTT+Hw4cNNF+HzDbObH9MuxvyF6GgDPzo62uolrCkWiwWbN2/Gpz/9aSSTSczMzOCv/uqvWr0swatg8+bNPI2NPPdKpcLCMfV6HYZh4KKLLuLwOB0cpLd97vAYavehiAC1DtFBqOt6k6Y9Hbr0s1RVHI/H4fP54PF4kE6nkUqlmgZ8kHdGXyPREHPu3Wq1YuvWrXjXu96F+fl5zMzM4MCBA+v/RgtWBeobt9vtXLxJBvhcj5tmIVD+m7x82ovkzZulZymqZP6ZVCqFdDrN+40uoBSu9/v9fBk4d1/TWsrlMtLpNLfEUV4+mUzC5XLB7/ezal5vby+uvfZaGIaBTCaDI0eOXJCxbkdD39EGfqPwjne8AwDw+OOPCwPfoYTDYc53U1sQVfPSwZTNZhEOh3kcJuXVzep2ZNwpB0khTfP/k558oVCA1+vltiWqHKYLA8l3JhIJDqVmMhlIkoREIoF8Pg+v14vBwUGUy2VOA1BYHwBfPCjnuW/fPoyMjMDlcgkD38FYrVaezmYOYZvThbSfKERORp/2Jv2d8vEks0yePRlmujjous5pKMrP0+s3Gg34fD4UCoUmj5suC+bfD5qVYL4ExONx+P1+TjuUSiXIsowtW7bAMAzMz8/j6NGjXZcO7WgDT1KFG6WKV5Zl1mmmghZBZ0DeM4UWVVWFz+dramcjgRkqXiNhEZvNxpPiyFjTY+kCEAgEUK1WkUqlsLy8DJfLhUAggGg0CrvdzpcJ+lkSwOnv72dlMJIHHR0dxQ9+8AMsLi7C7/fjQx/6EEcD6Dko/Ekphng8js9//vP4xCc+gUAgAJfLxcp6lIMVdA7UKklhdDL2VKRm7r6gvUnzFACwEadWuXw+z1X0dLkNhUJcS5LP51nfgfLmAHhOA9WWkHYEtdOZLwzA2QsnRahoSA215FHRsq7rWF5e5nB9KpXiegPiQvasELpZBaxWKx5++OGurKJ/MeiX5Nprr8Ujjzxywc/XwR9/RyFJEm655Rb09/fzeEvy6imHSR6OOb8YCARQqVSQzWZRqVQQCAQwOTnJQ2QozDkzM8M97n6/H2NjY3whpDAmyYiSl5XL5RAKhbgfn+RDVVXFf/zHf2B2dpbX/qd/+qd8iHq9XuTzeXz+85/nHni73Y6///u/5/SC2cP/zGc+syo1JGKvrh9utxv79+8HsCJFOzY2xtLJqqrC7XYjnU7zPiVjSjrxVCRns9mepwNP44/J65YkCW63G16vl0WfGo0Gent7MTExwYI4wIqyYyqVQj6fRyKRwMmTJ/m1gbMXAopmBQIBjI6Owm63Y3x8HMCKc0T5erfbzWubnp6Gpmk4c+YMNE3jaNmrpR32a0d78PShbyTM2syCzsFcmGSz2eByuVgGFljxKMizoQOTvHtSCQOA5eVlHu+azWaRyWRYzYt6h6kNjor2KGSay+VgsVgQDofh8XggSRIymQwSiURTfpKGfBD0/yRpS54THdD9/f1405vexGM6Sfue2pzEXu08yHD39vZiYGAA6XSavXEa7aooCtdikMds1pMnyPDT4BqaNEd/aHDM0tISt3/a7XZMTEzAZrPxZZa6RkjFzuFwcJEp7XGKQrlcLvT29vKQnPHxcf7doEsspbbo33rxxRdjYmIC8Xic5W47nY428ABw++23I5/P45d+6ZdavRSB4CWZnJxErVbD0NAQT24DwANhyOjSoQeAPZxCoQBN09hbofyjeZpWsVjkXGcwGOQcO/Ufq6rKYX9d1zEzM8OheZLEJU3vc/nJT36CSy65BPV6HceOHeNcPrAiimIOrVIYn3TtzWFPQWdQq9Vw7NgxNBoNjIyM8F4ikSRZlrmK3jxEBlgJz1NxHhXLUc6dOjnOdc7MAjW6rnNL3LnFnWZBnFqthnA4zPUqVABIF4xQKMRCPdSLT1X19PtHz0+X2GAwyL+D3UDHG/h/+Zd/QSQSEQZe0PacPHkSNpsNkUgEHo+HQ4MU+iaDTflF8yAaGslpHolpFpuhXKJhGHA6nfB6vfzzdCHwer0oFouQJAnpdBonT56EqqrweDwwDIO9bYoAUI+yJEk4cuQI+vr6UK/X8eSTT3Jonnr4AXCRHh2+FosFmqYJAZwOpFarYWJiAna7Hb29vSxoQzUi1KpJxrdSqTyva4OMKNWfAGclcMl7p2hVsVjk10ilUpidncW+ffuaHktyuVREWqvV4HK5miYt0u+C1WqF2+2G2+3m8bOUlqLiU1qPWanR7/e/ahnbdqTjDTxwdia2WbWrm6FwlKDzoKIlRVGg6zpL0cbjcWzatInD6jSmMx6P89QtYCV/SP3z5olvbrebv09hSBrUQV+jw9dcdUxGn/qQy+UyEokEBgYGeHys0+nEVVddxbUB119/Pb71rW+h0Wjg8ssvx549e2Cz2Vi3nA7bbDYLABvm97KbII9a13UkEgmMjY2hp6eHNRZIN4EugTSa9eTJk7j44osRi8VQrVYxMjLSVIFPRpZy+XRJLRQKnBPv7+9nlcZgMMgqdh6PB9lslvcrAGSzWb4YU1sniUZRqL+npwe9vb3cq08eOhXo0SXDbrfz5fSlPPhOMvwdXWRHG8dqtWL37t144oknWryitadSqSAajSKbza5KGKmDP/6OgvYqDcj4wAc+gKWlJfZKNE1j7wFYOQypaC4Wi3HBD4mFULsQeSCxWAyRSISL5d7whjfwxZf+S5EBanMj6dFMJsP5Sl3XOTy7uLiITCaDer2OwcFB7o2m0Ok3vvEN7N27F7t27YLH44Hb7eZ2P6qa/vrXv940ZvRCEHt1/aAiOcq779+/n1vQaAzs4OAg6vU6FhcXkc1mUavVEIlEEIlEOBTucDjQ09PDRpn2IaWDKLRvtVrZGyd1xvn5eUxMTAAA58+pxdTtdsNmsyEWi2Hnzp1cyEePM0+uo3x9X18fFhcXkUgk+EJLok/UtXLnnXfyhfhCDXk77Neu8ODJk+l2jh8/jttuu23VjLtg/aHK93Q6zV8jJTtzbhAA5xIjkQiP4jSHFylUn06nMTAwwBO1yuUy7r33Xlx77bXsTQMr4iVkwKktj9qeHA4H3G4398EPDw8jGAyy7jcVV5E2PrAip0ypAHoNaq9qNBr40Y9+tGrGXbC+kHGjEHm5XEYgEIDH42HjR49zOBwwDIP3EwnHVKtV9PX1IZlMIplMsgYE1WjEYjE2vm63m9NHVENSKpWaht2Q906CTgAQjUa5WNXsiVNLKeXXdV1HLBbjGhGHw8F5+1AoBMMw8P3vf58r+DvJS38pusLA79u3D7feemurl7Hm5HI5/OxnP2v1MgQXQCAQwKZNm3jSlbnwiIqX6GAhQ0mHERlYqowHznaSOJ1ORKNRbjNaXl7G3NwcC92QEAm1OlEagNqLKpUKq9zRIUjGn0RGzKNobTYbhoeHOdRJRVhUnVyv1xGLxVrwDgtWA9ofPT092Lx5M/x+P5xOJ3vIZBxpnzgcDk41kUGt1+uYnZ1FKpXiPaWqKlwuFys40iWWKunJo1ZVFYFAAAMDA6y14HQ6kcvlmgy8zWbjVlG6jFAhoPmiTHvS5XLxgJtMJsPFf9VqFQsLC03tdt1AVxj466+/Hv/9v//3Vi9jzThz5gzK5TLm5uZavRTBBdLX14edO3dyYR317SqKwiJGZsU6czU9AM551mo1DteTcabqfCpYmp+fZwNMXo2iKDyVy+l08oFGwjUAEI/HuYeZDlfqoSfFMfoetf3RQBwqCBQz4jsfi8WC4eFhvO51r+P6DGqVBMD5a1VVebAMGU3aV7FYjAvkVFVlTXuq/zALlZkNNdWghMNh/l2gC4a5aM58SaV0VLlchsfjQblc5tcEwL9jVBRYKBSQzWYRj8d579Olu1voCgPf7dx00004cuRIq5chWCXIkzbnDcnDpvA3Dcsgg0reDvXnUoUwVf+aK5btdju8Xi/GxsZw9OhRPPvsswgEAujr6+PXsdvtPBWOogE0Z3tqaopzlgMDAyiVSpxaKJfLqFaryOfz3LZEOf14PI5vf/vbwrh3AeaLndPpbJrzTjLHVHRJPfCqqmLTpk1YXFxkueVarYb+/n7s3LmTFRDtdjseeeQRDA0Nwev1QlVVeL3eJi/cPBURAKs06rqOnp4elrElvXoA3BJKuX7K7Xs8HmiahuXlZa4jUVUVqqri4MGDiMViPN2x21KfwsC3MZqmYXR0FKlUqtVLEawSNPva5XKhWCxyCJ2MPknOapqGpaWlpgp4+kNhdrocUE7z3McsLS0hEAjw/xuGgUAgwBXHlOOkimMSLqHiKTLg1KPfaDT4YlGv13H06FEO/xuGga997WvcDiXobMzeMNVgnD59Gh6Phz3oaDSK2dlZLC0toVAowOl04sknn2RBJ0ovpVIpHhKTSCSQy+XQ09PDUrXVahXJZBI2m42fm6ID5nQVVdUbhsFTDs37lCJh5LHbbDZUq1UkEgmoqoqdO3fy3o3H4/g//+f/cD1Tt+Tcz0UY+Dbl8OHD+JM/+RMsLy+3eimCVYZ6xClcXqvVOJfocrmQyWR4JGYkEmGvhHKf5EEBYM9KkiR+nCRJiEQiSCQSqFQqcDgciEQiPPua1MIA8PAY8/Q6UsYjL4cmetHaNU1jtTqPx4N8Po8f/ehHG6LQdSNBOgpUL0KpHbfbzVKzVGVvs9nYkA4ODnJXhc/ng2EYXMBpHglLYXHay36/n6Nasiwjl8txJIH2vKZpnNai9stKpcK/AwDYwJOgDnWcpNNpLCwsYGlpCc8991xTsTJFD7oNYeDblFgshu9+97utXoZglTFPfKPiIvPYWFJ+o6I6EvYgA2+e2GWeREeFR3TwUR8xVc1TlIAeQ3lQOkzNPfJmXXHqTab1mPW5SY42kUjg+PHjrXxbBWsAfc7kUVMqiKJK1I3hdrvhcDi4BW7Tpk0IBoPw+/18AaRLLeXjqd2O9h1FghRFafLcnU4np5BsNht3ZVD0ytzTbr4M0EWXClhJDTKdTmNubg7Hjx/nNa1G3r1dIwDCwAsE6wyJwFA+3Fyslk6nYbPZ4PF4UKlUMDs7ywYfAKvUFYtFDmlSZTGFT+lAo9wksOLlUDSA1mAeEgKAD1K6SFBPO/W3m3v0aeRstVoVYfkuhC59JGFMxhxYKcikQTNUwOl0OtmTj0aj8Hq9PCfe3HlB7WyPP/44i+VYLBZuwyTvm0L0TqeTWz8VRUEwGGTRJ0p3UfEfXZJrtRqH8OnPud0q5LGvllFuR+MOCAMvEKwrVqsVDoeD9bnJqyGPg7xtqhbeu3cvYrEYYrEYstksj+b0eDzs/ff19WF+fp4r30mekwqRzKHS8fFxpFIpvhSQrjeJggBoOkhpRCddMmhOOIVu8/k8K9YJugfyfv1+P3p6ejA5OYlwOMx5eUorOZ1OLr70eDx84TNfICnsTuHyRqOBiy++mEfC0mCkYDDIiozZbBbPPfcc72fam/V6HV6vF7quwzAMOBwOlkomI0vFovT75XK5UK/Xoaoqent7WdLZPHNhNQ10O3nzXWHgv/CFL+DQoUP48Y9/3OqlCAQvydGjRxGPx/HGN76RFeGq1Sqq1SpXn5vbf0ghLBQKwe/3o1gsIh6PIxAIQFVV2O12lEolRCIRZDIZlq2lA448FfL2zSpeuVyO58OTOpjH40EoFOLZ3qFQCIcOHcLWrVu5mjqbzcLn8/HkMIoACLoHSgH9/Oc/x5EjR7B792709/c3XUapboOGwxSLRQwODnKNB10yScCGjHWlUmGNBQAclrfb7ZwGstlsGBwcZA8fWIk6pdNpztmT0afRrrquI5VKIZFI4OKLL+bhMtlsFmNjY/wzqqrC6XQim8021Z6sFu1i3AGgK34z8/k8FhcXW72MVWXnzp34/Oc/L0Ztdhk0E5s8Ggod0q2fcvAUlqRhM8BK2NThcKC/vx8+n48PUgqnUp49mUxidnaWJUXJAzKrj1Ee3vx1KqCj3Cjl6H0+H3tMmqaxzjhNjxseHsYnP/lJsVe7CApfUzh+cXERqVSKvWIyyuZuDnO7JuW7s9ksp4XIk69Wq2xkSaWO+uiLxSIMw+D2N6/Xyzl+RVHYeJpbSylaoKoq/H4/tm/fjvn5eQArwlLBYLCpUj4QCOC6667jC0I30xUGHli5xd13331dMcMXAAYHB/H+979fHJpdSLVaxdLSUpOIjTnvTZ43efbkjZPnRK11NAaTREQCgQBcLhdXDJP+Nwnm0MFpvliQZ0WeUrlchmEYKJfLfMHw+/0ceiURG7qElEol9PT04H3ve5/Yq11KtVpFPB5HOp3m6BLpuNMeoigO7VsagkRV7wB4r1FLqPmCSa2ftD+Bs4V3VHxns9nY0FNRnXmULIXracgSaUK43W6uE6EU2MUXX7whDHzX/AtnZmbwlre8BbOzs4hGo10zwYqqULtNgGEjo2ka7r33XrznPe+By+VCuVxGsVhsKrqjgxI4G7Kn6V26rnN7G3lPNH7WMAxuWUokEtA0jSvsyZOilqJyuQyHw8HFULIs81Qw6jGmA9QsUVoqlZBIJNjLV1UVY2NjcLvdHAEQdA+VSgVLS0sIBoPo6elhI62qKl9IgbNV7uTVU00JtdSRp07iNrS/KR9O+xkAt3NSayft/97eXpRKJRSLRS6uc7lcfImlywhdSmlynblfHjg7zpa057uVrpgmZ0aSJHz/+9/HjTfe2IIVrT71eh2XXHIJnnvuuTV5/g7++DuKF/Nu3/SmN2FkZITDnaSoRS1oFNKnViC/388V7FQIVSqV+PA0e1JUAU2vncvlUC6Xm6ZyUSWyucVI13VOIZRKJc7t12o1BINBbNmyBbqu4/HHH4fX68Utt9yC3/qt30IikcA111yzZi1zYq+uH+b9Sv/faDSwZ88eXHTRRRgcHGTxGnMxHWkmUG67VCrB7XbzPqT9RkWklOopFAoYHR1loRuqlKe575Q2Iilm+lqhUOB10u8EqT3S9xwOB8LhME85zOVyyGQyiMViOHny5Jp1gbTDfu0aD56o1+v48Ic/jPe97334kz/5k1Yv54KhQ1zQnfziF79AJpPBlVdeyaF40oinXnlzvt48F55CpdRmZ1a9IxlbMv42m43HdFKhlK7rcLlcKJVKHOZsNBpQFIWNeqFQQCwWw65du3jyl8VigdfrRSgUwvXXX49bbrkFAJp0xQXdydTUFBfgkUQtAJaHNe+vWq2GfD6PeDyOaDQKl8vF4k4+n4/14CnqQxLJtN+p+JPa7KrVKl9GaVIc7Vld15vC+zTsRpIkGIaB6elp/j2x2+246KKLWG6ZUmLdSNcZeGAlXP+d73wHDocDn/jEJ1q9nFdNuVzGpz/9aTGVq4vRNA2nTp2CoijYtWsX5+Pp8KTQJoCmg5P6hMmDoq9Xq1U0Gg3kcjm4XK6mn6OWPDLCsizzYU1T6KjymIqdarUaBgYGOO9J08Cmp6fR29uLa6+9FuFwGADw6U9/GvF4vDVvpGBNIW+0UChgYWGBi9UGBwf5ckj98mbP1eFwsK58pVKBx+OBz+dDKpXitJFZm4FC6bT36YIKrKSqaGoh7WcKu1O4nTx+KhA11wckk0kAK78PCwsLXDRobq9rB697NelKAw8ATz/9NBYXF3Hddddh7969PIawU8hms3jqqafwF3/xF117uxSssLy8DE3TEA6HuZcYAFccmxXsAPChZO6dB84K1VgsFpaTpVApPQc9lkL6NJCDvqfrOjKZDBc1KYqCwcHBpjG1xWIR8/PzeNvb3oZNmzYBAL761a/ir//6r7vugBQ0h5rr9TrS6TTy+TwPffH7/VBVtWnSHIXpPR4P7HY7F+hRfp4MvLmDg+pCqK5DlmWOYpmNL/1O0GXVfHmlkcd03pOQE7WTknjTmTNnWAWSCk67ka7Lwb8QMzMz6Ovra1JKamdqtRp++MMf4q1vfeuav1YHf/wdxfnu1f/0n/4TezDUz07T5Ojruq43heepavnc/nnS9qbiPNKKNw/kSKfTPECGlPTo7+QtLS4uoq+vD9VqFYuLi5icnITb7cZ3vvMd/OIXv8Bf//Vf49vf/vaavXeE2Kvrx/nu12g0iiuvvBKDg4MwDINnvVObncViQSAQaPK6A4EAEokE72tVVVnvATg71rVQKDRdLGlMMannUb6eph1Sp4dZt54iXI1GA8ViESdOnMDs7Czy+XxT7n0t9lY77NcNYeCpwOOtb30r7rzzzjVe1YXzkY98BLfffjuHrtaSDv74O4rz3atUc7F582bccMMNAMBCIebKZKvVyp65zWZDPB7nCnwaPGMe+UlqXpTbr9VqcLlcTSFS889RioBynuQRzc7O4uDBgxgfH0cymcTp06cRj8fXJcok9ur6cT77lTxrj8eDsbExXH311bDZbEgmk3A4HPD5fHA4HMhkMtzuVq/XMTc3B7/fz1447VGzzj2J2ZDRB8CtopQ7V1WVB9aEQiEuODWLO1H6Kp/PY9u2bbjvvvtw8ODBJn0JoHsN/IaoiKHxgj/96U/xlre8pdXLeVmo2Eqw8aB8+dzcHL73ve8BQFP7EIU5zRPp6A8ZZnPYngy1OY9PX6MDkyJb5klewMrhSu1I+XyeVfDGx8ehaRrGx8d5jrdg40EXTE3TcOLECdxzzz2YnZ3l1stKpYL5+Xn2vjOZDMsa5/N56LrOYXOzgA4J2lANCEky06AZikpR+x5wVkCKolvVapUvpqqqwufz4ac//Smmp6ebiupWU4++HWn/ePUqkkwm8eCDD+Jv/uZv8IEPfIA1jNuBQqGAL3zhCwBW6gcEG5tSqYT5+Xk89dRTuOiii5qkPakYyRwGpd5589coZA+Aw5eUbzcPmTGP36RcPxUsFYtFuFwuyLKMVCrFLUozMzOoVCrI5XIteX8E7QNVvFOXxs6dO+H1evnSabVaUalUYBgGR5zMxXMkSGM2ulRIWqvVuB7EZrPxpYAq70mXnlpEqaKeUlmNRgOVSgXJZBKTk5NIp9Ndb9TNbIgQ/Qtx7733YmRkBA6HA8PDw6u4qpenUqlgenoaW7ZsgSRJyOfzePrpp3HNNdes6zqA9ggjbQQuZK/efPPNPKnL6/U2hSGpkpgU6ABwWLJcLrPKndVqRaFQaJq6ZZ5kRwafWuZIkjYej8PtdsPv9yMWiyGTyaBUKuH06dOr9M6cP2Kvrh8Xsl8vueQSnp3Q29vLw4qoTkRVVZ6GCKxElXw+H19S6Q/tNZfLxQWjy8vLKBaLnLYaGxvDyZMnEYlEuGYklUrB7/cjk8lwpOD06dPI5XLPC82vJe2wXzesgSeuvvpqPPTQQ6v6nC8GHcgnT57E1q1bEYvFEAqF8LWvfQ3vete71ux1X25NgrVnNfbV0NAQ3vnOd6JcLiOdTrM35HA4oGkaG2rqR6dwPBXZaZrW1MPcaDS4kI+8eapmzmazmJubw4kTJ1AoFDgcH4/HcejQoQv+t7waxF5dPy5kv9LFkaYSvv3tb0cqleIQe61Wg8/na1Kto7oSCtVbrVacPn2aL7MAuJbE5/Px85gL+mjPT01NIRQK4ciRI1hYWODiUtrza7WPzm2za4f9uuENvNVq5RGFAPCxj30Mn/zkJy/4eV+IW265Bdu3b8df/MVfIJvNYt++fchkMhwObQUd/PF3FKuxVylHCax8bv39/di2bRtGR0chSRIKhQIb9VAoBF3XeaoXhd1pRCdp2GezWSSTSZ7X3dvbi2effRbz8/Mol8vc/nTixIkmXftWIPbq+rFa+5UunFu3bsXQ0BB6enqgqipKpRIr2tFrpdNpuFwunnCYy+Wwfft26LqOZDKJVCoFn88Hv9/f1PKZyWRYBMdqteKhhx7C6dOn2ZiTY7Xe+6cd9uuGN/DnMj4+ju3btzd97cYbb8SHP/zhC37uRx99FD/72c/wi1/8AsBKmqDVxXQd/PF3FGuxV2mOtlnQZnh4GLt27YLNZsPMzAwikQj3KQMr+gokO0shzbm5OZ53QJXRiUQCuVwOhUKB00it3iutfv2NxGruV0mS4HK54HK5uJaELqKbN2/Grl27YLfbEY/H2SBTT3s4HOY8eqVSQSAQQLlcRjKZRLFYxPDwMHK5HNxuN+bm5vDMM89wC16raYf9uqGK7M6HqakpTE1NNX1N0zQ4nc7nPdZut+Md73gH7rrrLuzYsQMXXXQRqtUqvva1r71onue5557j6miB4EKgaW7Ly8v8tXq9zsM9FhcXsby8DI/HA1VV4fF4kMvlYBhGUxvd7OwsCoUCVyr7/X6e8d0OB6Wgs6nX68jn88jn8xxGJ6ja3eFwIJ1Os8NjtVrhdDoRj8fhdDpZMGdycpJH2JI8c7FYZAM/OzvbFoa1XRAe/AUQCARw5MgRXHHFFfjt3/5tvO9970OxWMS2bdtaFsZ8pXTwx99RtHqvSpKEgYEBlEolrm4medp0Ot0R+1Xs1fVjvfered4CsJJCGh4e5umg/f39CAQC+OEPfwgA3PVBKaO2y33/P2W9ViMM/Aangz/+jkLs1QtH7NX1o1X71Ty5DgAb8Vbm0s8X89rbxcCLEL1AIBAIXpb1MK7nPv+5kaV2Ne4A2i6KAGwQJTuBQCAQXBjtYrQ6gXaJ2AkDLxAIBALBKtIulyFh4AUCgUAg6EKEgRcIBAKBoAsRBl4gEAgEgi5EGHiBQCAQvCztUjgmOH+EgRcIBALBeUFSxvT/537vpX5uLdayVs/dLYg+eIFAIBA08UI976/072sNvV67VKy3Ix2tZCcQCAQCgeCFESF6gUAgEAi6EGHgBQKBQCDoQoSBFwgEAoGgCxEGXiAQCASCLkQYeIFAIBAIuhBh4AUCgUAg6EKEgRcIBAKBoAsRBl4gEAgEgi5EGHiBQCAQCLoQYeAFAoFAIOhChIEXCAQCgaALEQZeIBAIBIIuRBh4gUAgEAi6EGHgBQKBQCDoQjp6HrzFYmn1EjoeMS14fRB79cIRe3X9sFgsvGfF+/7qaIf3TXjwAoFAIHhB2sFIdSLtcqEXBl4gEAgEz0MY985HGHiBQCAQCM6T8/HO2+VyJAy8QCAQCATnyfkYbxGiFwgEAoGgCxEevEAgEAgEgjVDGHiBQCAQCLoQYeAFAoFAIOhCOlroRiAQCATdj8ViedG89rkFbe2S/24HhIEXCAQCQcswG+hzjbP5exaLBbIso9FooF6v82MbjcZLXgA2MsLAv0JuvPFGqKra9LUf/ehHKBQKAABZlnHzzTfDYrHg2LFjmJiYaMUyBQKMjIzA5XLB4XDA4/HA7XbjJz/5Ce9Vi8WCrVu3Ih6PQ9d1lMvlFq9YsFEwG2Qy4oqiwG63Q5Zl1Ot11Go16LqOer3Oj3M6nVBVFYZhoFgsolarNX0faA8Pvl3a5CyNdng3XiVr/SYGAgHk83lUq1X+2sTEBEZGRgAAmqYBAPbt24eZmRkAwP/P3ptHuXUdd/7f94AH4GHfgW703mw2V1GidkuyFst25DXeIyXxEieOPSe2lYx98ouz2p4ZjyPP2EnG8ThxJuM4x4nXSSzHSxxZsrVLJC2Je5Ns9t5AYwce3nvYf3/wVAmgqJ1soJv3cw4P2RtwCdy+davqW1VOpxNzc3MIBoO46667cNdddz3jcZvNJorF4gVd+wtlA7/9G4oLvVcdDgdqtVrXYfcbv/EbGB0dxfDwMLZs2YLJyUlce+21vFcVRcHv/u7v4r777sPc3BxKpRJsNhsA8AFbq9XQbDYv6NpfKGKvrh8Xcr9KkgRFUVCv19Fut2GxWCDLMgKBAIaHh+FyuWCaJiqVCk6cOIFarQZJkiDLMgYHBxGLxVAul5HJZFCtVlGv12G1WiHLZyRl5XK5L4x9P+xXYeCfBYvFgnw+j7e+9a34j//4j66v/fM//zMsFgve8Y53POvPHzhwAJdddtk5v3by5ElMTU2d1/W+VDbw27+huNAH5u/93u/hO9/5Dubm5iDLMsLhMKrVKrxeLywWC3RdR7PZRKPRQLVaRa1WgyzLUFUVbrcb27ZtwzXXXIM3v/nNUBQFyWQSjz32GH70ox/h0UcfvWBrfzGIvbp+yLJ83l5vGlxDoXSbzYa9e/fixIkTKJfLkGUZuq4jFAohkUhAlmVkMhk0m02sra3xJcBqtaJWq2FqagputxsOhwMejwehUAjT09NwOp1IpVK46667+PkudgMvQvTnYHp6GnfffTfcbjf+/u//HoZhdH19YGAAADAzM/OsjzEyMvKsX+uX8I1g46MoCmKxGCRJwvve9z5IkoRGo4FarQar1cqh91arhUqlAtM04XK5OMxZqVRw5MgRzM/PY3FxEXfffXfXQUwRAcHFxfk0ThaLhaOg0WgUH/rQh9BqtXD99dfDYrHA4XCgUCggk8lAlmX2xEOhEB5//HEsLy/DMAz4/X4EAgGYpgkAaDQaaLfbaDQaWFtbg8PhQKlUgsViAQCOPF3M+Xlh4HHmkPzMZz7DGyMcDrOHPTQ09Kw/93K98E9/+tP41re+haeeeuplPY7g4kGSJExPT6PRaCAcDmNgYAA2mw1OpxOKovD3kXeuqio0TUM+n0cwGESr1eJD1ePxoFwuw+FwoFwuo91uQ1VVrK6uwmKxoNlsQtM0qKoKm80GXddRr9d7+L8XbBTIa1cUBTfeeCNcLhcsFgvcbjcikQhkWUa5XObPxeNxrK6usvNDIrodO3ZAVVWsra2h1Wph165dmJ+fR6VSgSRJUFUVfr8f7XYb9XodzWYTkiTB4/FA0zTWlTyXkG8zc1Eb+MnJSQwNDcFut+POO+9kA3+hUVUVN910Ez7ykY+gXq8jEAjw1x555BFUq9V1WYdg4+DxeGC322GaJi6//HLUajUMDg4ikUhA0zTY7XZUKhU0Gg20Wi025JRLr9frLLajQ8/tdkOWZTgcDjQaDVgsFoRCIRw/fpwP4GQyiWg0Co/Hg2KxiHK5DNM0IUkSTNO8qA5LwXPTGYa3Wq1wu90YHR3FDTfcAL/fD0VR0G63+fJpGAbvT4/Hg0AgAEVRWFxXLBYRj8cBnDkzc7kcEokEisUirFYrJEnii2qj0YAsy7BarXC5XIhEIrDZbHyWmqbJkaz18Oj7JUp7URl4WZa7FPB33nknfud3fmfd1zE4OIh7770XAPDJT36y62vbtm3DwsJC1+fEQXpxYrFYoCgKarUadu7ciZGRERw7dgxXXHEFgDMhyGq1Cl3XoSgKTNNEq9WCoijI5XJQVRWFQgHNZhPxeBy5XA7BYBBWqxWtVguGYaBarfJlgA7gUCgEq9WKgYEBjI2NwWKxIB6PwzRNpFIpnD59GlarFXNzc+zRy7LMIVPBxYksyyyY8/l82L59O+644w7YbDa+eEqSBLvdzt59pVJBNpvlfehwONBsNrnSo9VqYXh4GPF4HMlkElarFYqiIBwOw+l0olAoADgjMiWjPzY2hlgsxutqtVo4ffo0UqlU1wWY/gDn36vvl9+Di0pk96Y3vQnf/va3+WPajP3EuQ7Jyy67DIcPH74gz7eB3/4NxYvdqwMDA7jlllvwmc98Bu985zsxOTmJbdu2YWVlhb0a2ru6rqNWq8Fms8EwDGiahp07d+LAgQNQVRWyLMM0TYyNjUGSJC49CofDaDabMAwDNpsNFosF6XQag4ODsNvtaDQa0HUdxWIRLpeLS5got1mr1ZBOpyFJEkZGRvB3f/d3OH369AWLQIm9un68mP0qSRKCwSC2bduG17/+9VhZWUEsFsPAwADvo2KxyILOZrOJQqGAfD7PYk+r1Qqn0wlZlqEoCmw2G4rFIgqFAux2OwtFfT4fFhcXkcvlUCgUuPKDhKMUptc0Db/1W7+F3bt3o9ls4rLLLkOj0UAqlcLx48dx33334dFHH8XKygqX2wHnb49JktQX+pWLxsB/6lOfwh133IHJyckLuKILw5EjR1joV6/XceONN563muUN/PZvKF7MXn3LW96CyclJLC0tIRqNQlEUuN1uNtb1eh2tVgv1eh21Wg2KonADkNXVVSwvL+OKK65AKpWCJElc7nbllVcinU5D0zS02214vV5IkoR6vc6PYRgGGo0GvF4vFEWBYRh47LHHcMMNN/BzAOCvUWiUcvTZbJbXVyqV8P3vf7+rlvnlIPbq+vFC9iuFunfu3InLLrsMV155JaeRHA4HHA4HgDOlw81mE+12m9NFTqcT+Xwepmmi2WyykafvIxW/LMu8d6xWK0zThNvtRi6Xw9zcHB5//HGEw2G+5FosFgQCAbztbW/rilbZbDZ4vV40Gg0UCgX26FutFhqNBjRNw9GjR/HAAw+wfuDl7tl+2K8XRYj+zjvvxJve9KYNadwBYMeOHfzvVquFT3ziE2g0Gnj00Ufxk5/8pIcrE5xvXv/617NAKJFIwDRNRCIR1ofQgWexWFCr1Vid3Gl43W43SqUSHA4HezbVahXlcpnFS61WixXLFB6l8Gdn3buiKBgaGmJFfWdYs16vsyGgQ9vv96Ner3Pq4LrrrkOhUMDy8jIWFxfX86UUXGDa7Tbe/OY3s7ceDAZRq9VY8Fav1+HxeHifdea+6/U6l77R1202G/dd6DSOFosFdrsdgUAAjUYDx44dw+LiIsrlMm666Sasrq7CbrdDVVX4fD5UKhW43W7ouo5KpYJqtYqRkRGkUikAQLVahSzLGBoaQr1e59LRcDiMRCKBffv2IZlMQtf1vjDSL4dNbeAVRcH27dvxh3/4hwiHw71eznlBlmX86Z/+KQDga1/7GhYWFkS3vE2ALMsIhUK4+eabsX//fqTTaUxPT3P9Oh161Byk8+ChsKTNZoPb7YbFYmGDS9/farWQSqU4x0k/T56TxWKBxWLhQ5gOZLvdjm3btgF4uvkN/U2XCzLypmkiHA5z6svhcOC6665DuVzGsWPH0Gq1sLy8vM6vrOBC4XA48LrXvQ61Wo0vkbQ36d9er5eV7YqiwGq1otFooFQqod1us4dNxp72JV0kKbqkKApUVYXD4cAPf/hDnDhxAqqq4q1vfSsef/xxFAoFhEIhxGIxzMzMIJlMolqtspJ+YGAAq6uraDQaqNfrKJfLSCQSKJVKME0TVqsVO3bswN69eyFJEg4cOMAak41s5DdtiJ7ygnNzc+u3oB4wMzODHTt2vORuYxv47d9QPF/I0+v14oMf/CCefPJJ7N27F4ODg6hUKiySczqdsFqt0HUdbrcbrVaLD1by6qkMrlQqAQAL4JrNJodCyThbLBZ4PB44nU4MDw+j1WqhWq3C4XAglUrBYrFAVVW4XC7U63XOU9Jj2O32rjRBrVaDy+XifD2V53k8HiiKwt7dhz70oZf8Goq9un4839mqqir27t2LK6+8Em63GzabDVarlXPplPJRFIW70FEuvVgsolarQVVVAGd0R6Sct9lsLNikPg508Wy1WgiFQjhw4AB0XedKjj179nC4nfo7kMBUkiT4/X4YhoFUKoVCocBVIJdccglyuRx3vtu2bRtcLhdGR0fxyCOP4Nvf/jZ//aXQD/t10xr497znPfjrv/5rOJ3OdVzR+tNut1GpVDA0NPSS2t9u4Ld/Q/Fce3V0dBRXXXUVLr30Upw4cQLRaBRut5t1FoZhQFVV2O32rpwkGVy32418Pg+fz8feO3nguq5zqFLXdVxyySXQNA2macLn8yGZTCIWi7HnXywWoet6V09wwzDgcrk4n9+peKbwqizLSKfTaLVacDqd8Hg88Hg8SKVSsNlskCQJxWIRP/nJT/CLX/ziJV1IxV5dP55rv+7atQtvfOMbEY/HMTs7C4fDgXa7jVKphL179yKfz8PpdMLhcPA+oW50lAKiZjWUA2+327znyaMncV6z2YTVauXLIn0fCUsXFxcxPDwMTdMwMzOD+++/Hzt37uQIVqVSwa5duzAyMgLDMDA/P499+/ZhamqK19NsNuFwOBAOh+FyuVgPUCgUcNddd0HXdU5vvdB92A/7ddOG6OkmudmRJAlutxv/8i//gj/4gz/AI4880uslCV4koVAIu3fvRqvVwtatW9k7Jg85GAyi0Wig0WjAZrOh3W5DURQ2rM1mEz6fj0OgiqJgYWGBw+XtdhuGYWDbtm1duXqr1YpIJIJAIMClSfV6nQVS1Jee1Pler5dDrNQtj8SfbrebBXt0eFP+kw54Cum+4hWvwPe+971NH13bbFD6xul0IhaLQdd1+P1+mKaJarXK7z9FkhqNBv8M5ebJm6evA09Xg5Axp7QRPa7D4YDL5YLT6eQ9Sfu/UqnA4/FwiN/hcLAgdXBwkMWfO3fuhMfjQTabRTab5dp5Sl9R/bxhGGzcKZXwqle9Cg899BDn8DcSm9LA33bbbbjpppt6vYx15aabbuqq/RRsDHbu3MneRqFQQDAY5HAkGWfKaZPnXqvVYLfb2ViTUe/Mjeu63iWeC4fD3NCGDkmLxQK/38+HrsVi4QOVwvsWiwWVSoU9F7pU0IFKz6eqKntatG4KhdLPknGIx+O47777evJ6C14ePp8PLpeLWyF3jm8FwNEfWZZRq9VgmiaH2OnvTmEb8PRlk4SfnT0ZAHDundotk4CPqkOAMwNmNE3jDneUFvL7/Wi1WigUCpzmCgQCmJ6eZj0KpQwoQkbprGq1ilwux016NiKb0sD/zu/8Dl73utf1ehkCwfPyyle+Elu3bmXvmTwhAJzHrNfrsNvt3K2uc7qWxWKB1+vlA4/6y0uSxJ3CqLOXpmmcW6d6dnpMqj02TZP/JiNPhxx5XFTqRKF36gdOHcnocKYDm8rmqtUqisUifD5f33T6ErxwJEnC8PAwwuEwSqUSBgYGoGkaG28SrymKwgaZesM7nU7ed6VSiUV5APgyS70Y6MJKBpjy+JVKBblcjsVzpmnCbrdD0zSEQiGUSiUsLCxwyVyj0YDL5YLP58OPfvQjbgLl8XiwY8cOuFwu5HI5zM7O8kWEWjUXi0UYhoFisdjVS3+j9bXflAZeINgoZLNZ9i5isRjXEJNHQwafPB4S01H/ebfbjXA4jFwux/ly+tr8/DxsNhvnPDvrkWu1GveodzqdfCAqioJoNMph9VarhZGREei6DsMw+PtKpRI8Hg/XGpMoyuVy8VopZ18qlaDrOhqNBgYGBjiXKdgYUF24LMuIx+MYGhqC3+9nvYjX60WtVsPa2hpM08SBAwfgcrngcrkAnBF7er1eeL1eOJ1OSJIETdP4AktpJroUUKmc3W7ncjra081mE6urq/x9MzMzOHbsGMLhMEzTRDabBXDm9+rgwYPYuXMnrrvuOsTjcXzrW99CIpGA3+9HsVjE2972NqTTaQ7LG4aBkydPcgMdEqtaLBZOO220fSsMvEDQQ7xeL+x2O3s1FFLvLF0DntaUeDweGIYBj8cDr9fLKndVVVGpVNiAW61WxONxDquTqI28os7Z8Z1KfDp8NU3j76vX69xwh9IHHo+H53AD6BL+UQi13W6jWCwiHA7zulutFpaWlrgVqaD/IaPWbrcRi8UQj8dZbU5fowYzmUyGux6qqgqn08nNkCh1RBUXpVKJy+korE8K/Ha7jXK5DKfTyREi0zTh9XpRLpdRLBaRyWSQTCbhcrmwtraGqakpvPvd78Z73/teLCwscJc6WZaxuLiI3/7t3+aa+mAwiB//+Mc4ceIEIpEIpqamoKoqj6slTQr1b5ibm0OxWGQdwUYx9JvKwEuShL/7u7971jnsAkE/cfnll3MjEPLaqbyMjKfD4eB8p81m445cdFCR0SWDSWHGzhncnTXvFPqkHD55/Z0HFoX66bJAHgzlUBVF4dAoefTkiZHoji4owWAQ5XKZm+KQIGq9BjsJXhqdRoxC8Lfffjt27NgBr9fLjWmoTLKzxzvw9GyCbDYLr9fbNYKY9lMsFuOaeavVysaeIklU2UF7iwSm9DnKpzudTkxMTMDr9aLVauHkyZN8CW6321hYWOAolc/n49+piYkJJBIJBAIBuN1u7mtP0SpS4NPvZ+fwmo1i5DedgX/b294Gr9fb66X0hOuuuw6rq6t47LHHer0UwQuAmi9RGJIUxFTi1nlYkjEmYRwZUjLalDunZiH5fB7A0+VONHmrMzLgdDr5MkHKZUVRuow7PT6FMTsPtk5BFKUCzj4AHQ4H1ywrigK/349sNovBwUEUCoUNqUy+GKEhLqqqsjEn3UVnyoXC7lRiWalU4HK5OE1EuWy6FFKovVAocDSIRHf0+wCAL7jz8/PIZrPQdR0ulws333wzWq0WpqenUa/Xkc1mkU6nYbPZoKoqXyCoLTNdUmu1GiYnJzn832g0kEwm4Xa7sba2hkwmA8MwWK1PZZ8vtEV4v2hMNpWBv9j5+Mc/jmg0Kgz8BqFYLKJUKnUJ6Gj0q6Ioz8hl06Fhs9lY3ESXAEmS4HK5WCG/vLzMZXZk3H0+H9fzAmcOTU3TOG9P3n2hUIDD4egKyRuGwZcQKpObmJiA3++H0+mExWLhTnkkFqxUKty+lgROoVAI2WwWe/fuhdVqFa2W+5RO75SiQEtLSzAMg3sk0N50u92sGfF4PNwKlvYZVVNQGopGyRYKBei6jlQqhbm5OfbCKUyfyWR4hCztzePHj3ML2aGhIbz//e/H3Nwc18xLksTaFNJ9uFwueL1eBAKBrgqSgYEBvsxqmobFxUVs2bIFTz75JFZWVqCqKq666iqUy2WEw2FomoZCocCXlBf6+vUSYeAFgh7hdru5dSYJiDrD6OQxk1Elj7lcLkNVVbRaLei6zsNjyuUyMpkM8vk8EokEbr75ZszMzGB1dRWmaSKfz3fVJZP33pk/13Wd1wKcuQTk83kOy3s8HkQiEQwPD+OGG27g/8vPf/5zPProoxgcHAQAFmWRnqBarcIwDA6XkohK0P/QnvH5fDh69Cjq9TpCoRAcDgfW1tawZcsWBINBjtTMzc3BZrPB7/cjHA7j5MmTyOVy2Lp1Ky655BI0m02oqsrNa7xeL88poLntFKYPhUJQVRU2mw0ulwtXX301EokED0b66U9/ilqthpWVFeRyOR5Gc9VVV6HRaHCkS5IkzunTn9XVVayurnI4PhaLwW63d81+OHXqFKampjA3N4dyudyVtugXI/5cCAMvEPSIWCyGaDQKq9WKcrkMj8fD3k6tVkMul4Pb7UalUoGqqlAUBfl8nhXHAFgYR4NlqA1tKpXCP/zDP2BlZQUAkEgkOIzZeYja7XZYrVbUajX2uKm2mYyyx+PhPvc00vPRRx/FF7/4Rbz97W/HxMQEHnroIa4hJg+fDHmxWES1WkWj0UClUsHAwEBfjmoWnBtKD1EnRI/Hw61gY7EYXC5XV+Ola6+9FqdPn8bJkyexuLgIp9OJUCiEer2OhYUFFItF1Ot1DA4OIhgMwuVyoVwucwSKold+v587dZbLZWSzWYRCISwuLnIuvtVq4Tvf+Q5isRg8Hg//Xpw8eZIH2VCLZ6fTCa/XC1VVUa1Wkc/nIcsyawSo2uP666/nlABpXcLhMH7yk5/wuPHnM+4iRC+4IFxzzTX4b//tv+ETn/hEr5cieB4URYGu67DZbFwS5Ha72asmxTvVm1O+k2qISdREuW4Sy9EMbr/fzy09m80mDh06BLfbzYex2+2Gpmmw2WxcokS51U7hFHXJo7GahUIBDzzwANxuN06ePIm1tTWsra2x+ply8jSes91us/CvWq0imUzC5/MhEokgFouJPHyfQ4abDDI1hKGLYKduhKJRFCGicH6lUsH8/DxyuRxfDjovBXRJIKhvvdvtBgDe+16vF5VKBaVSiefFJxIJDA4O8v4iFT/9oVy8pmkIBoPc9nlhYYHr9+v1OkqlEl9EqDQ1k8mweNTv92N6ehonTpzoqiw4F/3i3QsDv8mYnp7GBz7wAdxzzz144IEHWPQk6D+opzblz6nWlkrMKF/ocDg4F065xs7RrTSMhgw5PZ6iKAiHw2ysV1ZW2LB3junsFM91dtHrfDzgTE98ajayvLyM66+/HoVCAWtra5zHp5n1dEHpjApQeqFQKKDdbiMYDGL79u0ssuqXQ1HwNFSNYbPZuIsdcEYk17kvO0WadOGjNrKKovCMA9M0MTY2BgB8+Ww0GrwngafHw1I+nUSm9Jx0GS6VSigUCpicnEQwGIRpmigUCohEIgDAFxHDMDgMT5+jizT1oaeue/V6HZqm8e8WpafS6TSazSbGx8exsrLC3R3pNerXvbtpDDwdav0SGukloVAI//Ef/4Hh4WEsLS31ejmCs6CDa2RkBGtra2xEm80mjh07hlgsBpvNhpWVFfh8PgQCgS4vJJVKdXWMo7A+eSIAEIlEcPjwYQSDQbjdbjSbTWzbto1DoKQ4poOZauinpqa4f3e1WuW57tSVjMYTT05Ocq958t7cbjcGBwfZu2o2m8hmswgEAqzub7VarKBXVRWvetWrIEkSHnroIXEZ7SM6SyzpbNU0jfcSiUM7m+BQJOnf//3fsbS0xJdU6jJHHvng4CCXq5FRp7GwJO6kCyGF4ekSQakCqqcPBAIIh8Mc5ZIkCfF4HKlUCqVSCZlMBidPnkSz2UQsFsPy8jKCwSC2bt3Kl1gAXAqXTCbRaDSQy+VQKBRYRLqwsABN06CqKmKxGBYWFvh37dlev35g0xj47du346mnnhL1tYK+Z2pqCvfccw++853vcEiQjNull17KtcV+vx+hUIgPLwqRJxKJrp7eNpsNpVKJDxWr1YpCoYDBwUHOr9PH1BCnVqshFAqhVquhXC5jeXkZy8vLuP/++3Hw4EEATwvlqDud2+2G1+tFJBLBq171KiwsLHS1w92xYwdkWUY0GkUsFkOxWMTa2hobAlmWoaoq6vU6/x+KxWKXNyToDzq9U6fTiV27dvEwlmKxiFwuh4mJCfh8Pr4EZrNZLC0tIZVKIRAIIBAIoNFoIBwOY3h4mMVtZIRLpRI0TYOu69i7dy9Heur1etdEQ9KHaJoGv9+PeDzOPSMoP07RLWqmEwqFMD8/j1arhdHRURaIDgwMIBAIAABHzOiSQTqRXC6HRqPBl5BgMAgAWFpaQiaT4dTVc4Xp+2U/bxoDPzs7iyuuuAL3338/520uRu6++278yZ/8CQCI3GafMj8/j9tuuw033HADarUaLBYLd6SjQwo4M9ij2WwinU53TXgjQ0nla6VSCS6Xi8vYKMxI4U0SyFH7Tar97QyrBgIB2O12zo9Sjp9mf8uyjOnpadxwww149atfjbvvvpsvF6RwpgPzBz/4AZaWlvC7v/u7cLvdOHHiBI8P/cEPfoBms8lNSfL5PBYXF5/TGxL0jna7DV3X8dRTT+G3fuu3kEqlkEqlkEwmMTExgXQ6zfXlHo8Hp06dwtVXX82d5+iiSvXpiqJg69atqNVqCIfDGB8fh9/v50lv1B6W0lP0sSRJsNvtMAyDNSKKosDn8yEYDHbtH6vVitXVVdhsNoyPj8Pn8yEUCnFfe4oKFIvFrk6MVH9Pl27q8FgoFDA0NIRMJoMnn3ySR8w+V2heePDnGdM08eSTT+K//Jf/ArvdjssvvxxvetOber2sdWdkZAS33norPve5z/V6KYJnoVqt4tChQ9x0gw46t9sNwzAgSRKXl1FNPInXSDhHJWbtdhuZTIaNcGdtPIXP6fPpdJob01AnMCpXCofDXKL3K7/yK13T6aiuOJFIIJFI8AWaDjFS3JNwqtVqwTRNLptzu93sYe3evRsLCwuIRqNwOp3QdR3Hjx/vzRsheEFQJcT3vvc9ZDIZlMtlWCwWzM7OIhgMQpZl7uVAI1xpIIxhGDh69CgMw+CLndvths1mQyAQYK0I9W2g3L0syxgZGeGLLAD28KkvPXAmHRmNRvkiYJomr4cEdtS5TlVVAOBwP0WmSAdA4lWq8KAZC/QaAOgK63d2i+xXNo2BB84cNJ/97GcBAL/8y7+MiYkJ7Nq1q8erWl/27NmDSCQiDPwGgLyBRCIBu92OrVu3sqq90wMgAZEsywiFQpy377wA0MFEhw4ZeupSR7l6uizIssw/Q5O+bDYbWq0WLr/8cj7ISNnv9/v5oDx58iT3DqeDkR7fYrFgaGgIrVYLTz31FN71rnchHo+jWCyiWCzixhtvxJEjRxCPxxEIBGCaJpceCfqTdruNZrOJb3/72yx0i8fjeOKJJ7B3716OKIXDYXi9Xg510yX15MmTbGgp1+3xeBAKhbg+PZfLIRQKsYiUZs1TlznK59dqNVbyW61W+P1+RKNRyLIMXdc5VeXz+bizI3BmIuLAwADrQKivA5Wkkupf1/UuL980Te7e53A4MDQ0hLm5ud6+IS+CTWXgO/mXf/kX7N+/HwsLC71eikDwrNTrdczNzXEXODLO5OWsrq5iaGiIS3+o5/zs7Cw8Hg/i8Th27tyJJ554gpuDkAdCBpm8/61btyKbzSIcDnN3Oer+VSgUWAk/MzOD++67jxXENFnObrcjkUjgiiuuwOTkJOfgKTw7MDAAn8+HwcFBbNmyBXNzc3yRoPRDPp/Hjh07YLVaUa/XuaWuoL+hCyO1kF1ZWYGmaXC5XGi329yfvnPWutPpRCAQwN///d8jEAjA5/PB7/dD0zREo1GMjIxw2eX1118Pu93OofB0Oo16vc7VFa1WC6lUCvv378ev/dqvwe/389x2inxZLBaEQiGOgpHugy61NPDINE3u8UDCPWoE1emxN5tN5PN57mG/d+9eTE5O4i//8i+f8dqc7cX3i1e/aQ28QLCRUBSFS8YonyjLMiYmJlAsFtkLLxaL7C1RHf3p06fhdDq7Gt2cHaqkr9vtdhQKBVQqFbjdblSrVZimyV5UMplEs9mEYRiIRCIYHx9HNBrlOdkLCwv42te+hssuuwy33nor8vk88vk8qtUqTp48iXg8ztGA6elpzM/Pd03E0zQNyWQSAKCqKodNBf0N6TGo26LT6cSVV16JRCIBXddRr9dx6tQp1Go1zM7OssZDlmVs374dV199Nc8r8Pl8CIfDCIfDiMfjGBwcZLElCfbo4tdqtTA7O4vTp08jl8vhlltuwRNPPAGfz4doNIq9e/ei1WqhXC5jbm4OyWSSRXWVSgWmaXJJ6He+8x0Eg0H4fD6ewEjNlzRN40gEtWqmCpYnnngCfr+fNQB0OQWevURO5OAvMLfddhv++I//uNfL6AnhcBj33nsv3vGOdyCTyfR6OYLnYXJyEtdddx1P1aImItSdjhTzlBMnARJ5NpQrpO85O79OTUb8fn+XqKjVaiGXy6FUKkFVVQwPD2NwcBA7duxAuVxGqVRCuVzmfOSePXuwc+dOrK2tYXV1Fffffz/Gx8cRCoVYbNVsNnkq18DAQNfz1Wo16LrOuVoSGN555534yle+Ak3TevL6C54fMli0t5xOJ0ZHR3nPUhkkGU8K0fv9fgwODnIdPYXFASCfz3P3OirJJKGdzWaDYRioVqtwOBwYGxvD7t27eeAN/dzx48exZcsW5HI5aJrGKniqq6eGObquw+12c2c80oTQaGWfz4dCocDRs3Q6jZMnTyKRSPCMeRqa43Q6US6Xu5T0/cqmNfCDg4O49tpre72MnmCz2XDTTTdx20ZBf6OqKkKhEHf+otrjTrUwiXzIu+70plRV5bIigkZ5krjJ4XCgVCrx49N0L8ox+nw+eL1eHsEJgHP1FJ6nkj0y3Pv374fH44HT6YTP50OlUuEJY1QrTXlTqg7orKumzmWjo6OivLXPONsz7dyTsVgMl1xyCXw+H9bW1vhrdCntjEDRRZGqMqg9sWmaPEeBokvZbBb5fJ5FdlarFYZh8P6KRCJwu92cf6cqkoWFBWQyGR5kQ+ummvparYajR48im81y1IgU87QmaqRDI2tN0+QLJ/XLp/4R4XCYG+cIA7/OTExMcC3uxUqz2cTp06df0NQjQe8Ih8NcakbeCnCmwxd55p3jXQHwaFgSAZGnTiVA5Jk4HA4evuHxeDAyMoLDhw+z90Q96W02G2KxGKvwFUXB6uoqkskkWq0WawGcTie3tKUWtKurq3A6nXC5XAiHwzh06FDXiM9CocBCuk6vjjqJqaqKWq2Gw4cP8wVG0D+cbeSpGmNoaAjXX389h79p35L+g/Lf9Xod6XQalUoFw8PD3IjJZrNx+LxcLsNut6PdbiOVSnGJJpWFkuftcrng9/u5DXJnZ7uZmRnOp1N1CXnY1D3xoYcegqIoCAaD8Pv9XFbaOfmuUqlw6Vyz2eRLqN/v52qBRqOBQCCA1dVVvrCei34x/JvKwMuyjAMHDsDn8/V6KT0llUphamqq18sQPAeSJOGP/uiPsLKygnQ6DU3TEIvFUK1WebgLKYg7Z7q7XC72QDoH0FAjD/KKS6USDMNAIBBggzwxMcEGl0L/NImOREqtVgvZbJaFeqZpwm63Y2lpiUvb2u02/H4//u///b/8/zEMg1vhkhEn8VJnR7RYLMbeG7UW/fznP9+Lt0DwHJzLQNntdrziFa9APB7HzMwMYrEYD2UBwK2Nc7kcp4soCuXxeHgwDVWARKNR9pbT6TSnjQCwAt7n87HXraoqd2ak/g/1eh2pVAr5fJ4vn7lcDg899BAymQynEAKBAMbHx7lRD3ng1N/e4/FweSr9TUOVCoUC4vE4pqamMDQ0hJMnT7KnL3Lw60ir1cL4+Di+8Y1v4NWvfnWvlyMQPCvtdhuf+MQncOWVV2JiYgIDAwMcLqTQIuXcafgFGWC73c59wWlWdmfPcEVRUCqVMDY2BrfbzYrlY8eOcTMaaorjcDg4fE4he4/Hw89LSncKo1J0IZ/PcytP4Eya4fLLL0epVOLpX5lMhlXOlGftHCVK5XmC/qPTcNG/TdPkUcHUHrlzrLDdbofT6eR9TEOUvF4v6z/q9Tp3mKNa+kceeQQrKys8Pc7hcCAcDiMQCGBycpK7MeZyOb4QU+kmzXLw+XwolUo4ePAgDh48CJvNxpEji8XCkbJQKATTNHHkyBFcfvnlPF7W6/VyBUmhUOCUVDQaxenTpwEAi4uLmJ2dhaZpGybitKkMPHBGuCG6Ygk2ArquIxKJIBwOcwibprYB4Br3sxW7NMULAAvyqAEIhTMVRYHb7WZP+fDhw8hkMpxnp8sA9ZnvbP5B8+eBpzuK0WFJYjmbzYb77rsPHo+HRX7pdJo9IxLQ0UQ8qo32eDzs2dGFQtB/dBp3+puMMvVLWFtbQ6vVgqqq/HnKgVN/hUgkwuOBi8UiarUa1tbWODxeKpXgdrsRiUQwODjIvwMejwculwtra2ssyKQOetQ6lipIZmZmEAgEuPmNw+FAKpWCrutdDaNoT3s8HkxNTXVNu6N8PmlKqIwuHA7DNE1Eo1G43W6Uy+UNlfrcdAZeINhIeDweeDweFItFFrwRFObuDBk2m014PB4A6GpiQ+NZvV4vK4xpMIdpmiiVShz+pPA7KYgpv09RArpsULidQpEkSiIlMQ0Uoc+5XC7OadL6KQpAqQaqAqDPGYaxzq+44MVA7z1dLmmaG7WhpT0JgL13iirR+0/6EqqiqFQqAMAXhnA43KXt6IxEUbkcXQhLpRKCwSDvx0QigXQ6zXuK0gGkpJckCYqiYGJighX1FCHI5XJdExkBsBaF1kyNqEKhUFcFwAt53foBYeAFgh7icDi4ZSaph8mwtlotVvK6XC726EOhEHtDpHR3OBwIBAJcHkRCSyodohIhav4BgAVPVO5DLWc7R4BStIBy/MAZzykcDmNtbY3zriTAAsAK5Wq1ikwmw+1xrVYrMpkMotEoq6rFBLn+p9NYUY8DuuSR2I08ecMwuDyz0WhgcXERy8vLuOKKK+ByuTjFo+s6fD4f74vOSwMAjgi0221Wq/v9fm6TK0kSgsEgXve612FiYgILCws4ceIEkskkBgYGWGxN5XfXX389FhYWWAhYr9e7muXQ5YX2cCAQYD3LtddeC13XUS6XX7CBFzl4gUCAqakpjIyM4Mknn4SqqvD7/SxMonpd8oza7TaGhoawtrYGp9PJ4Ueaw945OY4UyZ2qeZfLxcp78mROnjzJBzZ57QA4b+5wOHjqnMfjQaPRQCaT4WY1nUNuqAyvVquhVCohm83C5/OhXC6zNzQ0NITFxUU4nU74/X5RHreBkGUZjz/+OEqlEk90i0QinH7J5/OIxWJYXV3tmqnw4IMPwmq1Ynx8nOcu0B6gLofkgdtsNq61L5VKnLIyDAPlchmapmFlZYU7zP3whz/EzMwMkskkLBYLIpEIRkdHcdlll3FYnTQpfr+/q1qFdCzNZpPbOtNlmHrre71eHjt77Ngx7Nu3j/f7s9Evxh0QBn7T8e1vfxt33nlnr5cheIFQTTqV/CSTSZ6TTQeJaZpcv57L5biZCHnvlPukg4o8rnA4zB4WdbYrl8tcWqeqKqvqSdlMRtfv93NZkGEY0HWdpxNS6JQa8TSbTVQqFc6BGobBZUvFYpHr+JvNJoLBIHv8hw8fxt13392z117w4llbW2PVOfV2j8fjsNvt/L56PB6O/JTLZVx99dUYHBxkvQaF2elCSd0Vaa+T0fd6vQDAUavh4WFIkoRTp05hcXER2WwWlUoFiUQC73nPe9BqtbCysoLLL7+cpxVSegEANE3jSJQkSbxHOwcykRdPGhbau1RGl0qlnldg1y/heWCTGvi//Mu/RCaTwbvf/e5eL2XdqVQqWF5e7vUyBC+Qb37zm9i1axfGxsbYCJJoqdFowOl0cr0xAD78OnPn1KCDDstOsVOlUuE/nbXzZPSpTzcdbJ3eVLPZhKZpyGQy3A+f1PUkyCNxEo3VpFQArdflckGWZZ4sRmkIurBQ1ztB/9NqtZDJZLgmPBAIoFwu89epmoMU6VarFV6vl40qtVAGzpTyUsUFXWDJsFKb21qtxiI4ShdRJIlKNmkIktfrZcNaKpW41wIZchLUUT8H6skAoOsyTf+miATpApaWlrCysrLhBNyb0sD/+Mc/BnCmQ9aNN97Y49UIBM8O1dlarVY28hSiJM+CPBFSsNNQGBLFAWe8EzoQOxvnFAoFaJrGlwQSL5GBp8OOogakkKfcJ4mjJEmC0+lkJT0dwiSUUhQFlUqlK6pAF4fOOfXUpKdQKKBYLPb41Re8WCqVCvL5PNLpNKampji9Q+NYyYunPg5kVGniIZWtGYbBo2EB8P7r3KOpVKqrLTOlh2jfRqNRDA0NsY6Eyj7pEkn5dvpdoIsn6UPo4kCXB6ouof4PnfMcCoXChhyMtCkNPHDGyB85cuSimiYnyo42JsePH0cqlcKf/MmfsNCIREsUCu8UpMmyjFwux93rhoaGoOs6H07tdhvZbJYNNImgKBpAYUsKv1PnMOouR2I6CrNSqRB5V8CZMHwmk4HVauXRmzRTnkKiNK0uGAzC6/VyyZzFYsGjjz6Kp556qjcvuOBFQ95xu93G6uoqHn74YUxOTmJoaAjFYpGjTcVikfdNp5dMe5hU96FQiCcoejweqKrKee/OmetkuKlrHOXfQ6EQRkdHEQgEUKvVWHQqyzJ8Ph90XeeGTRRSz2QyHFkwDIMrAmhcrNfr5YsoheXL5TImJiY4+tXv89/PZtMa+IuR22+/Hf/6r//a62UIXgLVahUPPfQQrr32WjbInXl14EwLYl3X4XK5EAgE2AtPpVLcH5sMervd5t7cADhED5wJYdJFIhKJwOv1olAoIJfLYc+ePRxKpfK7er3ORpxq7skzp9A7eUv0nFQiJcsyVlZWAJwpoxoaGsJnP/tZLCws8OhbwcaBuhOWy2W43W5MTk7ixIkTSKVSWFlZQaPRQDgcZkNI6SbqmEgXwHK5jKGhIfaodV3nr1Mu3m6383AiVVXRbrcxPj6OG2+8kZX0Xq8XhmFgdXUVpmnC5XLB5XLxGsl4k0hveXmZ5y6YpslGnNrUTk9Psy5G0zQcPXoUx44dQzKZ5JLQjYTU3kjXkbN4PrWioiiYnp4GAHzmM5/BG97whvVY1rrxD//wD7jrrrsAAA899BB+/dd//UUb+A389m8onm+vSpIEj8eDSCSCV7ziFRgdHQUADqdT2JJayfr9fg7Tt9ttOJ1OLvehvt7RaJSjAZ1hf2paA4BV7zShS1VVSJIEXde7euJT8xw6gDVN49GeVK5HXevoECdF9MzMDI4dO4bZ2Vk0m02Mj4/j0KFDSKfTL+o1FHt1/Xiu/UrvbSgUwsjICG6++WZMT09DURRueUx7kzxxKm+jULymaawTodw3NV2i91nX9S5Vvc1mQz6fRzgc5hRAKBTC4uIi8vk8rFYr5/pPnTqFcrnMcxgKhQIymQynlXRdx86dO5FOp5HL5VCr1RCNRuFyufDwww8jGAxi9+7dsNls+OY3v4kTJ04gm82+4AgppdR6zab24Ov1Og4dOgQAm07M8zd/8zdYWVnBHXfcAeDMBebw4cM9XpXgpdJut9mzTqVSGBwcxODgIOcTyWNRFIVD3ZTvpHwiGftWqwWXy8VeEXndlG+kaVxUFlSv1zlPSvl9agBCAj4KsVK+tTOnTs9PUQMKg7ZaLezfvx+zs7Mol8uIx+N43/vehy984QvCe9/g1Ot1JJNJ6LqOm266CaFQCMDTzZI6m8KUy2Xous4RJOrVQJfRzomFtB87LwbkwVssFqTTaRbxkaEmBb5hGMjlcnC5XFhZWcHQ0BCX0imKAqfTiWAwyOkoi8WCYDDIl5Hp6WmUy2Xs3bsXlUoFc3NzmJ2dxdzcHKcAXgidyv1es6kNfCenTp3CiRMnNs0Qlv3792PHjh346Ec/ina7jWAwuOkuMRcjtVoNyWQSyWQSg4ODMAwDLpeLPR0y3pRXpJAphTqpnpeEQSR4ogsA5e07x23S45BHfvbgDUoZkFEng97Zr74z/w+AFfkPP/wwSqUSJiYmcMstt+DXfu3X8LGPfYzFVYKNBxlm4IwBpmEvsViMp7mR1w2AuyhSZIcuquSxk1dNXRxpj9EFtfMycHYpKKnwaULd8vIyrFYrlpaWsG3bNqytreGee+5BLBbD5OQk5/y9Xi9kWWZtiM1mw+joKAqFAlRVxbFjx3DkyBHce++9/DvWDx75i+WiMfB/9md/hgMHDuDb3/42dyjaaJBwRVEUfPnLX+bDfCNuPMGz89RTT2FxcREnT57EyMgIpqamODxPw2CoLIgayABPj5mt1WrQNA0ej4db1drtdtTrdeRyOYRCIfh8Pq5TpwY22WyWe8lTxzK73c6lb9SDm8R2NPiGOuQ5nU7uNV+r1ViBH4/H8aY3vQlvfvOb8Su/8ivCuG8y/uEf/gFHjx7Fxz/+cdhsNh7VSl0aaYgMDYihMH4+n4emaTyWmKJK9OfkyZO47rrreH/b7Xa8+tWvxsrKCtrtNs9pIK+81WpheXkZ3//+9xEIBJBOp9FsNhGLxRCLxQCcCfvTxEbqdV+r1aAoCg4fPoyxsTF8//vf54E4o6OjmJ2dfVHpoc4LUK/Z1Dn4s6E58aurqxdoRReWffv24ZZbbkE6nYbdbsdf/uVf4vd///f5oH8pbOC3f0PxUkJ2Ho8HX/3qV/H1r38dw8PDmJiYYCGdzWZDrVZjb50+7mzKQY07KCRPIUZSNweDQVSrVZimycI8RVHgcrkAgMVJrVYLS0tLsNvtPJkumUyyElrXdfaInE4nHnroITz00EPIZrPYtWsXrr32Wpw4cQL//u//ztGAl4LYq+vHi2nJStEbVVVx2WWX4dWvfjXC4TC8Xi/i8ThKpRJKpRIb+1qthrm5ua4e9RaLhQcl0TTF2dlZrnsnDUgkEkGj0UAul0OlUkEkEkE6nUa73cbp06exf/9+HDt2jPPnVCtfrVZx6aWXclTKbrdjcnKShYF0hn7jG9+AYRhIp9NIpVIcaXixe69fcvAXlYEHzjQ1uOaaa/BP//RP+H//7/9hZmYGf/VXf3UBVvfS+dznPodkMonPfe5zXZ/XNA379+/HJz/5SdTrdSwtLWFubu5lPdcGfvs3FC9lr8qyjG3btuGTn/wkHnzwQTzyyCNIJBLYtWsXq4opX0kCOsrBd07HAs6EUqnsLhgMwufz8XNQeJ4G2dCB3TmqlkZwBoNBRCIRHDt2DIZh4Pjx48jlcggGg1xSZBgGCoUC9yKnqXYvt45Y7NX148XsV2pvLEkSAoEAtm3bhqmpKYyNjWFkZITz8SSwy+VyWF1d7WoaY7fb2bBTOonK1Whvk4iOIkTUCW91dRXFYhHZbBaZTAYAuARzYGAA27Ztw/z8PNbW1iBJEkZHR/FLv/RLkCSJxX6GYeCRRx7B/fff/wwdQGdK4MXQD/v1ognRE41GAw888AD+1//6X3jwwQd5c/YaXdfxpS99CcCZnBWp/zvRNA2PPvoob0LB5qbVauHIkSP4+c9/jl/84hdIp9O49tprMTc3h7GxMaiqyq00SdhEQrdmswm73c65c1K+S5LE+U0actMpCqKSODLsdOjStLtMJoNUKoWjR49y0xMquaOwK4nzyuUySqWSaGizyemskS8Wizhx4gRKpRKSySQymQyuuuoq7g5HzY8OHz4Mq9UKn8+HYDDIHeToPG42mzznnTzhs0cpUxmdoijcdpmqQU6cOAFd16FpGpaXl3H69Gkkk0nWlJw6dQqVSoVFpPl8HgcPHuyauthPofaXykVn4InPfvazAIArrrgCMzMz2Lp1a0/XYxgG/vZv/xYA8J/+03/CK1/5Shw/frzre5566in8/u//fi+WJ+ghFGHasmULJiYmMDc3h0KhwB3lKHxJwjkArHwnL4hCjW63m2vXqQ0nHWTU2laSJO44RwrmdDqNSqUCt9vNHcVoGAh1MAuHw2g0Gqxspvp3weam0wjS3shms1hYWEA6ncaVV17JAjuLxQKXy4WFhQUeaERdEUkoSlDXO1Lfn91ngYR8brcbHo+HvXqbzYbx8XHMz89D0zScOHECy8vL3Kgmm81i3759XJufyWSQyWReUij+2egXFf1FF6I/F6qqolAodInvOjsWXeg36+zn+eAHP4gvf/nLF/Q5z35uwYXlfO0hu92Oxx9/HH/6p3+KXC6H8fFxXHfddajX66hUKlw6R4NiyJsHwCKmI0eOwDRN3HjjjYhEIqhUKiiVSly69sMf/pAHhWSzWbTbbUSjUbzmNa/BzTffjCuuuALf//738c1vfhPHjh1DOp1el4iS2Kvrx8vZr/SzNHPgC1/4AiYmJhAIBHhYDO01j8cDt9uNo0eP8oTEzgFL2WyWBXiZTIab1NCFlDrZ0Qx6AMhms5iZmcHdd9+Nubk5WK1WOBwOLumkS+3ZAuXzvb/6Yb9etB58J4ZhsMoSAHbt2oWf/exnGB0dhaZpeN/73of/+T//5wV57ve85z343ve+h2g0+gyPXSA4m2q1iuuuu447zZ0+fRp79uzBF77wBZimiUAggMnJSVxzzTWc+yTviULq9Xod5XIZd999NyKRCDweD/L5PCv3FUXBwMAAgsEgxsfH8brXvQ6nT5/GT3/6U3z961/nfGkkEulS1wsEwNOGjbQdH/vYx9jYDwwM4C1veQvXrg8ODmJqagqBQIBHD+dyOZw+fRqnT5/G7t27uxygbDbLFRs01ZAiV9SUye/342c/+xmWl5c5LUXRAl3XuTT0YkB48OfA6/Xila98JX74wx/iT//0T/HLv/zL2L1793l/njvuuAP33XcfVldXYbfb8ZrXvAbAmVD8/Pz8eX++c7GB3/4NxYXaq3a7HVu2bMGJEyfw7ne/G9dccw1isRj27duHRx55hJXKNBKWWncC4DImUtn7fD5ceeWVSKfTOHLkCJcZ7dixA8ePH8f8/DzK5TLXMauqymVH64HYq+vH+dqvnfoOUtonEgk0Gg3E43EMDg5iYGAAoVAIkUiEe8PncjkW4dntdjidTjgcDszMzGBycpKjU8FgEAsLC/D5fKjVashms0gmk/i3f/s3FItF1pJQ74jOiNaFpF9U9MKDPwelUgnf//73AZxRHx84cAAHDhwAALzrXe+Cw+F41p9tNBr4p3/6p643V5Zl3HHHHZxLKpfL+O53v4vvfe97XBNcrVbFbGzBi6ZarXIHw1KpxIriJ554AqdOneK8o8ViYUU9pZ+oMxiNfrVYLNB1nVXE1WoVlUoFBw8exMLCQlezDwqjCgTPRadQrd1uQ9M0zMzM8BjXfD6PhYUF+P1+7NmzB1arFXa7HX6/H4FAACdPnoRhGDAMA6VSCceOHUOhUOBwezweh9VqRaVS4V7zR44cQS6X6xLLUX79YrskCg/+RfLUU09xW8ZzYRgGpqen+ZaoKAri8TiOHz/O3s78/Dxe8YpXrNeSn5MN/PZvKHqxV2OxGNcex2IxTExMoFgsIp/Po1wuwzRNHD16lAVOVJoUCARY9VytVvlw7fVe6fXzX0xcqP3a6c3TxVOWZRiGgdtuuw3NZhPBYBCXXnopEokE9u/fj0qlgnQ6jQMHDrAmhM7XQCCAN77xjcjlctxv/qmnnur5XukXD14Y+AvM3r17sX//fgDAzTffjPvuu6+3CzqLDfz2byg2wl612WwYHBxErVZDJpN5wb231wuxV9ePzrbDvaBzOBKthereq9UqN6sJBAJc9lmtVvvCqBL9sF+Fgb/AKIqCaDQKAEin0+LQvEjZCHsVeHoGfD8dlITYq+tHr/cr5e7PVclEn5NlmXs2vNRmNBcK4cGfB3q9CTcDG/jt31CIvfryEXt1/eiH/dpp4OnjZ/ueftwb/bAmIbITCAQCQd9xtoHs9OY7hXuCZ6c/+rQKBAKBQPACEEb9hSMMvEAgEAgE55F+SHEAwsALBAKBQLApEQZeIBAIBILzRGf3vl4jDLxAIBAIunipBqpfDFsv6acyU6GiFwgEAkEXsiyfs2c7GfBnE7qdy8A/nyju+R7z+b7/7HK6l8KzXUza7TY/fufzno/nXA82dB28QCAQCASCcyNC9AKBQCAQbEKEgRcIBAKBYBMiDLxAIBAIBJsQYeAFAoFAINiECAMvEAgEAsEmRBh4gUAgEAg2IcLACwQCgUCwCREGXiAQCASCTYgw8AKBQCAQbEKEgRcIBAKBYBMiDLxAIBAIBJsQYeAFAoFAINiECAMvEAgEAsEmRBh4gUAgEAg2IRt6HvyzzfAVvHDEtOD1QezVl4/Yq+uHxWLper0v5GvfL7PVX8w6XsgM+374P21oAy8QCASCC8d6GKl+MITAi1tHv6z5+RAheoFAIBB00W63N4wR60f6JWInDLxAIBAIuhDGfXMgDLxAIBAIBOeRfrkgCQMvEAgEAsEmRBh4gUAgEHTRLznkjUq/vH7CwAsEAoFAsAkRBl4gEAgEXfRLDlnw8hAGXiAQCASC80S/hOcB0ehGIBAIBILzRj9FP4QHLxAIBALBJkQYeIFAIBAINiEiRH+B8Hq9sFq7X95SqYRGo9GjFQkuNs41PONcn5NlGbIsQ5IkyLIMRVFgGAaazeZ6LldwkfJCBrfQ97Xbbd6rhNinz47U7qeEwYukn8QMZ7N//37s3bu363M333wz7rvvvt4s6FnYwG//hqIXezUcDsM0Tb5USpIEt9sNTdNgGAZ/35YtWxCPxxGJRDA8PIxXvvKV+LM/+zMcOnRo3df8XIi9un5cyP0qSRIba3pPLRZLl6E++/k73/tXvOIVCIVCcDgccDqduO+++zA/P3/B1vtSkCQJrVar18sQBv6FkkgkcO+99/LHP/rRj/CRj3zkGd+nqioOHDiA8fFx2O32rq8tLS3BMAwsLCzg1ltvveBrfiFs4Ld/Q7Gee9VqtWJ0dJQPzGq1inK5DJvNBgCo1+toNBqwWCyIx+MIhUJwOp1wOp3wer0AgMXFRb4YPPLII+u29udC7NX143zv17O9dBpHK8syAoEAbr/9drhcLjQaDRw7dgzf//73+XvpQgAA73jHO9Bqtbq+5vf7MT8/j1KpBNM0cfjwYdTr9fO6/pdCP+xXEaJ/FiRJwmc+8xk20l6vF1NTU13f8/nPf77r45mZGXz1q1/F1NQULBbLMx5zaGgIABCNRvH5z38ef/iHfwhd1y/Q/0BwMSDLMlwuF1RVxfDwMLxeL2w2G1RV5b1Vr9dRLpfRaDSg6zpM00S1WkWz2cTg4CAURYEkSajVashkMmg0GrDb7RgaGkIoFEKpVMLx48dFKFTwkiGP3Wq1IhgMYvv27Wg2mzAMA+12Gz6fD263G41GA+Pj43jVq14Fu92ObDaLRqMBwzCQTqdhs9kgyzLa7TZ7yA6Hgz3mRqMBr9eLUqmEZrPJUYL1njnfL9FlYeA72Lt3LzweD4AzB+dHPvIRqKp6zu+dmprCnXfe2fW5AwcOYHZ29nnfXJ/PhzvvvBM//elPUSqVkEqlcOzYsfPyfxBcHKiqyvnyoaEh+P1+7Ny5E+FwGHa7HaVSCYVCAc1mE41GA6ZpolarodVqoVqtQtd16LqOyclJ1Go1NJtNmKaJ1dVV3vNWqxVutxuXXHIJyuUyH8j5fL7H/3vBRkJRFAQCASiKwvv12muvhSRJyGazyGazqFarAM54vS6Xi8/iEydOwDAMlMtlAICmaXC73bBYLJBlmT9Hl9ZGowGPx8NRqnq93hfefK+46EP0siyzl37//ffj8ssvf9mP+WL55je/ife85z0wTXPdn3sDv/0bivN1o6fH2bp1KxRFgcPhwDXXXINoNAqbzQa73Q6r1Yp8Po90Oo1yuQzTNNFqteDz+XDppZfCarXCNE0Ui0WMjIwgn8+j3W6jWCzixz/+MSKRCMrlMjRNg9Vqxa233opUKgWLxYLZ2Vncc889PfHmxV5dP8hLfrlIkoR4PI4bbriB8+YejwexWAxutxulUgmLi4soFotoNpuwWq2wWq2QJAnVahXz8/NoNBpotVpoNptQVRVWqxU2m40jT6VSCbVaDdVqFaZpol6v8+XWMAz+93rTD/v1ojfw119/PX76058CAG+s9abdbmN5eRnDw8M9eW7Bhed87CuPx4Pt27fDNE04nU6YpgmLxYLXvOY1CAQC7Hk3Gg020IuLi6hUKnA4HLj00ksRCAQgSRLq9ToMw4Cqql05TQD4xS9+AcMwsLS0hKWlJVxyySXweDyw2WyQJAnlchnf+c53Xvb/58Ui9ur6cT72azQaxatf/WoMDw+jUqnAarXC6XTC4XDAYrHANE0YhsF/0uk0AMBut8PtdqPVamFhYQF+vx9erxetVgt2ux2FQgGVSgXtdhuRSASGYWBlZQVWqxU+nw/FYhGtVgu7d++Gw+HAqVOn8L3vfe9l/39eLP2wXy/qEP3v/u7v4rd/+7ehKEpP1yFJUs/XIOhvxsbGMDU1hbGxMdjtdpimiWazCVmWYZomrFYr5yXr9TparRb/m8KeqVQKxWIRTqcTqqpCURQ0m0023JSr3LJlCzRNQ7lcxunTp6EoCkqlEl8MRIhe8GxYLBa0Wi2EQiFs2bIFW7duha7rkCQJDocDLpcL9Xoduq5jZWUFsizD5/PxZdViscBqtXLKKBQKwe12Q1VVNJtNlEol1Ot1uFwuSJKE06dPI5FIYHR0lHVPLpcLmqZB13WOXKmqymkAAH2hcF8PLrpGNw6HA3/0R3+EYDCIkZERTE9P93pJAM5syj/6oz+Cz+fr9VIEfYIkSQgGg3C5XPB6vfD7/QiFQgiFQojH4xgdHcXk5CQikQj3XCBRkSzL0DQNzWYT5XIZR44cQa1WQ7FYRKVSQb1e5/p3ytPTz9lsNvj9fmzbtg033HADEokEWq0WDMPgNFIoFOIcqEBAPRQkSYLL5cK2bduwe/duNJtNLmez2Wys67BYLJwaNQwDrVYLFosFiqJAluWu/dlut3l/kjNEOXiKQFmtVt6PkiTBYrFA0zTk83nouo5EIoFQKAS73c6PczFw0Xjww8PDCAQC8Hq9+PSnP40nn3wS4XC418ti3G43Pv3pT2Pfvn147LHHkMvler0kQY9wuVzsVY+Pj6NYLHIInrwbn8/XFe4sl8tdofZWq4VKpQLgjIp+cXERe/fuRbPZZAGSLMscKpUkqasxk9PpxNatWzE9PY18Po9UKoVCoQAAsNlsGB4eZk9MNG+6uHG73bDZbGi323A6nZBlGQMDA4hGoyiXy4jH42yAySibpolgMMiRIvL8KU3aarWgKApM0+RoFeXe6QJQr9cRDAbRaDRQrVb5gkHeOWlPZFnG+Pg40uk0FhcXe6J16hUXRQ5elmV89atfxa/92q9d4BWdHz74wQ/iy1/+8ro81wZ++zcUL3SvSpKEV77ylRgfH0e9Xkc0GkWlUuEceC6XQ61Ww86dO+HxeNjjzmQyqFaraLfbaDabSKfTaDQaqNVqkCQJTqcT9Xodbrcb7XYbDocDQ0NDfDmgx6G/a7Uar6dQKKDRaODIkSNYWVlBvV7H0NAQFhcXceLECaytrV3Il44Re3X9eDEe7vXXX49EIoFisYhLL70UP//5z1EoFOD1enHttdciFouxhy5JEkzTRCAQgKZpqFQqKJfLyOVy7J1TuqjVasE0Tei6jmazCZfLBY/Hg2aziVwuB13XMTAwwMaeRKeNRgOapnGVid1uR7VahSRJePzxx3Hy5Ml1KZvrh/16UXjwMzMzGB0d7fUyBILn5QMf+AD8fj+HJu12O3w+H5cYBYNB/Ou//isAIBgMwul0wmq1Qtd1LC8vw263Y2BgAD6fjz2bVqvFOVBN09But1Gr1ZBOp9nI12o1vgwEg0GOFNRqNVgsFqytrcHj8WB0dBTVahUOhwOJRAKrq6vrZuAF68ezGUAKg1OY+1WvehWmp6cRDAZRr9fx9a9/HYFAAG984xsxPT2NgwcP4vjx47j22mvh9XpRrVaxvLyMcrmMUqnEnncoFGIVfLvd5s527XYbXq8XdrsdiqLA7/fD7XZjcXERKysrsNvtnHsn1byqqrDZbLzvrVYrWq0WwuEwpwfoa/1ghC8kF4WBp0Nwo/DRj34Uo6Oj+MQnPtHrpQjWGTK49XodVquVG3ZQLh4Adu/ejcnJSRbbzc7OYnp6Gi6XC1arFR6PB5qmIZvNYm5uDpqmQVVV7lhHnlAoFGIBHgA23OS9A2cOdMMw4HA44PV6uSFOsVhEoVDAwMAAWq0W5ubmevFyCS4QzzavoPNjv9+PgYEBOJ1O/vwtt9wCr9eLdruNo0ePskJ+fn6ec+BUstaZFqJadRJ+1ut11Go1WK1WTiMtLy8jGo0imUzC4/EgHo+j2WyyULRTf0KiOsrV02O4XC4EAgFks9lNb9yBTWzgt23bhptuugkA+ADbKGzfvh0LCwu9XoZgnQiFQhgbG4PH44Hf70elUoEsy3C73ajX67BYLHxJbTQaGB0dRTAY5J8PBoOw2+1wOp18yLndbui6zq1nSdTUOaiDDkcAfNAqisKHJIX7m80mly6Rt08hU/K8hIHfnNBeIYU79Q0JBALYvn07IpEInE4nh9+vvvpqyLKMUqmEUqkE4Mw+W1tbQ7Vahdfr5coOEstRiJ3q2emSSvl0MvIul4v3JwnyqEuj2+3uyvNLksR7u9FocAWIqqrwer2cdrrQr1uv2XQGfmRkBLIs481vfjP++3//771ezktGVVWMjIwIQ7+J8Xq9kGUZ27Ztw2te8xoMDQ1x/pBqhsnQt9ttFscFg0E+GC0WCyYnJ1GpVDjnbpomRkZGYBgGxsfH2YtSVZVD8ZVKhcP+lL8k74oO81qthnq9zqpkOmibzSbcbjfC4TAsFguKxSIcDsdFJV7a7HQaKPK0qZ1sKBTC6OgorrnmGmiaxsp3u92O7du3o1qtcrfEZDIJi8WC06dPo1qtol6vw2azwTRNhMNhyLLMefhkMol6vQ6fz8cdGYvFIqxWK1wuF6LRKKxWKyvnO8V0DoeDw/gkIKXQfLPZ5HC8qqrw+/1YW1uDpmm9ennXjU1l4GVZxsGDB9lr2ci88pWvxKFDh+D3+y+ams2LCUmS8P73vx9+vx+qqnKUKZPJcG690WjAarWiVquxAaZ6dxIOaZrGBjgYDMIwDBYlZbNZDvFTnpIuBw6HA5FIBI1GA5VKpav+mMRN5GUFg0GcPHmSG40YhsHeFOXsb7jhBvzkJz/p5UsqOI90hq9p2Mt73/teXHnllQiFQqjVajh48CCy2SyAM02YBgcHoWkaPB4PhoaGODT+1FNPQZZleL1eBINB1Go1zMzMsMFPJpMoFotIpVK49tpr4XA4sH//flx//fXQNA02mw0ulws+nw+yLCMYDLKOJJ/Pw+fz8RlJ5Zyk7CcdSjab5TSV3W6HpmmYmZnpyWu7nmwaAz89PY3777+fe8lvdO699168853vFMZ9ExIMBvGrv/qrPNSFSt5qtRp0XWeBEJX4ZDKZrmEcZOTz+TwWFxeRSCRgt9vZ6Ou6Drvdzt57o9FAs9nE6uoqisUifD4fezsWiwU2mw02mw0Wi+UZh2Or1YLT6cTw8DAKhQJ7S8vLywgEAtB1HYuLi/j5z3/e65dVcAGwWq0YGxvDJz/5SQwODqJYLGJubo73wuDgIILBIDweDxwOBwYHB5FIJNBoNLCysoK5uTluQkNzEEqlEtxuN1d6tNttjv489thjcDqd8Pl8+Md//Ee8//3vRzgc5vI52v+6rsMwDA7Fk3qe5i1QZIoG3CQSCfh8Puzfvx9Hjx5FsVjs8Su7PmwaA2+1WhGJRHq9jPPCV77yFfzjP/4jMplMr5ciuABQuH12dhbpdBrxeByDg4PsXZCanVrPkjqY8ujk1Xu9XkxMTEBRFD7UvF4vFEVBMpnkKXPU0c7r9cIwDA5NkhiKcqiapuHIkSOYnJyEz+fjQ5kiCB6Phy8LAJBKpTAzM4NTp05d1AM9NivkuRuGgX379uHWW2/t6umuaRquuOIKxONxNrCJRIKbLJXLZe4iJ8sye9P0caVS4d7xw8PDePDBBzE4OMjDYt761rfC7XZziN1ut/P+IxW8y+WCruusyK/X63A6nfwzJL4DgHQ6jbW1NeTz+a6udpuZTWPgNxP79u3Dz372s14vQ3CBaLfbHOa22+1ds7KpzWxnmVpna9pOlT3NcKd8OomMqKyNcvgkjnI6ncjlctw8xO1282MA4O5hnRO7AKBWq3F9fGcjkYWFBZw+fRqpVKo3L6TggkHGnd7vTCaDXC7HnrTdbkc8HsfU1BQCgQAAcAkmaT5arRb8fj+nexqNBofbaU+Ran5gYABDQ0MYHh6G0+mEpmmYnJyExWJBJpNBqVSC1WpFpVLhyo1qtco/39kQx2azoVwucxMoUuXncjkevnSxjD7eFAZeVVXeZBudXC4HwzB6vQzBBcJqtbKY7ZZbbuFctizLKJfLKBQKXSK6bDaLgYEBaJoGTdMwPj7Ohy6p3KvVKgKBACvfSXVPecrO/H0qlUKtVoPD4eB58KSgt1gs2LlzJ38PqfbpIDVNk0OqhmHgxIkTSCaTYr9uYhRFgcvl4j1Il0FVVXHFFVdgamoKjUaD+80nk0m+nJIxl2WZ+ylQ6NzlcnG4HTgTpdqzZw+L4wKBAJLJJMbGxrC4uIiDBw/CNE2Uy2XceuutnK6iss3O2QvUcdHr9cJqtaJer7OQb72Me7+U4G0KA//hD38Yn/3sZ3u9jPPC3r17MT8/3+tlCC4Qe/fuxTXXXIP5+XkWtgHgWewTExOwWq0sYDtx4gQsFgvnIU+cOIFYLMbeeKlUwq5duzinSF48qeaprEjTND742u02dF1HuVxGOp3GJZdcglAoBEVRYBgG/H4/2u020uk0G/v7778fNputK2owOzvbVTMv2DxQI5twOIzp6Wn4fD4MDQ3xZY7aKVerVeRyOaytrSGbzXJLWFKvG4YBr9eLZDLJmhIKtTscDjgcDsiyjHw+j2PHjqFQKMDtdmPr1q1wOByYmZlBNpvtyu9T1MvtdmNwcJB/RzRNw9LSEiqVCi655BIYhsHhfKvVin379vFc+QuNKJO7iFlYWMDNN998zq8tLy+v82oE60mr1YLNZsOePXugqiqefPJJOBwOTE1NoVKpQFVVDo9Tu0/q1lWv17G6uorh4WGetEWHrs/n41a1VqsVw8PD7MEbhsHztrdv3w6bzQbgjGJ/fn4e99xzD0ZHRzE2NoZKpQK/3w9d17GwsIBDhw5hdnaWRVA0VIRy84LNCVVm0H40TRP5fJ5TRl6vl0WYjUYDhmEgl8txtIeEopVKBdVqlQWghUIB8/PzyGazXZUaDocD7XYbk5OTLNqLRCJYXFzE1NQUi+koEkA5/aNHj2J1dRWGYaBUKqFcLmNxcRGLi4ssRiWPnbo6XkwIA3+BWVxcxGc+85muz5VKJczOzvZoRYJeQiFvGptJUDMZGv9KU+AcDgeHx5vNJmKxGCvfSQkPgDvfUa6TaoDpAG61WhzGJ+LxOIAzXn8ul8Pq6ipWV1dZMFUul5HNZtfN6xH0D1Q3TiFzajFL4XMy3svLy5y6ocgR7Uky6C6Xi/clcGZOPOXOSfQpSRJCoRALS+v1Ore0dTgcfCklQSl1Uzxy5AhfPKgHRGd7ZuDpaAT9+2JiUxj4+fl5PPLII7jmmmt6vZRnkE6n8aUvfanXyxD0CYVCAUtLSwgGgzBNkw9Qi8XCOUPDMLgvt2EYnNOUZRnxeByFQgHxeJzD7+Sl0MfUw5s8KYfDAQCw2+3cLEeSJPh8Pv7506dPY3FxEceOHevxKyToB8jA67qOYrHIw2SoZwPltUlMV61W0Wg0uFqDoFHEFC4nY6uqKs9GoIuu1+tlwVyj0eAphwTpS6jWPZ1O49SpUzwWmfZy5/d3crEZd2CTGPhvfOMbOHToEA4dOtTrpQgEz8nc3BwMw8A111wDXddRrVbhdrt5ShZ9jprTPPbYY7jiiitgsVjgdrvh9Xrxox/9CK961augqirq9TqKxSKCwSAfyiSOc7lc3ECn2WyytoPmclOe3+fzIZFIwDAMYeAFAJ428CsrK2g2m7jsssu4o12z2eQOdjSmmEYHU5dDEtiFw2Hous7pomKxiJMnT3IveTK6jUYDFosF7XYb1WoVtVoNkUiEW9TKsoxiscidFTtnvdOF9ey1d7Lexr1fLhObwsALBBuJRqOBTCYDVVUxNDQEr9cLXdehaRqHH3O5HBYXF3na1sDAAPecTyQS3L+bmoKUy2UexZnJZHD8+HEYhoFLL70Ug4ODqNfrHDEgL4rafpKxF7XsAoKqNKih0s9+9jNcddVVAM5EJZeWlnDq1Cm8/vWvh67r0HWdBXSapsHhcMDn82FkZASZTAYLCwvs7ZPepFKpcK06aTwoH99qtXD69GkEg0FORxmGgUOHDmFgYACpVApLS0tsSDtz6/1gXIXI7iLgS1/6Er7whS/0ehmCPqPRaGB1dRUWiwVbtmzhQRtkdCnfHolEWDnfaDRQKpVw3333YWpqCqqqchOSXC4HRVGQy+WQz+eRTCbx0EMPoVAoYGJiAmNjYyxoolA/AG4y0mw2sW/fPjzwwAM9fmUE/QIp3slYOp1OLC0tQVVVOJ1OTgfpus5iS7vdzkLRZDLJzZZWV1dRLpe5R32lUuFyUer94HA4eO+TRz44OIh2u42FhQUeXjM0NMQlnpVKpWsyXT8Y9n5Dfv5v2Risra3hz/7sz/qqQ1Eymbwo+h0LXhymaeIXv/gFFhYWsLS0hHQ6DV3Xsba2hnQ6jUKhwAci5SstFgv3je+cF9+ZcyeVMXX2kiQJ+Xwe+XyevXRq+kFhUPqZYrGIXC7X65dG0EeQwaSui4VCgaNMXq8XpmlyCJ+ayjgcDhiGgXK5jHw+j4WFBVQqFR5o5PF4ePIcaU8AsIaEcvNWq5Wb66ytrSGVSqFYLEJRFFSrVRiGgVqt1rdGvV/WtWk8+HQ6jU996lO45ZZb4Ha7n/H1sbGxrhGbAkGvqFarOHz4MHvQuVwO4XCYm4R0zsiWJAmBQIA9dprnTs1uqJxJkiQ4HA6oqspqfFVVWaVMlwQAXa0+Sd18sXT2ErxwKJVTr9dx8uRJOJ1OmKbJ092KxSKOHz+OqakpRKNRNJtNWK1WlMtlTgmVSiUeDmO1Wln0SZ0R6WJaqVS4vp1KQlOpFHe9o/1NTXU6Pf2zxXWCp9k0Bh44syFvvPHGrs/RYfnVr34Vd9xxRy+WJRCck1OnTuHUqVP8MYXO3/GOd2BsbAynTp1CIpHgHtt0KGqaBp/PB0mSWJCnqirC4TA8Hg9sNhvuv/9+GIaBUCiEcDiMWq2GRqPBZUh0KNLjdpbPCQSdkPF84oknuBud3W6H2+3G7OwsisUiJicnEY/HWTVPkSRN0xAKhVgYRxdLr9fLItFWq4VyuYyVlRVuuQwAgUAAfr+fP0edGKmFruD52VQG/mwSiQROnDgBAFxHKRD0Ix6PBx/84Afhcrk4fJ5IJLrmswNnDlsawEGeN3UGa7VasFgsSCQS+MAHPoDJyUm+BFB5HE2woxwqeUHiwBQ8F51iNooAAcBrX/tansVOzXAo1w6c6Xg3Pz/Pnju1aS4Wi3C73bz3JiYmcODAAbjdbvj9fh6MRKmpYrGIfD6PkZERPPDAA0gmk7we4GlRW7948v3y+7RpDfxtt92GP/7jP2aPRSDoV6anp3HzzTfD5XJxORzlxv1+P3vesizD5/Nx720y/JVKBW63m0P6FosFfr8fhw8fxszMDBRFwZ49e7jumLx+EjnRoS0QdHIuI0WDZsgDb7fbPDshl8txGJ3C7U6nE6VSiSNEtM80TcPc3BxsNhuazSaeeuopBAIB3pNUV0+18LIs8wWBmtpQ45x+pF8uGpvSwL/xjW/E7bffjmuvvbbXSxEInpPBwUFs2bIFIyMj3IaTDjRSGlOZEIVHSXxHXj3NyabwJ/08dbyr1WpYXFzkFrgUnqcDcmVlBaVSqZcvg6CPIWMlSRIURYHb7UYkEmGDTCVu1PmOutqRQaauirTfarUaD4VxuVzw+/1dUSqKTlHtPJXsAUC5XH5GROv5auB7Qb948Jsy8fbBD34Qt99+e6+XgWAwiOHh4a7P+Xw+jI6O9mhFgn5jenoaExMTAMBCJIIUyXTQkWfUWfNLeXkqd+v8E41GsWfPHgwPD2NpaQm5XI7nZLdaLeTzeZimidnZWZRKJZ4URlCdvODi5GzxGjVFikajGBgYwJYtW9hD79w/rVaL69lJKU/ppHq9DsMweB48/XtoaIijSfQ3PZZpmqhUKmg0Gkin09wfn8YXkzGlS63gaTalB98vfPSjH8UNN9yAyy+/nD/37ne/Gx/96EexZcuWHq5M0C/E43HE43EOwVerVT4Ua7UalpaWEIvFoCgKt54NBALcv7tTIEd/kweVz+fhcDiQSCTg9Xpx//33w+l0wuv1ol6v4+jRo3C73ahWq9i1axckScLdd9/NaxsaGsL4+Djuvffenrw2gv5CkiTs3bsXQ0NDAM60lq1UKkgkEvD5fJBlGel0mlNNALhFLSnnKX1Ek+poBKyiKPB6vV17mC601KJWURRkMhlMTk7C7/djaWkJqVQKuq4DAE87JJV9Lz35fogiAIDU7peVvATODoPIsszKYxp40GuazSaP6QTAdZ75fB4A8L73va/rUF1vNvDbv6E4V8juwx/+MH+eetG7XC4e+Up17G63u2v0K824pkOv3W7zfG3yikKhECwWC9cMa5qGWq2GI0eOcG6UvCCr1drlCZFoj0r4vve972F4eBjHjx9HNptd19etE7FX149z7dfrrrsOfr8fHo+HBXLUm97pdMJut2N1dRWmacLpdMJqtaJQKMBut6NQKHCpm8PhgNPpRKFQYBGpzWY7Zx8GaoNbr9fZ0NOo43K5jEqlAqfTia1bt3bV2B8+fBinTp1CLpfjcH/n/+259tL5CvP3w37dNAZ+eHgYX/jCF/CmN72pK8zZ7zzyyCNYXl5GoVDAb/7mb67782/gt39D0blXVVXFZZddhje+8Y0scCPxEnCmXSeNZLVardB1nWvcbTYbK9/JI6L+4MCZGvtisQhd1xGLxXiMZqlUQiQSwcrKCo/0pB7fNK2L8vyZTIYnhlH50sGDB+F0OvnSsW/fvnV/DcVeXT8696uiKEgkErj66qu5HwMAFtIBZy6oTqeT9w/wdEtmq9XKxpf2q6qq0DQN7Xabc/W5XK4rp05q/c5BMpIk8SW23W4jHA5jbGyMB9zQDIalpSXMz8+jXC6jVqvh4Ycf7lL/r0euvh/268axhM+D1+vFW9/61l4v40VDE/CKxSLuueceAMDjjz+OkydP9nJZgguIzWbD6Ogo7HY7t93sFCqRN00eC82Fp1GZrVaLG9e0Wi1omsYHZ71e5w51rVYLuq6jUqnANE1omgaPx8PpADqgaR1k4Kn1qNVqhdPpxJYtW7C2toZEIgG73c6zvBcXFzk3Kti8KIqCoaEhblELPL1PSRtCoXUadESjYMvlMhKJRFfYnow1Nbmh6o9ms4lqtcqTEOnzAFh02mg0+GJgs9lQrVYxPj7O7Z4pPE+tbul36+DBg1AUpety0C+CvAvJpjHwGx2fz4evf/3rAICPf/zj+MpXvtIV2hdsHihU2W634XQ6Ua/XoWka5xyJdrsN0zSxtrYGADyUgxqNUMev5eVlRKNRHjVrmiYGBga4ZKnVasHhcCCdTmNgYABut5vz/CRUslgskGWZ86WdHhPlXmnsrN/vx9jYGL773e9iYWEB5XJZlNltYqxWK2KxGDdGopp26tdA39Nut5FOp7t6jlitVmzbto2NssVi4csnXSZLpRJsNhuH3EmkR393/qHhN7QXjx8/jltuuQXFYhHJZBIrKyuc0x8eHobL5UKr1eKJialUCmtra9zKebMjDHwfctddd+HWW2/FL/3SL/V6KYILhMVigWmamJ+f5/I24Ex9MDWiIe96cnISa2trmJ+fx86dO5HJZKBpGofmbTYbFhcXEQgEUKvVWGBUKBR4OIjFYkGxWES5XEaj0eA8KgnudF1HKpXC/v37sWvXLs7xA2da5pIGgIbVWCwWRCIRzqWKMbObExJx0gx2n8/HgjlqWUsajkajgcHBQeRyOfj9fjidTuRyOZRKJTz44IOslh8bG0O73eaJcqSa93g8GBwcRKvVQqFQQKFQQCAQ4EgVDaXZs2cPt2MeGBjA448/jkwmA0VRMDg4iLe//e348pe/zJ56MpmE0+nEzp07cckll2Bubg4//OEPe/3SrgvCwAsE64zD4cCuXbswNzcHu93OAiWasU2lQoqioFAooNVqcU/uY8eOsXiOPOxQKMTCI2qUAzytRCaPqTPfKcsyarUaMpkM/H4/P76qqshms5wSaDQa/DfwdF6x3W4jkUigVCqJEP0mptVqoVqtYnFxEVNTU7wXdF2Hz+fjyI0sy1AUBaVSCaqqcjMam82GhYUFjI+Ps8qdQvGhUAiRSAQA+JJQrVaRyWSwuLgIj8eDEydOwOPxIBgMIhAIsH6E8vlutxuapmFiYgIjIyMYGxsDAFx11VVwu90sFl1cXOy6KFwsbBoDv7Kygt/+7d/GX/zFX3D4RiDoR0qlEr797W/j+uuvRy6XQ6VSQSwWY/V6qVSCxWJBOBxGs9mEx+NhD0nXdayursLr9XJ4nS4D5PnTBYAmdlGulBqVkIiPGuvMzMzANE3UajU4HA4MDAzwIBA6EDun1wFnpjeSYlmwuanVajh9+jTsdjt0XYfb7eYQPYXNKQql6zqcTid7/u12u0uYR3uO9hqlhmq1GqenHA4H4vE4AoEA4vE493rw+/3cJKezJ77P5+MUQbFYRKlU4jC8YRhYWFhAoVCAaZoIh8MIh8O9fDnXlU1j4PP5PP72b/8Wr33ta+FyuZBIJLBr165eL0sgeAa6ruOBBx7A2NgYlpeX4ff7EQgEYLVaUa1Woes6/7tWq7F3REr3tbU1NtbUmc5ut3MYXZZlFhpRUxvg6UYgVILXuR6qJaY+4NTpjkqUqEUoNdEplUoi736R0Gw2kc1mWZUej8cxODiIWq3GhpX2ArWXpSY3wBnvnEa7kkiU9B4AeK/R/qWyUIpsUZkbVXt0KuFpEA3tzUKhgHw+zwJT+tjlcqFQKLBO5WJh0xh44MxGedvb3gbgTEOZL37xi+ccHdvv0CEv2Nz84z/+IwBg165dGBsb465dZMgrlQoLhlRV5Q5eAwMDnGenemNSxpNgzuFw8EjNsw0xHZButxu1Wg1bt27liwLVF9P3UameLMsol8t8OMqyzE1MNrsS+WLkbIW5JElYWVlBoVBArVaDy+WC2+1Gq9Vio0u6kGq1ypdSq9XKVRx2ux12ux2lUgl+v59HyjYaDe7L0JlSovy8zWbjSIEsywgGg6ze93q90HWdo1k0snb79u1cdhcKhTA0NISZmRkcPHgQhUKBxX6bnU1TB38uRkdHMTc3tz6LOY986EMfwpe//OV1OTg38Nu/oXi+vep2u3HHHXcgm81yCNLtdiORSHAoEzhjWKmpDZXGdYr06O/Og1fXdeRyOS4rooY6lDsnj6rVanFPejpUKddJXlqj0UC1WsWpU6egaRqeeOKJdfsdE3t1/aDweidk9B0OByKRCG655Rbk83nuYlcsFuHz+Tg9REI6arLk9/sRDAa5hM00TTaynekeuqC6XC7YbDZUKhVOBxSLRTzxxBMYGRnBli1boGkaRkdH+XJAVSb/8R//wc8ZjUbxb//2b4hEIlhYWMDKysq6ePH9sF83lQd/NisrK9i9ezfuvffeDZV3ObsHtGDzo+s6vvWtb2Hnzp3siVcqFVitVkSjUc57Wq1W9pxoj1AolLyfztaeNLaTWn6GQiGuf6e8PgAeKWuxWOByuWCaJh/UFBUgj4y649lsNjFH/iKD9BzJZBI/+MEPcOmll6Jer8Pv9+OSSy7BwsICG2pStVcqFRbnUSMaqv6gfezxeKDrOofa6XkGBwfh9Xq5TwTt/XA4jEgkAkVROOrVbDahaRpmZ2d5yBJFCG6++WakUimcPn1ahOg3C/V6HYcOHcKnPvWpZ4Tq//N//s8IhUI9Wtmzc9ddd+HRRx/t9TIE6wwNf5mdnWWjabFYsLy8jMsuuwzhcJg9oM6cOl0GqLsdlddR/TuFMjtr3unnKRTaOS6WBE8A+HspNNput3nM5/z8PAzDOGd7UcHmhKo2aM/kcjnMzs5CURQeY7y8vIzh4WGuhW80GvD7/TyimEL3nXuXJs1R0xtZllGv19FoNLiKhISkiqIgHA7zIKZ8Ps+PT/PoqXkUNYOi/VwoFPjCezE0uQE2uYEn/uqv/uoZn7v88stx/fXXIxaL9WBFz84Xv/hFzM/P93oZgh6xsrLyjM+5XC4OUzocDm4S0pl3bDQa3LyGwu3kMZGXTm1uqUyIDDx9nQ5dqnunCwI9XqVSwdraGmZnZ7mU6WLIY16MPJvx6xwd22q1sLCwAJvNhnQ6jeXlZVQqFaiqCr/fz42WAoEADMPgVBCArksm7cN6vc6XBzLwy8vLrJZ3u90wTZM72lUqFRQKBfh8Pp63QCp+0qcAZwx7JpPB0tISKpXKc/7/NhsXhYE/F29/+9vxuc99Dh/5yEcAoKfDaTo9qItl4wleOI899hhGRkYwPj7O07u8Xi93s6PWtZIk8cFIxp8EclRjT2p4uhB0QgZeVVV4vV4O27tcLuTzeSwsLGBxcRGZTAbhcBgrKyvCwF+k0DlFVRaVSoW94kcffRRTU1MYGRnhUDlVcNRqNWSzWY44kVEn0R3pPqiPPX2NJtAdO3YM0WiUyzipzfLa2hqnlFZXVxGPxzkFYLFYcOTIEZw4ceKiqoEHNrnI7vmwWq2wWq3cxrNXQ2q++c1v4j3veQ8AcK5pvdjAb/+G4nzUi1N482Mf+xgGBwd5Nryu610NcigUCoANfr1eR7Va7UpVdZYqUR/748ePo1arYXh4GB6PB81mE/feey9WV1cRDAahaRoOHz4MYP33jtir68eL3a/n6hlPQ2rGx8cxOjrKxn5lZQUej4dLQwHA4/FwT/tUKoUnn3wSu3bt4nC+zWZDKBRir9w0TT4raV5DNptFoVCAy+WCw+HAysoK5ufnsbCwwFUlFDlYD/phv17UBp6QZRnXXnstvvKVr2Dbtm3n5TFfCG94wxtQLBaRTqdx/PjxdXveTjbw27+hOF97VZIkDA0N4b3vfS8SiQQkSYJpmtB1vUuJ3NnsiTyszlpiMu5utxuFQgG5XA75fB6pVAoOh4MvDNVqFel0Gvv27eN0QK9KOMVeXT9e6n7tHJRE42THx8dx2WWXsUCO1O30PVSpoWkaKpUKcrkckskk/H4/RkdHUSqVUCwW0Wq1cPnll6NWq7GhJiHpL37xC1QqFVgsFh5ZS4OXDMPgNNN67qF+2K8XbYi+k1arhQcffBD/+3//b7z97W/H9ddff0Ge55vf/CYWFxf543vvvVfUuwteFO12G4uLi7j//vuxZ88e7utNrWtJrBSNRrtC9FTqRgNDgDP5T+prT/lLapIzOzuLSqWCer3ORn09vR9Bb3mpIrTOIUXtdhuGYSCZTOLw4cPw+Xzw+XyIxWJc1kYeP40hLhaLHO6v1+swDAPZbBb5fB6qqmJubg6NRoPV9na7HV6vl4fM2O12pNNpDtcT623c+wVh4Dv4i7/4C1SrVe6PfC62bNnCNckvhpmZGfyP//E/8Nhjj72cJQoEAID77rsPmqaxB0QlRrqucziehE5k+Kn0iNp91ut1nDhxgvOUVqsViqJgaWkJx44dQ7FY7PV/U7ABIcNKBjWTySCbzSIQCGBwcBCKovDAGlLSd5Zidtbb08hZ0zQRCAQwPz/PY1/L5TLa7TYmJiaQzWZRLBY5f9/5/J0z5tf7Neg1IkT/IkmlUl0XgHOt4eyXlEpF+tFb38Bv/4aiF3v1Xe96Fw8EqVQqiMfjPDmuVCohm80iFotxGR2J8X74wx/2pXhO7NX140LsVwrF1+t1hMPhrtI4wzDwX//rf4Xf78fc3BzuvfdeXH755Wg0GiiXyyiVSiiVSrBarZienobVakUmk8GPf/xjrnen56A6+l7vl14/PyAM/IvG5/Px84ZCIZw8ebLr67quY3R09BkTtvp1tvsGfvs3FL3Yq+QNAWd0Jtu2bUM8HofH44EsyygUCrj33nufsQf6VWks9ur6sV77tdN7p1A9cGbv3nTTTXC73dxrPpfL4dSpU1hdXeXwfud0uM790eu90tlvoqfrEAb+pWOz2fDa176263ONRgM/+tGPer7BXigbZZ0bnV7vVUmSurrhUY4znU73dF0vBrFX14/13K+dwrzOOvtIJMKCUJpHT21vKexOXyP6ZY8IA38e6PWhuRnYwG//hkLs1ZeP2KvrRy/267nC6mfn81/Iz/QD/WLghchOIBAIBD3nXIb67Il2z/Z9gnMjDLxAIBAI+p7nuwD0E/2yLjEKSiAQCATrikhZrQ/CwAsEAoFg3ejXvPlmRBh4gUAgEAg2IcLACwQCgWDd6EVnuYsVYeAFAoFAsK6IEP36IAy8QCAQCASbEGHgBQKBQCB4AbyQ1AJ15usHhIEXCAQCwTkhY9UvBuulcr7X3/l4Zz92Z8vdXiMMvEAgEAieFer5/lJ/9mwDuN6DbM7n83eOoO18jn5lQ/eiFwgEAoFAcG6EBy8QCAQCwSZEGHiBQCAQCDYhwsALBAKBQLAJEQZeIBAIBIJNiDDwAoFAIBBsQoSBFwgEAoFgEyIMvEAgEAgEmxBh4AUCgUAg2IQIAy8QCAQCwSZEGHiBQCAQCDYhwsALBAKBQLAJEQZeIBAIBIJNiDDwAoFAIBBsQoSBFwgEAoFgE2Lt9QJeDv08h3ejIKYFrw9ir758xF5dPzbrfpUk6YLuI3rd2u12X+xX4cELBAKB4KKgH4zuerKhPXiBQCAQCPqFfrtACA9eIBAIBF1s1hD9etEvr58w8AKBQCDoot880Y2GLPeHae2PVQgEAoFAsElotVq9XgIAYeAFAoFAIDiv9EsERBh4gUAgEAg2IcLACwQCgWDT0y/Ct/VEGHiBQCAQbHrOFTa/UEa/Xy4TwsALBAKBoK+5UAbzQuXK+yUHLxrdCAQCgaDnnG3EX6iRvNDtZzcywsCfA4vFAp/Pd86v5fN5tNtt2Gw2uN1uAEChUOibsgjBxYUkSbBYLACe2f+a9qQkSfyn2Wz2ZJ0CAXCmPtxqtcLhcKDVavGebTabaDabXXsWAJrNZpfhp33cudeFcX92hIE/Bzt37sSTTz75jM+3223EYjGk02m86U1vwre+9S0AwOTkJGZnZ9d7mYKLHEmS4PF4sHfvXpimCU3TYJomarUaZFnG4uIiJEmC0+lEMBhENBrFoUOHYBgGH4qKoqDRaIhDUtCFLMsXxGkJBAJ45zvfienpaYRCIdRqNSwtLeEHP/gBnnjiCUiSBLfbjWg0ii1btiCVSiGXy6FUKsE0TbRaLVgsFtTrddRqtWddo/DqzyC1N/CrcCHyMh/60Ifw//1//x9GRkbO+fXZ2Vk0m0243W4MDAwAAObm5lCv18/5/YcPH8Zb3vKW877O88UGfvs3FOd7r1qtVjidToTDYUxPT+Oaa65BLBaDqqqQJAmapiGfz6NarQIA7HY7HA4He0u1Wg31eh0rKyvYt28fSqUSarUaCoUCZFmGrutoNBrndc0vF7FX1w9Zls/7662qKoaHhzE5OYkbbrgBlUoFDocDsVgMfr8ffr8fx48fRzqdhizLsNvtqNfryOfzsFqt2LVrF4aHh5FOp7G6uorjx4/ju9/9LorFYpexJ+NO3eRarVZPDH4/7NeL3oOfmJjAhz/8Yf74qquuelbjTt9/NmNjY8/6/T6fD5///OfP+bU//MM/xDvf+U40m0187Wtfe+GLFlyUBAIBXH311SgUCrDZbPB6vQiHwxgaGsLQ0BBcLhes1jO/0hTCJK9HURSoqsqh0Vqthkqlwp/L5/OoVCpoNBpwuVxYXV1FNptFuVyGw+HA/Pw87HY7ZFlGtVqFYRg9fjUEF5LzYZxUVcXll1+OsbExmKaJRqPBHrrdboeiKFAUhVNMNpsNw8PD8Pl80HUdxWIR8XgcW7ZsQTAYxPDwMPx+PwYGBjA4OIhQKATTNJFMJruiULIs45577oEsy5Akqeui2g9Gdz25qA385OQkXv/61+POO++8YM8RjUaf9fF/+tOf4n3vex/q9ToWFhb48zMzM1hdXb1gaxJsPJxOJxKJBC677DJomgaXywWPxwOv1wu/3w+bzcZGu16vo9VqdXnq9Xqd85+tVguNRoMjUVNTUygWiyiXy1BVFYFAAAsLC1hbW0OxWITP50Or1YIsy+zZ5fN5lMtlVKtVoT8RPINAIIAdO3bgta99LXbs2IFms4lCoYB8Po9GowGn08kGuNlsIpVKoVqtwmq1wmKxsPH3+XwYGRlBJBKBqqqw2+0IBAKw2+1wOp1wu91YW1tDtVrlHL7VaoWu62zMq9Uq1tbWkMlk+MJ7sXBRhuhVVQUA/Pmf/zl+53d+53wu6bzw4Q9/GH/3d3/HHtiFZAO//RuKl7pXLRYLJEnCjh07sHXrVng8Hmzbtg2xWAw2mw0A2GiXSiXkcjkUCgUEAgF4vV5kMhlomoZ2uw2fz8fCUBI1AUCj0UC1WkW9XofD4YDH4+HQvqIoCIVC2LdvH+bm5iDLMgYHB1GpVPDYY48hmUzy419oAZ/Yq+sHXeRo377Q155y9+973/vwK7/yKwgGg6jVamzQW60WNE3DyZMnUSqVAJzZv6lUCm63G9VqFRaLBcFgELFYDD6fD16vF3a7HVarFeFwGBaLBc1mE+12G263G81mE8lkEuVyGbVaDXa7HW63my+2mqbh29/+Nv71X/8VqVSqy/hfSPphv150Bj4QCCCZTLL6uF+m/nRCN1FN0xAOhy/ojXMDv/0bipeyV202G371V38Vfr8fHo8HLpcLqqrC5/PxAUx7pdlsQtM0pNNp5HI5xONxxGIxAE8bc8Mw+HLbbrdRr9f5d4BC+oqiwGq1olgswjRNtNttOJ1OzM/Po1AowOv1Ytu2bfD5fDAMA6VSCYVCASsrK/jOd77TJeA734i9un68lP0qyzKuvPJK/Pmf/zn8fj8qlQoKhQKAM0ZclmXUajWcOnUKk5OTvBebzSZ8Ph8URUGlUoGu6zAMA81mE+FwGB6PB7Iso1KpQJIkqKoKt9sNVVXRbDbRaDSQTCaxtrYGTdMwMjICq9WKcrmMUqmETCaD++67D4VCAY1GA5qmYXFxEcvLy+fzJXsG/bBfL6oQ/U033YTPf/7z7Pn0KxaLhUv1HnvsMQDAF7/4Rfz93/99j1cmWC8CgQC2b98Ot9vNnjeFHnVdh8fjYU/GNE0W1mmahkKhAEVRYLPZoCgKJEnisDwd3LVaDfl8HjabDU6nk78uyzJUVYWu6+zFOxwObNmyhUOnNpsN7XabP7bb7QgGg7j99ttRKpXw1FNP4fjx4718+QTrzOjoKF73utfhhhtuQLVaxdLSEmq1GgCwMI60IOFwmIWcFosFqqpy2THt1VarBZvNBr/fj2aziUqlAtM0EQ6H4XK5OHdvt9uRSqX4cf1+P9rtNvx+P6ebwuEwnnjiCVx99dUol8vIZrPYunUrFhcXUSwWsbq6irW1NS7b20xcNAb+zW9+M971rnfh0ksv7fVSXjCyLOPyyy8HANxxxx1IJBJoNpv48z//c1HPvElRFAXT09MYGxvD4OAgotEogsEgC9wURYEsy111xJIkwWq1QlVVuFwuOJ1OlEoltNttBAKBLlGTLMtd9cbtdpsfh3LsFosFLpeLDTnVLZ99WQDOXEYdDgcAYGRkhJX77XYbtVoN8/Pzm+7QFHSzY8cO7N27F7t370Y0Gu1K/1BVB+1RyqG7XC4A4Iui3W5Hs9mEzWaDy+VCs9nkPHu9XockSbDb7QDOXE4p8mS1WmGz2aBpGiwWC2w2GzKZDAKBAEe2ms0mh/vb7TYL+Oj3y+12w+VyoVgsIpPJbKr9elEY+B07duA3f/M38YY3vKHXS3nJ3Hrrrbj11lvRaDTwk5/8BLVajctFBJuHYDCIvXv3Yvv27ayUdzgcnL8kjxk4kzsnL5o8IUo5pdNpFh5RyZHVau0SxamqygclefZk5D0eD3tSnY1I6EJAh7EkSXA4HFBVFeFwGDabDTt27EAgEECpVEKlUoGmaajVauJSugmJRCK48cYbcdVVV8Hn83GUSJIkNtaUClIUBQ6HA1arFYqiwO1280XQ5XKxR2+323kvk9iOwvmaprFWhAy80+lEsVgEAE4DlMtlTksVi0XWApC41DRNBAIBNBoN2O12RKNRpNNpHD16lEtGN4MYb9Pn4C0WC5aWlhCPx9dhRevL5z//efze7/3ey3qMDfz2byheyF6VZRmvf/3rMTExgaGhIYyMjHADG13X0Ww2WT0PnPH2nU4n/H4/qtUq5y9J1KQoCivdyRCXSiXU63U0m82ukDsJ7arVKhqNBodNrVYrH5RUG09RA7vdzhEDl8vFUYZ2u41Go4FyuYyDBw/i4YcfxtzcHDKZzMt6DcVeXT+ea7+SAXc4HHjPe96Dt7zlLRgaGsLa2hpsNhvS6TTq9ToURUEwGITT6US5XGajT/Xtk5OT8Hq9sFgsrDlaXV1FvV6Hy+VCPp9HOByG0+lkIandbmcPnow77fFyuYxCoQDDMJDJZCBJEur1OkqlElZWVnif1+t1NBoNuN1ufO9738P4+Dj27t2LQCCAxx9/HI8//jgWFhaQzWa5k95L2Xv9sF83tQefSCRw7NgxDgcJBP2K0+nEm970JhQKBaytrUFVVQwNDbGnQoeiJEmcgw8GgxgYGMDo6CharRYqlQqWlpZw8uRJJJNJGIbBHj2J8Px+PxwOB4fcqfMd8LT2g8rtdF3nsCqJUjvb3tbrdVYuU6MnCtlbLBaYpskXDhJHifr5jY8sy5iamsLjjz+ORx99FB6PB8ViEel0Gs1mE/V6HR6PBw6HA4VCgVM8wNOXA9J5UKdFh8MBr9cLp9MJwzBQLpcRj8c5okQXA03T+GNZlpFKpfiSSVGqhx9+mL1/SZL4Ikx71GazweFw4J//+Z/x67/+67BarSgUCigUChgbG0MulwNwZi+vrq6+6EqCfmLTGvjbbrsNf/AHf8BlQZuRt73tbfD7/fiN3/iNXi9F8DIIh8PYsmULJEnC9PQ0q+ZLpRJisRiX/FCYm8KKZLzJk6FyIpvNhsXFRaysrHBIsl6v8yFInjl5YdRohDp+UQ6d8puKorDorvMyAIBLkQzD4HVQjn9tbQ2VSgVOpxORSAROpxP5fJ7LowQbC8qjj4+P48Ybb0Qul0MsFuMLoSzLKBQKSCQS8Hg8LGYul8vscVNr5Gg0Co/Hw/vYNE020Ha7nTUelUqFU0V0wSVIiEzPQyXF9HvSqTOxWCxdEaR6vY6xsTE4nU4Wl1qtVuTzeeRyOa7Vt1gsG9KwE5vSwN9222244447cMMNN/R6KReUkZERvP71r8cHP/hB/J//83/48BVsHGKxGEZHRzE2NgaXy4V4PA6fzwe73c4HmN1u5xB5vV6H3W7nWl/yXsjTiUaj7LlQaL9Wq6HdbrPQDgCH6DsFc5RbB572tOhgdrlcfBDTPqPwfaPRQK1W6+pKRpeHgYEBqKqKfD6PTCaDWq3GF4WNfHBerLzyla/ElVdeiZ07d+L06dPw+/2ctlFVlY0lKd2z2SzrPEjrQXoSighR2JwMOz0GXSioYVOr1epy2Dob25A+xeVyIZFIoFQq8V7XdR3AGb0APVa5XMb4+DgMw2D9imEYcLlcmJ6exvbt22G323Hy5En87Gc/Q7lc3pAzGzadgR8ZGcHHP/5x3Hzzzb1eyroQjUbx13/913jooYdQKpWgadrLznUK1gdFUTA1NYXx8XH4/X422G63G263G06nE7FYDBaLBYVCgQVzVqsVPp+PS4DO7uUQCARQq9WwsrLC3k+r1WLvul6vc817rVbjxh+ducbOA5k6ipE4qVwuwzRNFu1RlMBisaDRaLCYamBgAAMDA9B1HalUCrOzs8hkMlzTbBgGl+IJ+otz5Z39fj/e9a534frrr4ckSdi3b19XMxy6lFJbWlmWkc1mMTIywtEh0n1UKhW4XC6+HFKLZboAAuDUFInjyIjTpYBEpATt0927d2N1dRXBYBDNZhOrq6vIZDIYHh5mBX0mk4HD4YCmaVBVlVMGQ0ND2L59O4aGhhCPx7G8vIx0Oo3jx49zF76NxKYS2cmyjHw+D6/X26MV9Z6vfvWreO973/uCv38Dv/0binOJlnbu3Inx8XEMDAwgHo8jEomgUqkgEolgbGwMO3fuRCAQgCRJKBaLLJAj40+5y3OhaRqOHDmCVCrFYfHOQ5Y8d8qPU6MbKpdzOByw2Wxcn0zeO/2pVCrck56U+W63G16vFx6PB6qqotVqQdd1rKyscGvbVqsFv9+PWq2G48eP44EHHnjBr6HYq+vHufbr5z73Oe4B7/P5kE6nOcJTr9dRLBZhs9lgGAbm5uYAAG94wxvgdDq5VwM1UqJGS8DT3RIDgQAA8CU0n893ef8Wi4X3Dl0sSU8iSRLvTb/fzyF90oFQ2mlpaYm7L8ZiMdjtdqytrWF5eZlTDpROUlUV0WgU2WwWf/M3f4P7778fyWTyBb+G/bBfN50HLxBsFBKJBGKxGMLhMAKBALflJJV8MplkkU+n4aV63+dq2EQ1xCRGogOSytwoLEn5cwBdkQDTNFEsFjl3r6oqe08A2ONSFIUjC50iPQBwu90Ih8MIhUIcTm00Gsjn80ilUlzuJ+g/zuXBk9K8Xq9zSRsp0hVFwcDAAHK5HFRVxdatW2G1WqFpGjweT1fXxWq1yq2WOz3x5eVlBINB2Gw2NJtN7lRHe65er2NxcZG74tHnHA4Hl+JR61q6AFDJJzWAcjqdmJiYgGEYnLOnf3u9XpTLZXg8HhblPfzwwxgZGcHtt9+OwcFB/O3f/i2H/DcCwsALBD2A8tpk2BVFgWEYsNvtXfXnnUaX8peyLEPTNBiGwR425b47v9fn86FQKHAunj5PBzeJkMhI0x9qhtP5fZ0HIvD0tDoqfSJxHpUw0eFKI2oBsPq5XC4jmUwin89fuBdYcN6w2+3YvXs3Go1GlydO0SNKz1DZJJVJAuB+HbVajS+BhmGgVqthYGCAc+w0ZIbSQhRBoqjV2c2VSCTabrextrbG6QFJkuByubhsrtlsPqNPRGe3xlKphGAwCKvVyuJPUufTz7daLczPz2NhYWHDheg3jYH3er247bbbWFghEPQrVquVVcSd5T0A2LjT91E3OQqvk0Cp0wAbhvGMahGr1Qqv18vesyRJHKbv9KbpItHZ0Y5ynRQhoPXQTHlS4pOCvlar8QFO6280GqhUKpwCAJ4enGOaJudiBf2Py+XCm9/8Zpim2dVNkdrJ0mWOjHznRbBarXJvebfbDY/Hg1qtxlMKqdNdo9GAx+Ph3wNKJZGIk/ZV5/4HwPuPolJ0Ia5UKqhUKnx5ICNvtVo5AiBJEmsBAGB1dZWfX9M0FItFvoRomsYNcHoxW/6lsmkM/PDwMP75n/+518voOQ6HA8FgkGs5Bf2Hw+HA9PQ0N/kAwLXCJICjzzmdzq78OIU6qZENGc1z4XK5WBxHeXxSr5OX1TkFrjOM3xmWp/rmSCSCcDiMYDDIk79IHZ9Op+H3+2GxWKBpGsrlMnRd5+Yk9P/UdZ1DuKZp4sCBA5yLFfQPnQbM6XTizW9+M06cOAFd13nf6bqOUCjEFRfAGcNcLpd5L5GBz2azGBwcRDAYhKIoaLfbqFQqAMBqezK0lD8nA0+XWRotS6LQRqMBXdfh9/u5pp5K9aiZU6vV4gsAefO0fvqYvuf48eOw2Wyse7HZbBgcHITD4YDP54PT6Vz/N+JlsmkMvOAM73rXu3DDDTcgkUj0eimCc2C323k6FvV77+zKRfXnjUYDa2trkCQJ0WiUhXGdYXXyTMjr6ETTNMzNzeGHP/wh7rnnHjz44IOw2Wy47LLLsHfvXkxOTiIQCMDv93OzGvLgqf6XuoAtLi7i4YcfxsrKCh+kqqri7W9/O7Zs2QKHwwFd15HP57tCouShUymf0+lEKBTiNrh0Ef33f//3dX0PBM8PGUDgjNE+cOAAvF5v11AiyncTtVqNFfSUpikUChgZGWFdydraGms1SqUSlpeXsbKygpWVFSQSCezZswejo6OsgA+FQuxNZ7NZ9uyLxSJXlnRGlqgyZGpqCpqmodVqQVVVHiPb+f+jKpWlpSUsLi7i5z//OUzTxKWXXoodO3ZgeHgYq6urPE2x1WrhiiuuwL59+9b3zXgZbAoD/4EPfAB//Md/3OtlCATPi6qqCIVCiEajPLOd8o31eh2BQID/hEIhzocDYINpGAZ39LLb7fD7/c94nkKhgOPHj2N5eRnFYpF7hB88eBAnTpzg0iASwtEoWmpRu7KygmQyiXQ6DU3TeE633W5nr//xxx/H2toa4vE4gsEge23Um76zDrlTB0AXAdM0xUW0T6E9d8kll+CWW25hQ0qXSRq76vf7OSxOn6MyN4vFAo/Hg0OHDnGXOpfLBYfDwZUXzWYTbrcbgUAAN954I/x+P4fEKRowPz/PQ2BIYEoK+XQ6DYfDgUQiwZdI2ovRaJRD+sDTJXi6rmNtbY2FeMlkErquY2pqCouLi9B1HcePH8f8/DwURcHS0hIURUE0GkUymex6zH5nUxh4v9+PoaGhXi9DIHheYrEYdu/ejbGxMfa+VVWF3+9HPB6H1+uFqqpdTWmA7iY0sixz7v7ZyuQoBNpoNHhoDV0WNE1DpVKBzWZDLpfD6uoqi6bo8crlMhtlCr92CowUReHe9dSqtjO3Sb3qSWRnGAZarRbncam1Ls0LF/QnVE1B7zNdFC0WC5cjU6940zR5EhylgmRZhs/n47bJ1G6WpsqRxmR8fBwWi6XL8AaDQTakpKwHwKp7EtQ5HA6YpskaExp/TFoB0zRZw0LRsYWFBYyOjiKbzQIAX24nJiaQzWbhdrsRi8XQaDRw6tQp1Go1Hp60UfLvwCYx8PPz83jkkUdwzTXX9HopAsHzcnY43uVyIRQKYWRkhMvaOj0EyovTwUK9tM8lUqMhL5lMho2py+VCMBjkmmAS0nV2laMGOtRYpPP5SLzUKfZrNBosWKLcKH1vJyR+orwr/V/q9TqXLgn6l1wuh9OnT+O6667jVrHUF57SO6RMB8AdFkl4SW1pyfOl6XHUWpl6LNRqNSSTSeRyOY4WdYbVbTYbG+pOgWm73YbNZmPxG10EOvdqZ8VH51pdLhfS6TSsViv8fj/GxsagaRqy2Sz/3lAEwTAMLikVBn6d+cY3voEnn3wS+/fv35BCiPNJo9EQAz36mOPHj2NtbQ3vfOc7MTIywjl5r9eLdrvNDTk6R2VS2VDn4QSAPeJMJoNkMolsNotKpcIT6MrlMmw2G8LhMOr1Ok6ePNk1LrazAx09NomaOoV7VPrmcrk4N1+pVHisJ7UYpe54dJBWq1WkUinOjzqdTgQCAWSzWS7fE3u1v8lkMjh16hQikQh3fSPj7HK5uA89tZslz54EdouLiwgEAtwMp9Ozpnr1arWK06dPY3FxkVXtw8PDWFpagqqq3BiHwuudGpGFhQVMTk6yJoDSVXRB6EwbNZtNno2wd+9e1grY7XYMDg5i69at+O53v4tIJAJJkjA/P49kMomVlRWOVnRWCGwENlUnO0VRkMlkLupOdl/72tfwvve97wXP3t7Ab/+G4lxdF++44w5MT08jFovB6/Xy4eX1ehEIBBCJRBCJRNjLOZtWq4VisYjDhw8jmUxyJy+qM6ZpcdS++NFHH8Xp06fZyFMovVOk11mKROvuHA9L5XORSAS7d+9GOBzmFruxWAw+n6+rlahpmmwUSJn/i1/8AgcOHMD+/fvxxBNPvODXUOzV9aNzv8qyjEAggNtvvx2vfe1rMTw8DABddeZ02aS9Sl0S6U+hUIDf70cwGMTKygruu+8+7rJoGAa2bt2KQCCAkZERjI2NYcuWLVBVFcVikQ1/JBLB6dOnuSmN2+1GLpeD1+vF5OQke+8TExPw+XwAni6jo8gYiQcp/UThfkp7eb1eNJtNrK2t4cknn8Rdd92F17zmNVheXsahQ4deVNVHP+zXTeHBE/V6Hddddx2+9KUv4frrr+/1cnpCZ65W0L+0Wi3827/9W1c4vNMDttlsXApH3d+y2SxyuRy/x50lRNSsprP3fGdIksRJVGvcWY5HRp2+j6ZxkfGny0W1WuWc6tVXX414PM6d9SRJwuLiIp544gnO1UuSBI/Hw/3rSfmcz+ehaRqLtESYvr9pt9soFAr4l3/5F1x66aWIRqNcZ+71ejl6Qzn0o0eP8vx3Gmlss9k4qkQd54rFInv6Bw8eRKVSwcDAAFwuFyqVCkqlEgKBAK6++mpceeWVGB4e5vw9ldKFQiEuzYxEIkgkEqw/If0HpQRkWebeDZIkwe12dw1fKpVK/Htit9sxMTGBT33qU0ilUhgcHESr1cLhw4e7ptr1gxF/LjaVgQeAQ4cOXdTjKC+99FJ87GMfw+c+97leL0XwPFB/dpr4Rh4Eta4lxTqFQQuFAht44OnOdtQFjAwyhTDz+TznLR0OB+LxOM++LpfLHDKlMD3l9jsb15DnQ013PB4PotEo4vF4V9c98tqo7p1myJumyf+vgYEBlMtlXnsmk8HMzAwefPDBXr4NgueBqibI887n8wgEAhgYGAAAzk/TZTAcDnP0qF6vI51Ow+12c2SHms+Ew2H2pmlEazqdRrlc5sFIiqIgl8thZmYGtVoNwWCQZ8ZrmsYNlShXrygK/5vKPm02G3vqnRUpdMmky3WtVuPfL6qjpzI9v9+PV7/61YjH4/jMZz6zYZrdbDoDf7GzZ88eRCIRYeA3CJVKhevQfT4f3G4359vL5TLy+TxarRbS6TTS6TR7u+Rl0FjYsxvWAODxsgBYqU/iI8o/nm3gKZROXgpdHhRF4U5kPp+PLyWkqKbSOPqb1NQLCwuIx+OIx+MIBAKoVqs8j576igsDvzFotVr4xS9+gWazid27d2NgYIAHCpEgzuVyYWpqCqVSif+cfZkkL5qMMSnb6XJJjyFJEkZHR1noVy6Xcdttt/FYWmp2U6lUeH/6/X4oioJiscgz6qnvBEWmSE9Ca6MQvaIoKJVKLESlNrqyLMPr9WLLli3Yu3cvPvOZzwDof+8d2KQGnkKV58pbCgT9xMLCAivig8EgHzqmaSKXyyGfz8Nms3F4u1Kp8EFGPewXFhagqirGxsZgsViQy+UwNzfH0+ZIpFQoFHD69GmUSqWu0bN0+FUqFaytrXEtPImg6Hvp94l6ke/ZswdDQ0NcRx+LxbibXbPZhGEYiEajcLvdHAmg3CyJpM5usSvob8bGxrB161YMDAwgnU5zdQbVyQNnvONYLIZoNMr7+MEHH8SpU6eg6zouueQSrK2tYW5ujgV61CSnU/R26aWXYnJyEkePHsXc3FxXv3maZGiz2RCNRvH4449jYWEBhmHA6/Xi/vvvx/z8PLxeL6688kpccsklrBMgMSA17KGLgqqqfFklr940TdjtdlSrVSwtLfEo7o1g3IFNauDf/va34/3vfz/++q//utdLEQiek3w+z8r6gwcP8oS5UCiEYDCIeDyORqMBr9eL4eHhrvA8cMZbv+KKK3gAja7rkGUZIyMj3MqzUCigVCpx45rO/DsZ484SPPJ0KCRPQzlIlEfPXSwWEY/HAZwRXFEUgWqTaV59Z/0yRQ+y2SzW1tagadq6vt6Cl8eTTz6JQCCASy65hGcVUB4ceHouwv/f3tnFtn1WYfxx4u/vxHYcJ2maJiFN066DdaMD0TJVwARCSDAJhIRgQlwggbhiwA0XU69g28WGBOIGCSTKpgkBF0Ob9llpTLBNzUgbmqZJSGo78bf997cd2+Gies7+7rrRzyR23p9UTW3j5j/7zXve95znPKdcLreZ2BSLRSQSCaRSKRSLRemVp4PiwMAAACAej6PVamFoaEgOtqFQCP39/cjlcnj++efRbDYRCoUwMTGBmZkZSeEvLi7izJkzYqTj8Xjg8XgQDofx1ltv4XOf+xz6+vokw2Q0GlEqlaBpWpvXPA/EW1tbcDgccLvd8rPFEpMK8DvI448/jq9+9as7/RgKxf9l//79GBsbk7o2+8Q5ZIN1cbYh8fYLXA3yrVZLnOH4Ova3b25uIpVKIRqNYnFxUTy69ZPqmOli4Gb9sdFoiBKeoj++jt87l8tJf3N/fz+sVqtM/+KNPZfLiWMe54JrmoZMJiPjcBW7H725TSAQwOjoaNvwIGZ6vF6vWNS2Wi34/X6kUikJrJVKBclkUoyPaLDE2/vMzEzbnIbNzU1EIhGk02lYrVZMTEzg9ddfx4ULF/D666/LATMcDkuLab1elwMGMwMcWcvBN1T808jJ6XSKfiSXy4mg1Gq1IpFIiFA0HA7v8Cdxc3RlgD969CgOHjy404+hUPxfKFYKBoPo6+sTAxr2CV879Q242i1CxbvBYGibqMWv39zcRDweRzwel9Gs7OGlOI8e+Pp/m8Y1euhAph/gwdp/MpmEyWSSDVnvVa4/MJRKJUmN5vN5rKysIBqNIhaLbe8brrhpuB6sViuOHDmCmZkZ0VjwoEh/eZPJhHg8jmq1KpayjUYD9913H2KxmHRZUGVP50QaPoVCIQwODqLZbMo44fX1dWxsbKDRaGBoaAj5fF5KV8FgELVaDTMzM6hUKlJTX1tbaxuoFAqFpBRAjwam6fnzoDfE4Vrm+uao3E7LOHVdgB8fH9/zZjeKzoDtQvTp5mZpsVik5r25uSm3CYreePsB3g/IvLlwQ9vc3EQ4HMbGxoa4jfHr9Mp7Ws7ylk77UN7uubFxDjhV0KyDapoGh8Mho0P5PVqtFoxGIzwej/w/cPIXB+FEo9GOm6+9V7ieStzv9+OTn/wkpqenJcNEZTrXVL1el9u21WoVI6PDhw9jbm5OOjP06wSAHBp5a9/Y2JDSjqZpUsuntXMoFILP58OJEyeQTCYxNjaGarWKaDSKWq0Go9GIcrkMs9mMwcFBHDp0SJ6Vvg90eqS2hJoTDkuq1+tYX1/H/v375dBKzYryot8Benp6cO7cOTE5UCh2MwMDA/D7/XC5XJIC1/ek6+eo88/YJ6+f3U4TGqZLS6USstksstksMpmMiOqYDgXQtkEzlTo5OYlPf/rTCIVCcLlcMBgMKJfLOH/+PF577TXkcjk5QNTrdRmcQ4U8R3nymS0WS9s8bpPJhFKphGKxKMN2ms0mFhYWduwzUFwffXDnrfbLX/4yLBYL4vE4Go2GtD9ubW21tbpxeJLZbIbP50M2m8Wvf/1rpNNpfOELX0AgEMDi4qJMagsGg9LefPbsWenmGB8fxz333IPJyUmMjo7i4x//OBqNBs6fP49yuQyHw4Hp6WlkMhmZd7Bv3z6Mjo7ixIkTiEQi6O3txejoKGw2G3K5nDwXcLXLhL3wzJjxZ4o6lSNHjkDTNFitVgQCgbbDdSfQVQG+1WrhwIEDeO655/D5z39+px9HofhIYrEYYrEY+vr6JMVpMBhQKpVQqVRQq9XgcrnE0pY3D6rR9ZtwpVKR166trWF2dlZcwtgaRPFQb28v+vr6MDU1hVOnTongiAcKeswDV73Fjxw5gsOHDyOfzyOXyyGRSODChQsYGRnBwMAAvF4v3G63iPL0Nf16vQ7g/YDvdDoxOTkJh8MBTdMwNzeH559/fpvfecXNwM/ytddeQyAQwMjIiKy1bDYrAT4SieA///kPNjY2cPjwYYyPj2N+fh7RaFSGurADhJMTKXQzGo0yhY6ZqLW1NQQCAXzqU5/C8ePHJbPVbDahaZrc8B0Oh7jt8SA8ODgoa3V2dlYEoVNTU3IooZCUB1b+stlscrhNJpNt2YlOM2XqqgAPXFUl36iVoEKxk3BjoSCOfbdsO3K73fD5fDLMhbV2AHIgYEoTgARW1i8pOiIzMzM4duyYpOA5j56jN1m717vosSywubkJi8UirXlutxsul0tal1gW0A8BYVqT9U0A4gnO/ul4PL7N77riVtja2sLa2hpcLhf8fr9kjnjbNRqNGB4exiuvvAKz2Sz2tZxWyMDYarXg8/lw7NgxpNNpaXPjZMPV1VWUy2U52H7lK19BMBhEpVKRNjafzycHg62tLVlTLDlVq1XU63X4/X74/X4YDAb84he/kKwUvyabzcphpVwuI5vNwufzwWq1SsmpVqvB4XDIz2qnqOdJ1wV4haKT4EhVBkkqfHlr4OZDaBACfHBym9FohNVqhcPhEKGS/s8PHTqE6elpEdYx0FI8d61Yj8GZRiRMTXJ4DDMOACSjwHosb31M7/IXa/pGoxH5fF4F+A6AQY03bYvF0jZVjevUaDRiampKZrJTROfxeGRNWK1WGAwGsTk2mUzo6+uDwWDA5OQkRkZGpMXN5/PhyJEjouHQNE26Suh0RyjgpElUsViU0pfBYIDdbkc+n0cikRAPe6/Xi3K5LNkxujUy20XzJ2YXeAjoJFSA7zKq1SqSyeROP4biBnE4HFIHrNfrYr/JW7O+/5xqZb0X/bV1epfLheHhYdjtdunpdblc0sbGVD43XP1mxn9D3yrH7AA3Pt7aqMjXz4DX39I5aY5BgRslx8RSoRyNRnfmjVfcElwXettXBttsNotvfOMbMq64WCxiZGQEg4ODcmgFIOn1wcFBOcBeunQJ3/zmN3Hw4EEJ/JqmieoduKqmd7lcCAaDokehD321WoXVaoXb7ZY0fjqdFoHoQw89hJWVFQBXzaWuXLmCU6dOic2tx+OB2Wxum4pHpz3++/TZ7yRUgO8ynnvuOTz66KM7/RiKG2RtbU2GcgSDQQwNDUlApyhOL7JjXVsvkAPeD/DsN9+3b1+bnSyFRZVKpS2Y65XE+nQ8xXG8ETH1z5ICN3jWTZnyp6CJ7XvMNjDdn06nsbCwgMuXL+PixYuYn5/fmTdecUuUy2WxgK3X66hUKmLt2mw2USgUUCwWZUyxxWJBKBTC+vq6BOvR0VEUCgUMDAxIOnxiYgIejwculwutVguJREJMaFwulxyE7Xa7ZIJop0wbZq5VAOJYt7GxgcXFRbjdbvzsZz+Tg0gqlcK///1vBINBmQlBgR0PvSaTCTabTYJ/JpPBK6+8ssOfwM2hAnwX8b3vfQ9/+ctfdvoxFDcBvdt5G2FAZD88R8jqa93chPR97+zh5Z8BkJY43ro5iIYw/c7vx7o5U5P69Dsd8lh/N5vNcoDggaBWqyEWi8FisYhXPuv0vKktLy/j7NmzWF5e7jjBkgJ49dVXUSqVcPToUbkps8xEkxiOhmXNe21tTYIm/Rnuvfde+f3m5iamp6el64I6k83NTXg8HvT29spcBaPRiGQyKUJUi8WCYDAopSWWgLj2xsbG4PP58MYbb+DcuXM4cOCA/AzQUIfaF03TUC6XUSwW4XQ64fP5sH//fszOzuJ3v/sd3nzzzZ1862+JrgzwzzzzDFKpFL797W/v9KNsK6lUCplMZqcfQ3ETLC0toVqt4sCBA223EqbRfT4fHA4HAMjmdb02Or3drN7Ehqnza+1omTJnrV2vAaDACHi/N1gvoAPQNnueZiHsqWfgr9frGB8fl5GiTLmypq/EsJ3HpUuXpFRz9OhR8UCgQ2Kj0YDL5ZLxxezcoAOj0WiE0+lEoVCQdc32TuBqUGdWoFarIZfLSWeGfvKbflwyb988BFssFpTLZfFYsNlsOHnyJAKBABwOh4jl7Ha7CAKBq4dc9txTuJdMJtFoNBAOh7G+vr4zb/pt0JUB/qWXXgIABINBAMBDDz0kgxC6lVdffVUJljqQWCwmwTOTyciAGKbQGWgZ3Gnewb/nQQBA2/x22mzSLIf+3xw+w42Nm7B+3Cxv8QCkzsqRoPrSwLXOdmzB40ZPwSBvZuyRZpeAYvfyYeNQk8mkBPlAIIADBw7IIc9ms4l/u76zAoAc7Hi4ZKmILZ/MEvE1vMVXq1WYTCa57bM8RZtbDjVi2YnPwbVHdf3Y2Bi8Xq8o7O12u2hd9AZO/B75fB6tVgulUgkbGxuIxWIduWa7MsADV4M8A/3ly5cxNjYm6chuYmtrC4VCAY888gg0Tdvpx1HcAul0GplMBi6XC/fffz8GBgak57dWqyGfz8smyE2G096Yhufca6b6KRTq7e0VFzA653FD06flr731M2jTprPVaslNnkNE9O1QPBS43W45TNfrdfk6jugsFou4cOGC3NgUu5OPageLxWJIpVLY2trCl770JdFaDA8Pyw2be61+sAzXML3fWSfn64vFIiwWiwR0h8MhjokM9LlcDpVKBR6PBw6HA+l0GiaTSYyi6JyXz+fFfdFmsyEcDsPj8cjtPRQKIRKJoKenB5VKBblcDqlUSrzqNzY2EI/HcfnyZbz33nsdp54nhq1Oa+zTca1n9ofR09OD3//+9/jWt751l59o+1lcXMShQ4du2V2pgz/+juJG16rBYMDXv/513H///aJ65xQ2zqWmgI2Cp0qlguHhYUnVM2B7vV7xkE+n02J6Y7FYYLfbpUZKAV25XEY4HEaz2cT4+DgsFov4b3u9XrltMQ1PgZ3ZbIbb7UZ/f798b7PZLKnYYrGIVCqFxcVF/PGPf7zlNafW6vZxvfWqv9Xr7VqffPJJnDx5EnNzc0gkEhgYGIDdbpfaeaFQQKvVgt1ul86KYrGIUCgkQ2jouEiLWwZs6jf02SwA0o4ZCARgMBjEG59tb6urqygUCkgkErhy5QqGhobktu/z+XDy5EksLS0hlUohl8uhUCiImt9ut4ue5I033rjl93A3rNc9EeABYGRkBF/72tfw9NNP38Un2l7+8Ic/4PTp01haWrrlf6ODP/6O4mbWKmdYsxuiUCjIgBmv1ysba6VSgaZp2NjYkIltvDlROc9Nka+naQdv//rBGqVSCZcuXUKj0cC+fftEscwpXBQ5OZ1OUVDz+7Du2tPTA5vNJpt5NBrFu+++i7m5OVy8ePG2skxqrW4fN7JeuTYGBgYwNTWFEydO4MEHH0Qmk5EUutPpFPEaWyd5m6cQ02KxiGZD76/AlD91KU6nE6VSSWrnvO1TdMpMVqVSQTqdRqlUkt57GjW98847iMfjmJiYQCwWk8xBKpVCOBxGo9FAJpOREcu3k2naDeu1+3LWH0IkEsGLL76I06dP4+c///lOP84tEYlE2mbcv/3227cV3BW7k3w+j4WFBfz973/HiRMnRCzETYzpdwbWSqUiv5je7O3tRa1Wk9YkptO5cevd5ai8NxgM8Hg8splSfMRpcPV6XUxGqKjncBym8re2tqTkEA6HoWkaIpEINjY2VAmpy+D6SSQS4pp46tQpqV+zj5xBG4AEY5aJWO/mSGS9KI9lJ/1aY1tdoVBALpeD0+lEMBhsc7Jzu91IJpNtE+5YJqJ4bnl5GUajEZFIBJqmIZvNYnV1FQaDAYVCQZwdO509c4MnfX19Hak0j0QiePnll/Hd7373jv67HfzxdxQ3u1Z7enrg8Xjw2GOPyQZpNpvhcDjECY5pUk3TxNxIbyrDmifr37wR6cd78sCgnzfP/nem7mu1GsLhMFqtFqxWK/r7+6UcwA2UxjqpVApLS0uYn5/HuXPn7uh7qNbq9nEz65U3ebvdjt/+9reyXtmWqWlam0hOH9wrlQrq9bpMHeThkevW6/XKetYPhcnn8yiXyzCZTHjggQdknrzD4UBfXx/OnDkjt3e2mQLA8vIyVldXkUgkYDKZcPHiReRyOWiahvX19bbRybfLblive+YGr4eLjBvcboYq1F/96lf45S9/ucNPo9gu6BZHlTvXKS1C2fPOWzN7e5mW599RjUzVe61Wk03P4XCI0p5iO6vViq2tLXEboyKfffH6/7J/GICIpxYWFvDOO++ozNIegqUeAHj22Wfxgx/8AA6HQ9LwTI+zE4SZJd7OeaNn1ol2uHwda+fNZlNscH0+H4rFImZnZ8VK1mazwWazodFo4K9//Sv8fj+mpqYwNTWFRCIh45B5qD179ixqtZq0F9/J4L5b2HM3eAAi3HjiiSfwwx/+8A4/1Z2jWCwiGAy2tSTdaTr44+8obnWtsqY+NjaGe+65Bw8++KDUwfU3bI6Mpa92qVQSEV4+nxdzEI7wDAQCGBwchMVikcMADwsU0TGQU5WvaRrS6TSy2SwOHjyI8fFx9PT0YHl5GX/605+wtrYm/dB3Y12ptbp93Ox6ZYCmtuNHP/oRHn30UVitVuRyOayvr6NUKgEA+vv7USqV2kYe09AJgDjItVotOJ1Occ3L5/MYGhrC2NiYpOGfeeYZHD58GC6XS7JOq6ur+Ne//iXZgZ6eHkxNTWF0dBTFYhHxeBzLy8t4+eWX5Rm6db3uyQBPxsfHMTQ0BIvFgpdeeukDwzt2iieffBJ/+9vf0Gg08M9//vOufq8O/vg7ittdq7x1e71efOxjH8MXv/hFuN1uuQ3pzXAoqGMvMnvSC4UCMpkMzGYzvF4vBgcH5QChb8Nj/VSfwne5XCiVSlhfX8fKygqGh4fh9/vx1ltv4dy5c0gkEne99U2t1e3jZro+rve5DA0NyZS4J554Apqmic6DBjVXrlyByWQSb3nW3/VKfY/H0zb8yO/3Y3x8HPF4HG+++SaeeuopGI1GsZOlaQ4PDVTi9/f3w+PxQNM0JBIJ/Pe//73rpdrdsF73ZIqerKysYGVlBSaTCU899RR6e3tx/PhxfOYzn9nW51hYWMALL7wgv//zn/981wO7orOgcxzHwJrNZkxMTCAUCrWJ3Hgbt9lsoqCnyKinpweFQkHqmRQ26Se+0Wve7/dLyjQWiyGRSCCfzyMajWJ5eRmRSAQ2mw3z8/MIh8M7/O4odorrBTGDwYD19XVxfnv22WdRrVYxOTmJQ4cOyWv6+/ulBARAvBao7aAhDkWjFosFpVIJa2trWFlZweLiIhqNBq5cuSIlI2a3qAmpVqtIpVJIpVIwGo3S9tmJOqxbYU8HeLK5uYmf/vSnAIDvf//7CAQCAICpqanbvnmRxcXFDz3RvfDCC/jxj398R76PorvZ2tpCNBpFNBrFvffei+PHj8ukOL2jHW/gnDinvyFRlWy321EsFkWx3Gw2kcvlkE6n5XX5fB5LS0vI5XLIZrNIJBIdadmp2D6u3ed+85vfAAA++9nPSnsbRxrTgrZQKMBqtaJcLqPZbMoBtV6vt6nx4/E4zp8/j2QyiUKhgP7+fqyurra1bNrtdskmVatVRKPRNvOmvcSeTtF/FL29vchms3A6nTf8PXkTuvYtbTQaMnt4t9HBH39HcTfXqsFgwHe+8x1MTU3B5XKJsp2udACktn7x4kX09PSgr68Po6OjqFarokjO5XJYWFjA3NycjK1lbZ8e4TvZOqTW6vZxp9ar3sKY9XaDwYBHHnkEn/jEJzAyMgKHw4HZ2VlMT0+3WTRzupzNZpOJcu+99x5Onz6N++67D8eOHcPTTz+N2dnZNn2SXvwJvL9u9D8L28FuWK8qwH8E7AnWc/nyZfj9/g987U9+8hMsLi7izJkz2L9//wc2wt06OauDP/6O4m6vVabgeVt3OBx4/PHHUSgUxMWuv78f//jHPxAOh1GpVGCz2USpr58cF4vF2pwRP6zOut3shmfYK2zneuX3e+yxx3Dq1CkMDAwgn8/DYDCgWCxibW0Nly5dwrvvvov5+XkUCgVpw8vn87t2aNFuWK8qwN8kDz/8cJtlIjl//jyKxSIeeOABvPjii7viw70ROuU5O53tXqtGoxHT09Miums2mzLTmjdx9tHr25wAiAXtbkOt1e1jO9brtQfHyclJ+P1+2Gw2ABA9CVP4mqa1XZSYEdit7Ib1qgL8HqeDP/6OQq3V20et1e1jJwK8Hton6/9+t2SSbpTd8KxKZKdQKBSKbeejAuD1PD92Q8DsNHa3jZtCoVAoFIpbQgV4hUKhUOwYqnx191ABXqFQKBQ7hkq93z1UgFcoFAqFogtRAV6hUCgUii5EBXiFQqFQtNGNdfFu/H/6f6gAr1AoFIquZy/W+lWAVygUCsUH6IQbbyc8406iArxCoVAorstuD6B78VZ+M6gAr1AoFIo29IH9RoO8fnDMjbzmo76OQ5Ou9xy7/dDBCYy7gY72olcoFAqFQnF91A1eoVAoFIouRAV4hUKhUCi6EBXgFQqFQqHoQlSAVygUCoWiC1EBXqFQKBSKLkQFeIVCoVAouhAV4BUKhUKh6EJUgFcoFAqFogtRAV6hUCgUii7kf8kt6bilUv3JAAAAAElFTkSuQmCC\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "progress_bar_sampling = tqdm(scheduler.timesteps, total=len(scheduler.timesteps), ncols=110, position=0, leave=True)\n",
- "progress_bar_sampling.set_description(\"sampling...\")\n",
- "num_samples = 8\n",
- "sample = torch.randn((num_samples, 1, 64, 64)).to(device)\n",
- "\n",
- "val_batch = first(val_loader)\n",
- "val_images = val_batch[\"image\"].to(device)\n",
- "val_masks = val_batch[\"mask\"].to(device)\n",
- "for t in progress_bar_sampling:\n",
- " with torch.no_grad():\n",
- " with autocast(enabled=True):\n",
- " down_block_res_samples, mid_block_res_sample = controlnet(\n",
- " x=sample, timesteps=torch.Tensor((t,)).to(device).long(), controlnet_cond=val_masks[:num_samples, ...]\n",
- " )\n",
- " noise_pred = model(\n",
- " sample,\n",
- " timesteps=torch.Tensor((t,)).to(device),\n",
- " down_block_additional_residuals=down_block_res_samples,\n",
- " mid_block_additional_residual=mid_block_res_sample,\n",
- " )\n",
- " sample, _ = scheduler.step(model_output=noise_pred, timestep=t, sample=sample)\n",
- "\n",
- "plt.subplots(num_samples, 3, figsize=(6, 8))\n",
- "for k in range(num_samples):\n",
- " plt.subplot(num_samples, 3, k * 3 + 1)\n",
- " plt.imshow(val_masks[k, 0, ...].cpu(), vmin=0, vmax=1, cmap=\"gray\")\n",
- " plt.axis(\"off\")\n",
- " if k == 0:\n",
- " plt.title(\"Conditioning mask\")\n",
- " plt.subplot(num_samples, 3, k * 3 + 2)\n",
- " plt.imshow(val_images[k, 0, ...].cpu(), vmin=0, vmax=1, cmap=\"gray\")\n",
- " plt.axis(\"off\")\n",
- " if k == 0:\n",
- " plt.title(\"Actual val image\")\n",
- " plt.subplot(num_samples, 3, k * 3 + 3)\n",
- " plt.imshow(sample[k, 0, ...].cpu(), vmin=0, vmax=1, cmap=\"gray\")\n",
- " plt.axis(\"off\")\n",
- " if k == 0:\n",
- " plt.title(\"Sampled image\")\n",
- "plt.tight_layout()\n",
- "plt.show()"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "a1ca8274-d85c-4dcc-9c16-08ac2b6ce0fd",
- "metadata": {},
- "source": [
- "What happens if we invent some masks? Let's try a circle, and a square"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 15,
- "id": "393fca6c-2446-4822-8aad-44403761b40e",
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "sampling...: 100%|████████████████████████████████████████████████████████| 1000/1000 [00:16<00:00, 61.51it/s]\n"
- ]
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "xx, yy = np.mgrid[:64, :64]\n",
- "circle = ((xx - 32) ** 2 + (yy - 32) ** 2) < 30**2\n",
- "\n",
- "square = np.zeros((64, 64))\n",
- "square[10:50, 10:50] = 1\n",
- "\n",
- "mask = np.concatenate((circle[None, None, ...], square[None, None, ...]), axis=0)\n",
- "mask = torch.from_numpy(mask.astype(np.float32)).to(device)\n",
- "\n",
- "\n",
- "progress_bar_sampling = tqdm(scheduler.timesteps, total=len(scheduler.timesteps), ncols=110, position=0, leave=True)\n",
- "progress_bar_sampling.set_description(\"sampling...\")\n",
- "num_samples = 2\n",
- "sample = torch.randn((num_samples, 1, 64, 64)).to(device)\n",
- "\n",
- "for t in progress_bar_sampling:\n",
- " with torch.no_grad():\n",
- " with autocast(enabled=True):\n",
- " down_block_res_samples, mid_block_res_sample = controlnet(\n",
- " x=sample, timesteps=torch.Tensor((t,)).to(device).long(), controlnet_cond=mask\n",
- " )\n",
- " noise_pred = model(\n",
- " sample,\n",
- " timesteps=torch.Tensor((t,)).to(device),\n",
- " down_block_additional_residuals=down_block_res_samples,\n",
- " mid_block_additional_residual=mid_block_res_sample,\n",
- " )\n",
- " sample, _ = scheduler.step(model_output=noise_pred, timestep=t, sample=sample)\n",
- "\n",
- "plt.subplots(num_samples, 2, figsize=(4, 4))\n",
- "for k in range(num_samples):\n",
- " plt.subplot(num_samples, 2, k * 2 + 1)\n",
- " plt.imshow(mask[k, 0, ...].cpu(), vmin=0, vmax=1, cmap=\"gray\")\n",
- " plt.axis(\"off\")\n",
- " if k == 0:\n",
- " plt.title(\"Conditioning mask\")\n",
- " plt.subplot(num_samples, 2, k * 2 + 2)\n",
- " plt.imshow(sample[k, 0, ...].cpu(), vmin=0, vmax=1, cmap=\"gray\")\n",
- " plt.axis(\"off\")\n",
- " if k == 0:\n",
- " plt.title(\"Sampled image\")\n",
- "plt.tight_layout()\n",
- "plt.show()"
- ]
- }
- ],
- "metadata": {
- "jupytext": {
- "formats": "py:percent,ipynb"
- },
- "kernelspec": {
- "display_name": "Python 3 (ipykernel)",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.8.13"
- },
- "vscode": {
- "interpreter": {
- "hash": "4f1513a79f82193cb81c96943579af15c6a44d6347609348bde584197ab7b1ab"
- }
- }
- },
- "nbformat": 4,
- "nbformat_minor": 5
-}
diff --git a/tutorials/generative/2d_controlnet/2d_controlnet.py b/tutorials/generative/2d_controlnet/2d_controlnet.py
deleted file mode 100644
index da08911f..00000000
--- a/tutorials/generative/2d_controlnet/2d_controlnet.py
+++ /dev/null
@@ -1,524 +0,0 @@
-# ---
-# jupyter:
-# jupytext:
-# formats: py:percent,ipynb
-# text_representation:
-# extension: .py
-# format_name: percent
-# format_version: '1.3'
-# jupytext_version: 1.14.1
-# kernelspec:
-# display_name: Python 3 (ipykernel)
-# language: python
-# name: python3
-# ---
-
-# %%
-# Copyright (c) MONAI Consortium
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# %% [markdown]
-# # Using ControlNet to control image generation
-#
-# This tutorial illustrates how to use MONAI Generative Models to train a ControlNet [1]. ControlNets are hypernetworks that allow for supplying extra conditioning to ready-trained diffusion models. In this example, we will walk through training a ControlNet that allows us to specify a whole-brain mask that the sampled image must respect.
-#
-#
-#
-# In summary, the tutorial will cover the following:
-# 1. Loading and preprocessing a dataset (we extract the brain MRI dataset 2D slices from 3D volumes from the BraTS dataset)
-# 2. Training a 2D diffusion model
-# 3. Freeze the diffusion model and train a ControlNet
-# 3. Conditional sampling with the ControlNet
-#
-# [1] - Zhang et al. [Adding Conditional Control to Text-to-Image Diffusion Models](https://arxiv.org/abs/2302.05543)
-
-# %%
-# !python -c "import monai" || pip install -q "monai-weekly[tqdm]"
-# !python -c "import matplotlib" || pip install -q matplotlib
-# %matplotlib inline
-
-# %% [markdown]
-# ## Setup environment
-
-# %% jupyter={"outputs_hidden": false}
-import os
-import tempfile
-import time
-import os
-import matplotlib.pyplot as plt
-import numpy as np
-import torch
-import torch.nn.functional as F
-from monai import transforms
-from monai.apps import DecathlonDataset
-from monai.config import print_config
-from monai.data import DataLoader
-from monai.utils import first, set_determinism
-from torch.cuda.amp import GradScaler, autocast
-from tqdm import tqdm
-
-
-from generative.inferers import DiffusionInferer
-from generative.networks.nets import DiffusionModelUNet, ControlNet
-from generative.networks.schedulers import DDPMScheduler
-
-print_config()
-
-
-# %% [markdown]
-# ### Setup data directory
-
-# %% jupyter={"outputs_hidden": false}
-directory = os.environ.get("MONAI_DATA_DIRECTORY")
-root_dir = tempfile.mkdtemp() if directory is None else directory
-
-# %% [markdown]
-# ### Set deterministic training for reproducibility
-
-# %% jupyter={"outputs_hidden": false}
-set_determinism(42)
-
-# %% [markdown] tags=[]
-# ## Setup BRATS dataset
-#
-# We now download the BraTS dataset and extract the 2D slices from the 3D volumes.
-#
-
-# %% [markdown]
-# ### Specify transforms
-# We create a rough brain mask by thresholding the image.
-
-# %%
-channel = 0
-assert channel in [0, 1, 2, 3], "Choose a valid channel"
-
-train_transforms = transforms.Compose(
- [
- transforms.LoadImaged(keys=["image"]),
- transforms.EnsureChannelFirstd(keys=["image"]),
- transforms.Lambdad(keys=["image"], func=lambda x: x[channel, :, :, :]),
- transforms.AddChanneld(keys=["image"]),
- transforms.EnsureTyped(keys=["image"]),
- transforms.Orientationd(keys=["image"], axcodes="RAS"),
- transforms.Spacingd(keys=["image"], pixdim=(3.0, 3.0, 2.0), mode="bilinear"),
- transforms.CenterSpatialCropd(keys=["image"], roi_size=(64, 64, 44)),
- transforms.ScaleIntensityRangePercentilesd(keys="image", lower=0, upper=99.5, b_min=0, b_max=1),
- transforms.RandSpatialCropd(keys=["image"], roi_size=(64, 64, 1), random_size=False),
- transforms.Lambdad(keys=["image"], func=lambda x: x.squeeze(-1)),
- transforms.CopyItemsd(keys=["image"], times=1, names=["mask"]),
- transforms.Lambdad(keys=["mask"], func=lambda x: torch.where(x > 0.1, 1, 0)),
- transforms.FillHolesd(keys=["mask"]),
- transforms.CastToTyped(keys=["mask"], dtype=np.float32),
- ]
-)
-
-# %% [markdown]
-# ### Load training and validation datasets
-
-# %% jupyter={"outputs_hidden": false}
-train_ds = DecathlonDataset(
- root_dir=root_dir,
- task="Task01_BrainTumour",
- section="training",
- cache_rate=1.0, # you may need a few Gb of RAM... Set to 0 otherwise
- num_workers=4,
- download=True,
- seed=0,
- transform=train_transforms,
-)
-print(f"Length of training data: {len(train_ds)}")
-print(f'Train image shape {train_ds[0]["image"].shape}')
-
-val_ds = DecathlonDataset(
- root_dir=root_dir,
- task="Task01_BrainTumour",
- section="validation",
- cache_rate=1.0, # you may need a few Gb of RAM... Set to 0 otherwise
- num_workers=4,
- download=False,
- seed=0,
- transform=train_transforms,
-)
-print(f"Length of val data: {len(val_ds)}")
-print(f'Validation image shape {val_ds[0]["image"].shape}')
-
-# %%
-train_loader = DataLoader(train_ds, batch_size=64, shuffle=True, num_workers=4, drop_last=True, persistent_workers=True)
-val_loader = DataLoader(val_ds, batch_size=64, shuffle=False, num_workers=4, drop_last=True, persistent_workers=True)
-
-# %% [markdown]
-# ### Visualise the images and masks
-
-# %%
-check_data = first(train_loader)
-print(f"Batch shape: {check_data['image'].shape}")
-image_visualisation = torch.cat(
- (
- torch.cat(
- [
- check_data["image"][0, 0],
- check_data["image"][1, 0],
- check_data["image"][2, 0],
- check_data["image"][3, 0],
- ],
- dim=1,
- ),
- torch.cat(
- [check_data["mask"][0, 0], check_data["mask"][1, 0], check_data["mask"][2, 0], check_data["mask"][3, 0]],
- dim=1,
- ),
- ),
- dim=0,
-)
-plt.figure(figsize=(6, 3))
-plt.imshow(image_visualisation, vmin=0, vmax=1, cmap="gray")
-plt.axis("off")
-plt.tight_layout()
-plt.show()
-
-# %% [markdown]
-# ## Train the Diffusion model
-# In general, a ControlNet can be trained in combination with a pre-trained, frozen diffusion model. In this case we will quickly train the diffusion model first.
-
-# %% [markdown]
-# ### Define network, scheduler, optimizer, and inferer
-
-# %% tags=[]
-device = torch.device("cuda")
-
-model = DiffusionModelUNet(
- spatial_dims=2,
- in_channels=1,
- out_channels=1,
- num_channels=(128, 256, 256),
- attention_levels=(False, True, True),
- num_res_blocks=1,
- num_head_channels=256,
-)
-model.to(device)
-
-scheduler = DDPMScheduler(num_train_timesteps=1000)
-
-optimizer = torch.optim.Adam(params=model.parameters(), lr=2.5e-5)
-
-inferer = DiffusionInferer(scheduler)
-
-
-# %% [markdown]
-# ### Run training
-#
-
-# %% tags=[]
-n_epochs = 150
-val_interval = 25
-epoch_loss_list = []
-val_epoch_loss_list = []
-
-scaler = GradScaler()
-total_start = time.time()
-for epoch in range(n_epochs):
- model.train()
- epoch_loss = 0
- progress_bar = tqdm(enumerate(train_loader), total=len(train_loader), ncols=70)
- progress_bar.set_description(f"Epoch {epoch}")
- for step, batch in progress_bar:
- images = batch["image"].to(device)
- optimizer.zero_grad(set_to_none=True)
-
- with autocast(enabled=True):
- # Generate random noise
- noise = torch.randn_like(images).to(device)
-
- # Create timesteps
- timesteps = torch.randint(
- 0, inferer.scheduler.num_train_timesteps, (images.shape[0],), device=images.device
- ).long()
-
- # Get model prediction
- noise_pred = inferer(inputs=images, diffusion_model=model, noise=noise, timesteps=timesteps)
-
- loss = F.mse_loss(noise_pred.float(), noise.float())
-
- scaler.scale(loss).backward()
- scaler.step(optimizer)
- scaler.update()
-
- epoch_loss += loss.item()
-
- progress_bar.set_postfix({"loss": epoch_loss / (step + 1)})
- epoch_loss_list.append(epoch_loss / (step + 1))
-
- if (epoch + 1) % val_interval == 0:
- model.eval()
- val_epoch_loss = 0
- for step, batch in enumerate(val_loader):
- images = batch["image"].to(device)
- with torch.no_grad():
- with autocast(enabled=True):
- noise = torch.randn_like(images).to(device)
- timesteps = torch.randint(
- 0, inferer.scheduler.num_train_timesteps, (images.shape[0],), device=images.device
- ).long()
- noise_pred = inferer(inputs=images, diffusion_model=model, noise=noise, timesteps=timesteps)
- val_loss = F.mse_loss(noise_pred.float(), noise.float())
-
- val_epoch_loss += val_loss.item()
- progress_bar.set_postfix({"val_loss": val_epoch_loss / (step + 1)})
- val_epoch_loss_list.append(val_epoch_loss / (step + 1))
-
- # Sampling image during training
- noise = torch.randn((1, 1, 64, 64))
- noise = noise.to(device)
- scheduler.set_timesteps(num_inference_steps=1000)
- with autocast(enabled=True):
- image = inferer.sample(input_noise=noise, diffusion_model=model, scheduler=scheduler)
-
- plt.figure(figsize=(2, 2))
- plt.imshow(image[0, 0].cpu(), vmin=0, vmax=1, cmap="gray")
- plt.tight_layout()
- plt.axis("off")
- plt.show()
-
-total_time = time.time() - total_start
-print(f"train completed, total time: {total_time}.")
-
-# %% [markdown]
-# ## Train the ControlNet
-
-# %% [markdown]
-# ### Set up models
-
-# %%
-# Create control net
-controlnet = ControlNet(
- spatial_dims=2,
- in_channels=1,
- num_channels=(128, 256, 256),
- attention_levels=(False, True, True),
- num_res_blocks=1,
- num_head_channels=256,
- conditioning_embedding_num_channels=(16,),
-)
-# Copy weights from the DM to the controlnet
-controlnet.load_state_dict(model.state_dict(), strict=False)
-controlnet = controlnet.to(device)
-# Now, we freeze the parameters of the diffusion model.
-for p in model.parameters():
- p.requires_grad = False
-optimizer = torch.optim.Adam(params=controlnet.parameters(), lr=2.5e-5)
-
-
-# %% [markdown] tags=[]
-# ### Run ControlNet training
-
-# %% tags=[]
-n_epochs = 150
-val_interval = 25
-epoch_loss_list = []
-val_epoch_loss_list = []
-
-scaler = GradScaler()
-total_start = time.time()
-for epoch in range(n_epochs):
- model.train()
- epoch_loss = 0
- progress_bar = tqdm(enumerate(train_loader), total=len(train_loader), ncols=70)
- progress_bar.set_description(f"Epoch {epoch}")
- for step, batch in progress_bar:
- images = batch["image"].to(device)
- masks = batch["mask"].to(device)
-
- optimizer.zero_grad(set_to_none=True)
-
- with autocast(enabled=True):
-
- # Generate random noise
- noise = torch.randn_like(images).to(device)
-
- # Create timesteps
- timesteps = torch.randint(
- 0, inferer.scheduler.num_train_timesteps, (images.shape[0],), device=images.device
- ).long()
-
- images_noised = scheduler.add_noise(images, noise=noise, timesteps=timesteps)
-
- # Get controlnet output
- down_block_res_samples, mid_block_res_sample = controlnet(
- x=images_noised, timesteps=timesteps, controlnet_cond=masks
- )
- # Get model prediction
- noise_pred = model(
- x=images_noised,
- timesteps=timesteps,
- down_block_additional_residuals=down_block_res_samples,
- mid_block_additional_residual=mid_block_res_sample,
- )
-
- loss = F.mse_loss(noise_pred.float(), noise.float())
-
- scaler.scale(loss).backward()
- scaler.step(optimizer)
- scaler.update()
-
- epoch_loss += loss.item()
-
- progress_bar.set_postfix({"loss": epoch_loss / (step + 1)})
- epoch_loss_list.append(epoch_loss / (step + 1))
-
- if (epoch + 1) % val_interval == 0:
- model.eval()
- val_epoch_loss = 0
- for step, batch in enumerate(val_loader):
- images = batch["image"].to(device)
- masks = batch["mask"].to(device)
-
- with torch.no_grad():
- with autocast(enabled=True):
- noise = torch.randn_like(images).to(device)
- timesteps = torch.randint(
- 0, inferer.scheduler.num_train_timesteps, (images.shape[0],), device=images.device
- ).long()
- noise_pred = inferer(inputs=images, diffusion_model=model, noise=noise, timesteps=timesteps)
- val_loss = F.mse_loss(noise_pred.float(), noise.float())
-
- val_epoch_loss += val_loss.item()
- progress_bar.set_postfix({"val_loss": val_epoch_loss / (step + 1)})
- break
- val_epoch_loss_list.append(val_epoch_loss / (step + 1))
-
- # Sampling image during training with controlnet conditioning
- progress_bar_sampling = tqdm(scheduler.timesteps, total=len(scheduler.timesteps), ncols=110)
- progress_bar_sampling.set_description("sampling...")
- sample = torch.randn((1, 1, 64, 64)).to(device)
- for t in progress_bar_sampling:
- with torch.no_grad():
- with autocast(enabled=True):
- down_block_res_samples, mid_block_res_sample = controlnet(
- x=sample, timesteps=torch.Tensor((t,)).to(device).long(), controlnet_cond=masks[0, None, ...]
- )
- noise_pred = model(
- sample,
- timesteps=torch.Tensor((t,)).to(device),
- down_block_additional_residuals=down_block_res_samples,
- mid_block_additional_residual=mid_block_res_sample,
- )
- sample, _ = scheduler.step(model_output=noise_pred, timestep=t, sample=sample)
-
- plt.subplots(1, 2, figsize=(4, 2))
- plt.subplot(1, 2, 1)
- plt.imshow(masks[0, 0].cpu(), vmin=0, vmax=1, cmap="gray")
- plt.axis("off")
- plt.title("Conditioning mask")
- plt.subplot(1, 2, 2)
- plt.imshow(sample[0, 0].cpu(), vmin=0, vmax=1, cmap="gray")
- plt.axis("off")
- plt.title("Sample image")
- plt.tight_layout()
- plt.axis("off")
- plt.show()
-
-total_time = time.time() - total_start
-print(f"train completed, total time: {total_time}.")
-
-# %% [markdown]
-# ## Sample with ControlNet conditioning
-# First we'll provide a few different masks from the validation data as conditioning. The samples should respect the shape of the conditioning mask, but don't need to have the same content as the corresponding validation image.
-
-# %%
-progress_bar_sampling = tqdm(scheduler.timesteps, total=len(scheduler.timesteps), ncols=110, position=0, leave=True)
-progress_bar_sampling.set_description("sampling...")
-num_samples = 8
-sample = torch.randn((num_samples, 1, 64, 64)).to(device)
-
-val_batch = first(val_loader)
-val_images = val_batch["image"].to(device)
-val_masks = val_batch["mask"].to(device)
-for t in progress_bar_sampling:
- with torch.no_grad():
- with autocast(enabled=True):
- down_block_res_samples, mid_block_res_sample = controlnet(
- x=sample, timesteps=torch.Tensor((t,)).to(device).long(), controlnet_cond=val_masks[:num_samples, ...]
- )
- noise_pred = model(
- sample,
- timesteps=torch.Tensor((t,)).to(device),
- down_block_additional_residuals=down_block_res_samples,
- mid_block_additional_residual=mid_block_res_sample,
- )
- sample, _ = scheduler.step(model_output=noise_pred, timestep=t, sample=sample)
-
-plt.subplots(num_samples, 3, figsize=(6, 8))
-for k in range(num_samples):
- plt.subplot(num_samples, 3, k * 3 + 1)
- plt.imshow(val_masks[k, 0, ...].cpu(), vmin=0, vmax=1, cmap="gray")
- plt.axis("off")
- if k == 0:
- plt.title("Conditioning mask")
- plt.subplot(num_samples, 3, k * 3 + 2)
- plt.imshow(val_images[k, 0, ...].cpu(), vmin=0, vmax=1, cmap="gray")
- plt.axis("off")
- if k == 0:
- plt.title("Actual val image")
- plt.subplot(num_samples, 3, k * 3 + 3)
- plt.imshow(sample[k, 0, ...].cpu(), vmin=0, vmax=1, cmap="gray")
- plt.axis("off")
- if k == 0:
- plt.title("Sampled image")
-plt.tight_layout()
-plt.show()
-
-# %% [markdown]
-# What happens if we invent some masks? Let's try a circle, and a square
-
-# %%
-xx, yy = np.mgrid[:64, :64]
-circle = ((xx - 32) ** 2 + (yy - 32) ** 2) < 30**2
-
-square = np.zeros((64, 64))
-square[10:50, 10:50] = 1
-
-mask = np.concatenate((circle[None, None, ...], square[None, None, ...]), axis=0)
-mask = torch.from_numpy(mask.astype(np.float32)).to(device)
-
-
-progress_bar_sampling = tqdm(scheduler.timesteps, total=len(scheduler.timesteps), ncols=110, position=0, leave=True)
-progress_bar_sampling.set_description("sampling...")
-num_samples = 2
-sample = torch.randn((num_samples, 1, 64, 64)).to(device)
-
-for t in progress_bar_sampling:
- with torch.no_grad():
- with autocast(enabled=True):
- down_block_res_samples, mid_block_res_sample = controlnet(
- x=sample, timesteps=torch.Tensor((t,)).to(device).long(), controlnet_cond=mask
- )
- noise_pred = model(
- sample,
- timesteps=torch.Tensor((t,)).to(device),
- down_block_additional_residuals=down_block_res_samples,
- mid_block_additional_residual=mid_block_res_sample,
- )
- sample, _ = scheduler.step(model_output=noise_pred, timestep=t, sample=sample)
-
-plt.subplots(num_samples, 2, figsize=(4, 4))
-for k in range(num_samples):
- plt.subplot(num_samples, 2, k * 2 + 1)
- plt.imshow(mask[k, 0, ...].cpu(), vmin=0, vmax=1, cmap="gray")
- plt.axis("off")
- if k == 0:
- plt.title("Conditioning mask")
- plt.subplot(num_samples, 2, k * 2 + 2)
- plt.imshow(sample[k, 0, ...].cpu(), vmin=0, vmax=1, cmap="gray")
- plt.axis("off")
- if k == 0:
- plt.title("Sampled image")
-plt.tight_layout()
-plt.show()
diff --git a/tutorials/generative/2d_ddpm/2d_ddpm_compare_schedulers.ipynb b/tutorials/generative/2d_ddpm/2d_ddpm_compare_schedulers.ipynb
deleted file mode 100644
index 086e2e10..00000000
--- a/tutorials/generative/2d_ddpm/2d_ddpm_compare_schedulers.ipynb
+++ /dev/null
@@ -1,1102 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "6bbe8286",
- "metadata": {},
- "outputs": [],
- "source": [
- "# Copyright (c) MONAI Consortium\n",
- "# Licensed under the Apache License, Version 2.0 (the \"License\");\n",
- "# you may not use this file except in compliance with the License.\n",
- "# You may obtain a copy of the License at\n",
- "# http://www.apache.org/licenses/LICENSE-2.0\n",
- "# Unless required by applicable law or agreed to in writing, software\n",
- "# distributed under the License is distributed on an \"AS IS\" BASIS,\n",
- "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
- "# See the License for the specific language governing permissions and\n",
- "# limitations under the License."
- ]
- },
- {
- "cell_type": "markdown",
- "id": "d462dbf4",
- "metadata": {},
- "source": [
- "# Denoising Diffusion Probabilistic Models with MedNIST Dataset\n",
- "\n",
- "This tutorial compares the different schedulers available for sampling from a trained model with a reduced number of timesteps. The schedulers we will compare are:\n",
- "\n",
- "[1] - DDPM - Ho et al. \"Denoising Diffusion Probabilistic Models\" https://arxiv.org/abs/2006.11239\n",
- "\n",
- "[2] - DDIM - Song et al. \"Denoising Diffusion Implicit Models\" https://arxiv.org/abs/2010.02502\n",
- "\n",
- "[3] - PNDM - Liu et al. \"Pseudo Numerical Methods for Diffusion Models on Manifolds\" https://arxiv.org/abs/2202.09778\n",
- "\n",
- "\n",
- "\n",
- "## Setup environment"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 1,
- "id": "57c074c3",
- "metadata": {},
- "outputs": [],
- "source": [
- "!python -c \"import monai\" || pip install -q \"monai-weekly[tqdm]\"\n",
- "!python -c \"import matplotlib\" || pip install -q matplotlib\n",
- "%matplotlib inline"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "8c45380e",
- "metadata": {},
- "source": [
- "## Setup imports"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "id": "cf51122f",
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "MONAI version: 1.1.dev2239\n",
- "Numpy version: 1.23.4\n",
- "Pytorch version: 1.9.0+cu102\n",
- "MONAI flags: HAS_EXT = False, USE_COMPILED = False, USE_META_DICT = False\n",
- "MONAI rev id: 13b24fa92b9d98bd0dc6d5cdcb52504fd09e297b\n",
- "MONAI __file__: /home/mark/Envs/gen2/lib/python3.8/site-packages/monai/__init__.py\n",
- "\n",
- "Optional dependencies:\n",
- "Pytorch Ignite version: 0.4.10\n",
- "Nibabel version: NOT INSTALLED or UNKNOWN VERSION.\n",
- "scikit-image version: NOT INSTALLED or UNKNOWN VERSION.\n",
- "Pillow version: 9.3.0\n",
- "Tensorboard version: NOT INSTALLED or UNKNOWN VERSION.\n",
- "gdown version: NOT INSTALLED or UNKNOWN VERSION.\n",
- "TorchVision version: 0.10.0+cu102\n",
- "tqdm version: 4.64.1\n",
- "lmdb version: NOT INSTALLED or UNKNOWN VERSION.\n",
- "psutil version: 5.9.4\n",
- "pandas version: NOT INSTALLED or UNKNOWN VERSION.\n",
- "einops version: 0.6.0\n",
- "transformers version: NOT INSTALLED or UNKNOWN VERSION.\n",
- "mlflow version: NOT INSTALLED or UNKNOWN VERSION.\n",
- "pynrrd version: NOT INSTALLED or UNKNOWN VERSION.\n",
- "\n",
- "For details about installing the optional dependencies, please visit:\n",
- " https://docs.monai.io/en/latest/installation.html#installing-the-recommended-dependencies\n",
- "\n"
- ]
- }
- ],
- "source": [
- "import os\n",
- "import shutil\n",
- "import tempfile\n",
- "\n",
- "import matplotlib.pyplot as plt\n",
- "import numpy as np\n",
- "import torch\n",
- "import torch.nn.functional as F\n",
- "from monai import transforms\n",
- "from monai.apps import MedNISTDataset\n",
- "from monai.config import print_config\n",
- "from monai.data import CacheDataset, DataLoader\n",
- "from monai.utils import first, set_determinism\n",
- "from tqdm import tqdm\n",
- "\n",
- "from generative.inferers import DiffusionInferer\n",
- "from generative.networks.nets import DiffusionModelUNet\n",
- "from generative.networks.schedulers import DDIMScheduler, DDPMScheduler, PNDMScheduler\n",
- "\n",
- "print_config()"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "d252fb96",
- "metadata": {},
- "source": [
- "## Setup data directory\n",
- "\n",
- "You can specify a directory with the MONAI_DATA_DIRECTORY environment variable.\n",
- "\n",
- "This allows you to save results and reuse downloads.\n",
- "\n",
- "If not specified a temporary directory will be used."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "id": "2dddeec3",
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "/tmp/tmpl_3vvxwn\n"
- ]
- }
- ],
- "source": [
- "directory = os.environ.get(\"MONAI_DATA_DIRECTORY\")\n",
- "root_dir = tempfile.mkdtemp() if directory is None else directory\n",
- "print(root_dir)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "ac758b96",
- "metadata": {},
- "source": [
- "## Set deterministic training for reproducibility"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "id": "12f95a15",
- "metadata": {},
- "outputs": [],
- "source": [
- "set_determinism(0)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "223684c0",
- "metadata": {},
- "source": [
- "## Setup MedNIST Dataset and training and validation dataloaders\n",
- "In this tutorial, we will train our models on the MedNIST dataset available on MONAI\n",
- "(https://docs.monai.io/en/stable/apps.html#monai.apps.MedNISTDataset). In order to train faster, we will select just\n",
- "one of the available classes (\"Hand\"), resulting in a training set with 7999 2D images."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "id": "0b9020fd",
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "MedNIST.tar.gz: 59.0MB [00:04, 13.7MB/s] "
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "2022-12-01 21:36:40,628 - INFO - Downloaded: /tmp/tmpl_3vvxwn/MedNIST.tar.gz\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "\n"
- ]
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "2022-12-01 21:36:40,700 - INFO - Verified 'MedNIST.tar.gz', md5: 0bc7306e7427e00ad1c5526a6677552d.\n",
- "2022-12-01 21:36:40,700 - INFO - Writing into directory: /tmp/tmpl_3vvxwn.\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Loading dataset: 100%|███████████████████████████████████████████████████████| 47164/47164 [00:13<00:00, 3434.23it/s]\n"
- ]
- }
- ],
- "source": [
- "train_data = MedNISTDataset(root_dir=root_dir, section=\"training\", download=True, seed=0)\n",
- "train_datalist = [{\"image\": item[\"image\"]} for item in train_data.data if item[\"class_name\"] == \"Hand\"]"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "ce22143f-4438-4af5-b9e9-2ad70fa1f17e",
- "metadata": {},
- "source": [
- "Here we use transforms to augment the training dataset:\n",
- "\n",
- "1. `LoadImaged` loads the hands images from files.\n",
- "1. `EnsureChannelFirstd` ensures the original data to construct \"channel first\" shape.\n",
- "1. `ScaleIntensityRanged` extracts intensity range [0, 255] and scales to [0, 1].\n",
- "1. `RandAffined` efficiently performs rotate, scale, shear, translate, etc. together based on PyTorch affine transform."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 6,
- "id": "32cc4e62",
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Loading dataset: 100%|█████████████████████████████████████████████████████████| 7999/7999 [00:04<00:00, 1900.83it/s]\n"
- ]
- }
- ],
- "source": [
- "train_transforms = transforms.Compose(\n",
- " [\n",
- " transforms.LoadImaged(keys=[\"image\"]),\n",
- " transforms.EnsureChannelFirstd(keys=[\"image\"]),\n",
- " transforms.ScaleIntensityRanged(keys=[\"image\"], a_min=0.0, a_max=255.0, b_min=0.0, b_max=1.0, clip=True),\n",
- " transforms.RandAffined(\n",
- " keys=[\"image\"],\n",
- " rotate_range=[(-np.pi / 36, np.pi / 36), (-np.pi / 36, np.pi / 36)],\n",
- " translate_range=[(-1, 1), (-1, 1)],\n",
- " scale_range=[(-0.05, 0.05), (-0.05, 0.05)],\n",
- " spatial_size=[64, 64],\n",
- " padding_mode=\"zeros\",\n",
- " prob=0.5,\n",
- " ),\n",
- " ]\n",
- ")\n",
- "train_ds = CacheDataset(data=train_datalist, transform=train_transforms)\n",
- "train_loader = DataLoader(train_ds, batch_size=128, shuffle=True, num_workers=4, persistent_workers=True)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 7,
- "id": "c7b75be0",
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "2022-12-01 21:37:03,228 - INFO - Verified 'MedNIST.tar.gz', md5: 0bc7306e7427e00ad1c5526a6677552d.\n",
- "2022-12-01 21:37:03,228 - INFO - File exists: /tmp/tmpl_3vvxwn/MedNIST.tar.gz, skipped downloading.\n",
- "2022-12-01 21:37:03,228 - INFO - Non-empty folder exists in /tmp/tmpl_3vvxwn/MedNIST, skipped extracting.\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Loading dataset: 100%|█████████████████████████████████████████████████████████| 5895/5895 [00:01<00:00, 3460.15it/s]\n",
- "Loading dataset: 100%|█████████████████████████████████████████████████████████| 7999/7999 [00:04<00:00, 1795.65it/s]\n"
- ]
- }
- ],
- "source": [
- "val_data = MedNISTDataset(root_dir=root_dir, section=\"validation\", download=True, seed=0)\n",
- "val_datalist = [{\"image\": item[\"image\"]} for item in val_data.data if item[\"class_name\"] == \"Hand\"]\n",
- "val_transforms = transforms.Compose(\n",
- " [\n",
- " transforms.LoadImaged(keys=[\"image\"]),\n",
- " transforms.EnsureChannelFirstd(keys=[\"image\"]),\n",
- " transforms.ScaleIntensityRanged(keys=[\"image\"], a_min=0.0, a_max=255.0, b_min=0.0, b_max=1.0, clip=True),\n",
- " ]\n",
- ")\n",
- "val_ds = CacheDataset(data=val_datalist, transform=val_transforms)\n",
- "val_loader = DataLoader(val_ds, batch_size=128, shuffle=False, num_workers=4, persistent_workers=True)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "7ab0e5cb",
- "metadata": {},
- "source": [
- "### Visualisation of the training images"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 8,
- "id": "b7b5a662",
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "batch shape: (128, 1, 64, 64)\n"
- ]
- },
- {
- "data": {
- "image/png": "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ei6Ptr9b975v375B2o1jdQNVtU4Zl0fr++bNm02esdaLJ/XmXAjqcHGOtcRztX379ibP7t27B2nXR9WzdPTo0SaP67fO86MkfbS3/rW+k3jsvE/aj9z9OBeVHnNl63vEPUfyrklcKPN0A87zvZXck3q/qtr6fvLJJ5s8//Iv/zJIf+ELX2jyqOfj7//+75s86l2rml/9O++H69urVq0apN3417jhnCY6J7p69WqTR8dIVRtLXdlK4ouBaZnSe7rYJE5DN/7csduNsdqt9/dgcizJ42Jd77td45+bR6n3L7nHZD7izkvmyM4pqLHVlePmY3rMzb+TeVzClP3vdmSe77akHyXwTykAAAAAAAAAAJgcPkoBAAAAAAAAAMDk8FEKAAAAAAAAAAAmh49SAAAAAAAAAAAwOR9JdJ4wL4lWWvZYQrJE4uokxirtXbNmTZNHxW5O9Hb69OnmmMrPp5SYjVl27/XHalttIyeMdILU1157bZD+8Y9/3ORZv379IO3a8atf/eog7USHly5dao796Z/+6SB95syZJs8///M/D9JPPPFEk0dl1ElfX2xS0XIiaE5Elyo237hxY5PHbXSggki3YcH169cHaSfxvXz58iDtpN6JxNqheVz/03pzMvbXX3+9OaaxzAkyt27dOkhv27atyaNt62Top06dao5pXaqwvaod2679Exl4rwy9R+LrynHtr8d635l6nusjyfib53vc9XXtt8k9Jrj7ce8I7f9ujrBu3bpB+ktf+lKT57d/+7cH6X/4h39o8nzjG99ojq1cuXKQdsJYld+6fqT1mIwRV7Ybo5s2bRqk165d2+TROnr77bebPBpHq6rOnj07SLuNRlws+3mmN7bN8/pJjFzs+3Ykc4tkM4KxNnqaZ330vrfmJZ9Or6XHEol871xrrPZP6iwVTScScX3fu3ms/o5I3xG6QYir27E27BjrO8Y8+3pv+2t7u/ZP3tHJ3E7F+y6Pe48n8E8pAAAAAAAAAACYHD5KAQAAAAAAAADA5PBRCgAAAAAAAAAAJid2Sk3pb3IkLphe702yXtWtxdR1lYcPH55Z9o4dO5o8q1evHqR1jW1V64aoav0MCwsLTZ6etcfpen09T9emurKSsnVt8q1IPC96zLWjrmF2Ti/3bNr+zimkz6KOqarWD+TWeLv1uXo959nRspcsWdLkScZR0v69ToOk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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "check_data = first(train_loader)\n",
- "print(f\"batch shape: {check_data['image'].shape}\")\n",
- "image_visualisation = torch.cat(\n",
- " [check_data[\"image\"][0, 0], check_data[\"image\"][1, 0], check_data[\"image\"][2, 0], check_data[\"image\"][3, 0]], dim=1\n",
- ")\n",
- "plt.figure(\"training images\", (12, 6))\n",
- "plt.imshow(image_visualisation, vmin=0, vmax=1, cmap=\"gray\")\n",
- "plt.axis(\"off\")\n",
- "plt.tight_layout()\n",
- "plt.show()"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "6baa627b",
- "metadata": {},
- "source": [
- "### Define network and optimizer\n",
- "At this step, we instantiate the MONAI components to create a DDPM, a 2D unet with attention mechanisms\n",
- "in the 2nd and 4th levels, each with 1 attention head."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 9,
- "id": "17b0b16a",
- "metadata": {},
- "outputs": [],
- "source": [
- "device = torch.device(\"cuda\")\n",
- "\n",
- "model = DiffusionModelUNet(\n",
- " spatial_dims=2,\n",
- " in_channels=1,\n",
- " out_channels=1,\n",
- " num_channels=(64, 128, 128),\n",
- " attention_levels=(False, True, True),\n",
- " num_res_blocks=1,\n",
- " num_head_channels=128,\n",
- ")\n",
- "model.to(device)\n",
- "\n",
- "optimizer = torch.optim.Adam(model.parameters(), 2.5e-5)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "f9345f57-b65a-4fae-9ffe-ad39db91f762",
- "metadata": {},
- "source": [
- "### Define schedulers\n",
- "\n",
- "We use a DDPM scheduler with 1000 steps for training. For sampling, we will compare the DDPM, DDIM, and PNDM."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 10,
- "id": "0fe646cd-1696-463c-8be0-20ab9c05d744",
- "metadata": {},
- "outputs": [],
- "source": [
- "ddpm_scheduler = DDPMScheduler(num_train_timesteps=1000)\n",
- "ddim_scheduler = DDIMScheduler(num_train_timesteps=1000)\n",
- "pndm_scheduler = PNDMScheduler(num_train_timesteps=1000, skip_prk_steps=True)\n",
- "\n",
- "# the range of sampling steps we want to use when testing the DDIM and PNDM schedulers\n",
- "sampling_steps = [1000, 500, 200, 50]"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "48797080",
- "metadata": {},
- "source": [
- "### Define inferer for sampling"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 11,
- "id": "25014ea6-dfb6-4cd3-93fa-4351197d6fa5",
- "metadata": {},
- "outputs": [],
- "source": [
- "inferer = DiffusionInferer(scheduler=ddpm_scheduler)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "9857d42f",
- "metadata": {},
- "source": [
- "### Model training\n",
- "Here, we are training our model for 100 epochs (training time: ~40 minutes). It is necessary to train for a bit longer than other tutorials because the DDIM and PNDM schedules seem to require a model trained longer before they start producing good samples, when compared to DDPM.\n",
- "\n",
- "If you would like to skip the training and use a pre-trained model instead, set `use_pretrained=True`. This model was trained using the code in `tutorials/generative/distributed_training/ddpm_training_ddp.py`"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 13,
- "id": "49a16601",
- "metadata": {
- "lines_to_next_cell": 0
- },
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Epoch 0: 100%|██████████████████████████████████████████████████████████| 63/63 [00:31<00:00, 1.99it/s, loss=0.0581]\n",
- "Epoch 1: 100%|███████████████████████████████████████████████████████████| 63/63 [00:34<00:00, 1.85it/s, loss=0.058]\n",
- "Epoch 2: 100%|██████████████████████████████████████████████████████████| 63/63 [00:38<00:00, 1.65it/s, loss=0.0574]\n",
- "Epoch 3: 100%|██████████████████████████████████████████████████████████| 63/63 [00:40<00:00, 1.56it/s, loss=0.0549]\n",
- "Epoch 4: 100%|██████████████████████████████████████████████████████████| 63/63 [00:41<00:00, 1.50it/s, loss=0.0552]\n",
- "Epoch 5: 100%|██████████████████████████████████████████████████████████| 63/63 [00:43<00:00, 1.46it/s, loss=0.0541]\n",
- "Epoch 6: 100%|██████████████████████████████████████████████████████████| 63/63 [00:43<00:00, 1.45it/s, loss=0.0534]\n",
- "Epoch 7: 100%|██████████████████████████████████████████████████████████| 63/63 [00:42<00:00, 1.47it/s, loss=0.0524]\n",
- "Epoch 8: 100%|███████████████████████████████████████████████████████████| 63/63 [00:43<00:00, 1.44it/s, loss=0.053]\n",
- "Epoch 9: 100%|██████████████████████████████████████████████████████████| 63/63 [00:45<00:00, 1.37it/s, loss=0.0519]\n",
- "Epoch 9 - Validation set: 100%|█████████████████████████████████████| 63/63 [00:14<00:00, 4.27it/s, val_loss=0.0535]\n",
- "100%|███████████████████████████████████████████████████████████████████████████| 1000/1000 [00:06<00:00, 151.76it/s]\n",
- "100%|███████████████████████████████████████████████████████████████████████████| 1000/1000 [00:06<00:00, 155.25it/s]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████| 500/500 [00:03<00:00, 159.58it/s]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████| 200/200 [00:01<00:00, 160.76it/s]\n",
- "100%|███████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<00:00, 161.57it/s]\n",
- "100%|███████████████████████████████████████████████████████████████████████████| 1000/1000 [00:06<00:00, 161.21it/s]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████| 500/500 [00:03<00:00, 161.82it/s]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████| 200/200 [00:01<00:00, 161.84it/s]\n",
- "100%|███████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<00:00, 162.42it/s]\n"
- ]
- },
- {
- "data": {
- "image/png": "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EgDp5z//OTtmt9tHxJzl83nJ4XBIF1xwwajXpJizm266SXa8WCxKtbW10uLFi8fUHsGek0qlpKOOOkqyWq3SBx98UPK8fTFGVsLmzZslq9UqK+0xa9Ys1ZizGTNmVFQ2hmLO1PrsggULpKlTp46pPYIvjz0ZIyshk8lIp556qqTT6aRUKiVJkiTdcccdqjFnv/vd71TnTzWOOeYYSa/XS/F4XHb8L3/5iwRA+vDDDytuz95i3Ls1geGMnBdffBEdHR3s2JtvvonNmzfjnHPOYcfOOOMMGAwG/PnPf2bHJEnCX//6V9TX12PhwoVjvqYag4ODsv+1Wi2zPpD5lsyjyqrFixcvhtPpxNKlS5HL5UZcW62i97333it7P/feey8MBgNOOOGEitsjqBy1e7BmzRr885//xMknn8xi+FwuF0488UQ89thjLAMZGLaKxuNxWT/69re/jUKhgPvvv58dy2QyePDBB7FgwYKSmZoAEI1Gkc/nZcdmz54NrVYru782m21Ef9PpdDj77LPx7LPPYt26dRW9V8qSI5555hn09PRgyZIlY2qPYM8oFAo477zz8OGHH+Lpp5/GEUccUfLcfTFGKkkmk8z9SUyaNAkOh2PUfggA5557Lj788EO8+uqrIx4Lh8Mj+tTzzz8vszavXLkSK1asYP2w0vYI9j77YoxUQzm3GY1GzJgxA5Iksfmz1Fz7rW99CzqdDr/+9a9HVFKQJGnEtfP5PO677z72fzabxX333Qe/34958+ZV3J69xX51a957770Ih8Po7u4GAPzv//4vOjs7AQA//OEPWeDxz372Mzz99NM47rjj8KMf/QjxeBy33347Zs+ezeJmAKChoQE//vGPcfvttyOXy+Gwww7D888/j3fffRePP/64zLRZ6TXV+N73vodQKITjjz8eDQ0NaG9vxz333IO5c+eyFPW5c+dCp9PhtttuQyQSgclkwvHHH49AIIC//OUvuPjii3HIIYfg/PPPh9/vx86dO/HSSy/hyCOPlIkxs9mMV155BZdeeikWLFiAZcuW4aWXXsLPfvYzli5cSXsElXPeeefBYrFg4cKFCAQC2LBhA+6//35YrVb89re/lZ17yy23YOHChTjmmGNw5ZVXorOzE3feeSdOPvlknHLKKey8BQsW4JxzzsFNN92E/v5+tLa24uGHH0ZbWxv+67/+q2x73nrrLVx77bU455xzMGXKFOTzeTz66KNMeBHz5s3DG2+8gbvuugt1dXWYOHEiFixYgN/+9rdYvnw5FixYgO9///uYMWMGQqEQPv30U7zxxhsIhUKy1/N6vVi0aBG++93voq+vD3fffTdaW1vx/e9/f0ztEewZ/+///T/885//xOmnn45QKITHHntM9vh3vvMd9ve+GCOVbN68GSeccALOPfdczJgxA3q9Hs899xz6+vpkOwvMmzcPf/nLX/Cf//mfaG1tRSAQwPHHH48bbrgB//znP3Haaafhsssuw7x585BIJLB27Vo888wzaGtrY6UQgOEYpkWLFuHqq69GJpPB3XffDZ/Px9yilbZHsPfZF2OkGieffDJqampw5JFHorq6Ghs3bsS9996LU089lSUtkXD6+c9/jvPPPx8GgwGnn346Jk2ahP/8z//ETTfdhLa2Npx55plwOBzYsWMHnnvuOVx55ZW4/vrr2WvV1dXhtttuQ1tbG6ZMmYInn3wSq1evxv3338+S8yppz15jr9rhxohawUL6UZoo161bJ5188smS1WqV3G63dNFFF0m9vb0jrlkoFKSlS5dKEyZMkIxGozRz5kzpscceU339Sq+p5JlnnpFOPvlkVtCzqalJuuqqq6Senh7ZeQ888IDU0tLCiuzyLs7ly5dLixcvllwul2Q2m6VJkyZJl112mbRq1Sp2zqWXXirZbDZp27ZtrJ3V1dXSzTffLCuPUWl7BJXxhz/8QZo/f77k9XolvV4v1dbWSt/5zndKuojfffddaeHChZLZbJb8fr90zTXXyEpREKlUSrr++uulmpoayWQySYcddpj0yiuvjNqe7du3S5dffrk0adIkyWw2S16vVzruuOOkN954Q3bepk2bpKOPPlqyWCwjitD29fVJ11xzjdTY2CgZDAappqZGOuGEE6T777+fnUNuzSeeeEK66aabpEAgIFksFunUU0+VVZ6vtD2CPYPS+0v9KNkXYyTPwMCAdM0110jTpk2TbDab5HK5pAULFkhPPfWU7Lze3l7p1FNPlRwOx4gitLFYTLrpppuk1tZWyWg0SlVVVdLChQulO+64g5Ur4IvQ3nnnnVJjY6NkMpmko446SlqzZs2Y2yPY++yrMVLJfffdJx199NGSz+eTTCaTNGnSJOmGG24YER7yH//xH1J9fT0rvM7rh2effVZatGiRZLPZJJvNJk2bNk265pprZO5OtSK0EyZMkO69997das/eQCNJX2LlVMGYoL0Y99YGsQJBOd5++20cd9xxePrpp/Htb397fzdH8DWlra0NEydOxO233y6zbAgE+4pjjz0WAwMDqqEf+4sDIuZMIBAIBAKB4OuCEGcCgUAgEAgE4wghzgQCgUAgEAjGESLmTCAQCAQCgWAcISxnAoFAIBAIBOMIIc4EAoFAIBAIxhFCnAkEAoFAIBCMI/bLDgHFYhHd3d1wOByyzXcFexdJkhCLxVBXV8e20xAIBAKBQDC+2S/irLu7u+xegoK9S0dHBxoaGvZ3M8YdRx11FI455hhMmjQJa9euxUsvvQSNRoMjjjgCDz30kOxcrVYLrVYLo9EIg8EAvV4PvV6PYrGIbDaLbDaLYrEISZIgSRKKxSJ7Dgljeo7FYoHBYGALE71ej1wuh0wmg2KxyI4Xi0XkcjkUi0UUCgVotVrodDrodDpIkgSr1SprRyaTQSqVYm0BhvfWtNls7PXofK1Wy9qo1+vhdDpRKBTYObTPIV1Xp9PB6XRi5syZsFgs7H1Nnz4dZrMZer0e2WwWzz33HJ599lkUCgVUV1fD4XAgGAyq7rUoGMbtduMb3/gGpk+fjnfeeQfRaBRdXV2yfSWV1NbWoqenBwaDAfPmzUNnZyfb+s7n88n2ANTr9bBarWyxRjgcDuh0OiSTSWSzWVRXVyMUCrE9Ak0mEzQazYj9K4HhflVbW8te0+VyQafTIRAIYPPmzaz/KXE4HCgUCkgmkzAajQgEAuwawPAWOrSdXzlmzZqFuro6hEIhbNq0CblcDrW1tQgEAshkMlizZg071+/3I51OIxaLjdhjUbCLe+65B83NzbBarXj33XeRzWbR1dWFDz74ALFYDNFoFKlUSvYck8mEXC4HrVYLk8mEfD6PbDYLSZJgNpuRz+dRKBQgSRL0ej0bv5LJJLuGTqeDRqNBsVhEsVhk4xn1IY1GU/a+8eMVjZ1ms5mNp2poNBr2mgBgMBhke2PqdDoUCoVRPzOdTgej0cjmAXqfNOZns1nV51XSD/eLOKM9qO6//37MnDkTDz30EB544AEAYJMGnccPJlqtFpIkwWazwev1wmKxoFAooFAosElMkiT2oWo0GtkEqdPp2ETCW+yKxSK7uQaDgXWWTCaDfD6PfD4PSZKg0+nYdWiC1mq1yGazyOfzyOVyyOfzrB0AZK+l1WpZm+g90oRPnZZemzp5MplkHT8QCMDpdMLlcqG6uhpTp05FbW0tPB4P8vk8br31Vrz88sslP2+BnGw2i0AggEMOOQRz5syBJEno6OhAIpGQnUf3kO6VxWKBXq+H0WhEoVBg94z/MkuSxPoK9RMSRna7ne3VJkkSmwDpvlM/yefz7LrUh+kaGo0GdrsdVqsVZrMZhUIBqVQK8Xgc6XQahUKBDXQulwsmkwkAZMJSkiQYjUaYzWb4/X42ONF3BBjeDDgYDEKr1cLlcmHq1KnQ6/UoFArI5/M47LDD4PV6YbVaUSgU8Pnnn7OBLRKJwGKxfBm38oAmEomwTccHBwfR19eHQqGArq6ukhNTLpeD2+2G1WpFKpVCTU0NEzlqGzpHo1HWBwifzwev14tkMont27fD4XCgr6+PPW42m+F0OtHR0QGLxSKbmI1GI6LRKADA4/GgurqafQ90Op3qpGg2m2Gz2dDb2wuHwwGj0Yh0Og2TycQ2Kj/ppJPw8ssvs421aTEEQPa9nD59OtLpNLLZLOLxOJqamjBhwgQEAgEMDAzIXrfcJC3YRV1dHSZPngyPx4PBwUFIkgSXy4WdO3eiu7t7xE41JED4habBYGBjAy32qD/QPaAFKD9H0jm5XI4tVgGwxaJGo0E2mx0hmqjPUXto3KJFsho0lubzeTan02vRc2w2W0Vi3mw2s+eRMCMNoRR3/LxfCftFnNGH+fe//x2LFi3Cfffdh0ceeUT2JWppacGRRx6Jww8/HMlkEpFIBF988QWee+45FAoF1NXVMaVOFgP6kHgLhFKISZLEhBgPfZA0WfKTLolC6nQGg4F1JGCXaKS/6Tq8JYW/MTRpUselm2o0GmWTvyRJCIfDiMfjyOfzCIfD6O/vRzqdRjQaRX9/P2v/oYceCr/fj5NPPhnt7e2ora1FOBzG6tWrheu4BCtXrsTKlSuh1WqxefNm7NixAy+88ILsnClTpiCTySCXy0Gj0bBJBQAT4iTWgeEvNT2u1WphNpthsVjYl7VYLLK+WigUmFWC+gj9UL8xm82s79E1CoUCTCYTG1isVissFgvy+TxSqRT7DuRyORQKBXg8Hra6A3YtWqqqquDz+Vh4gc/ng8/nw4QJEzBz5kxmbfnkk0+wevVqBINBZDIZfPHFF8hms9Dr9aivr4fBYGAi7thjj8XixYvR398Pi8WCTz/9VHXBIJBzxx134I477gAAmVg55phjRmwrY7VacdRRR6G+vh49PT14//33MXPmTGZNc7lcaGxshNlsRjgchiRJaGlpwUEHHYSPPvoIHo8HxWIRL730EvR6PeLxOLLZLHp7e9lraDQa1NbWQq/Xo6OjA1OnTkVXVxeCwSCWLFmCt99+G9FoFFqtFg6HAyaTCS6XC16vF06nE5s2bUJzczO2b9/OrKZTpkyBz+dDsVhkYxf1vbPOOgstLS147rnnMGHCBEyePBnFYhGzZ8+G1WqFVqtFNBrFa6+9hv7+fvT39+P//u//WHunTp2KoaEhfPrpp2hqamLHjzvuOHz++eeoq6vD7Nmz99n9+yqwYsUKRCIReDwefPrppwgEAigUCmhubkYgEIDdbsfGjRuZSCcvAFmu0uk0jEYjs3zR/EYWKl68ZDIZJqRisZjqOAeALW5JnJGlLpfLwW63I5lMMsudwWBgC1sSSPQ6mUyGzdF0Hr0eeRA0Gg1cLheMRiMikQhMJhObx3kBKkkS0uk0e4xftFDbSScQZrMZuVwOBoNBdrwc+0WcETt27EA6ncbAwABefvllvP766/jtb3+Le+65B4FAAEajEYceeig2btyIaDSKCy64AEuWLEEwGEQsFsOmTZuQSCRGmFp1Oh2b9EigkXLnP2AesoDxipsXWnQjeCsbmUbpPH51QM/hhRmdT20EwG4kXVOr1TK3F7mK0uk00uk065SZTIaZhekLMjAwgGw2y6wg9HxBaWigmDhxInp6enDmmWfC4/HgoYcegtPphMfjgcViQU1NDcLhMJLJJCRJYpZSumf0BTeZTLDb7TCbzbKBgRdv5I7kTeD05dfpdEgkEuz6/CqLdzPSwoD6OG8JAyAbrMiqDOzqW/T3hAkTmDm/o6MD4XAYHR0dWL9+PXbs2IHq6mq2ih4cHERvby+6urrYZC5JEpYvX87a6HK52KBpNBqRSCSQSCQqHowEwCGHHIKqqioAQDQahcVigd1uR3NzM4LBIDweD5xOJ3p6etDV1YWenh4mqsiSFY1G0draivr6euzcuROfffYZduzYgXw+D4vFgh07diAcDmPatGnYsmULmwgLhQKsViuKxSLS6TQ2bdrE2tXe3i5zTdPYUiwWsXPnTgSDQRiNRsydOxeZTAaFQgEbNmyA3+9nrs6BgQFEIhH09/ejpqYGmUwGmUwGP/7xjxEMBvHhhx9i+/bt2LlzJ3OFhcNhTJ06FXV1dUgkEmwxvnXrVlitVjYOxmIxdHZ2ore3Fx6Ph7WzpaUFy5cvx+DgoOz9CEZiNBpRW1uLxsZGDA0NsfHD7XZj9erVcDgczEtDXgFaLJKnB9hlGSsUCmxc471KZFGj8AsSLuSdkiQJBoNBZhAhyEMGgHma+DGRN5SQICRrHP98+iFDS7FYRHV1NfNA0OKIIIMKv3Cma/OGF17w8fMvaRJ+PB6N/Tp753I5DAwMYM2aNTj00ENZrMSCBQvQ3t6OTz/9FACwZs0aZDIZtLa2soFLkiSYTCbmDiLLAB/rA+wSQSSiqNOoWZOos/EfPrDrJvMijZ5PqwKy2vEuTXounacGP6ECYJ2dn3BJlPECrVgsMpM/f+NJIORyuRHuOYEcj8fDPqdXXnkFXq8Xzc3N+Pa3v41169Yhn88jkUhAo9GwuBwynSuFOK3WeLcj9UGa/MiSxbvEtVotOw6AuTjpPlO/4vsP9WManAAwFyjvUqKFRCqVQj6fh81mYwOGRqOBzWZj189ms8wdRDFBfr8ffr+fuSgTiQQz9dMigR+o6fMym81MpMZiMeFSqhCLxYIJEyYwMU+CJJfLwel0orOzE8FgEIlEAkajER6PBy6XCx0dHbJBv76+Hn6/Hw6HA/l8ni0QstksUqkUhoaGMDQ0BLvdzvphdXU1wuEwdDodizXjF70kxoHhRTUfM0QWZQDYsmUL9Ho9PB4P2traUCgUmCWZYsn0ej2qq6vR39+PoaEhVFdXs/4JQDYZb9q0iVllaMw3m83o6upCbW0tTCYThoaGMDAwgEKhAIvFIhORnZ2dcDqdTLgKSsMvJJ1OJ9LptCz8hhdk1BfIek9jEj9PUt9SjmH0XLoOWdeU4xeNn2qeLgBM0BF0DfIcUHtJQNH1aFwlww1dx2QysTFeCR83R22j8ZVfqPBt58c9pUWwovtR8Zn7ALfbjWw2i7///e+oq6uD3W7HrFmz0NPTg7/97W949dVXZef39PQwqxLdRBJEZFqlYyaTacQHQTeEBgsAI1Q0H0/DdzTqBHQNviPQj9J9ynccmkTpGvSbOi8/QcfjcVlnJSsNPU4WH3oOicNYLMbEnc1mG1NH+Dqi0+lYsPott9yC1tZWzJ07F4cffjhWrVqFwcFBZDIZtiI0GAzweDwwm82yLzvdK7PZDADsftEqK5fLMZFCfcZms7E+EYvFWH/z+/1IpVJIp9Oy+DF6HRrI9Ho9HA4H+z7Q6pBM9mSVSCaTSCaTsFgsLACc77sGg4HFnfX29jJr3NatW1nMUUNDA7PehsNhGI1GZLNZRKNRZDIZNmH29vZicHCQuTznzJmDoaEh2UQuGMlBBx2EadOmwev1Ys2aNXA4HDAYDIjFYqivr4ckSQgGg6xfZTIZ1NfX47jjjkM8HofNZkMikWCi5KSTToLP50MsFsOWLVvg9XrhcrngdDrxwQcfIJVKIZfLYdOmTZg5cyZcLheSySS7v5FIBKeccgp8Ph8MBgP6+vqwatUqpFIpFIvFERaoKVOmYNasWWyRAwCnnHIK2traMDg4OCJWqbm5GXV1dWwx0NbWhsbGRlRVVaGnp0fmwgWG++LWrVsxadIkBAIB6HQ6bNu2DdXV1YjH4xgaGsLWrVvR0tKCSZMmYePGjey5r776Ks4991x0dnbigw8+2Nu37iuFTqdDNBpFMBiEwWBAf38/QqEQ+vv7mZWLfpMwMZlMLN4U2LW4JIsYiRQSJzRu8pYpclfSufyP3W6XxZUlk0lmgKFxhcYyCs6XJAmJRAKFQgFOp5N5InjRRRqB4obpGMV/FwqFEf2W3j+fhJXL5WSu23w+z1y7fDJAOp2Gw+FAMpmseF7eL9s3RaNRuFwuVFVVsS/olClTMGfOHDzzzDPsvIsuugjf+c538OSTT+Kll15CMBhEc3MzpkyZArfbDYPBwNx+8XgciUSCreZ5dyEvnJSuPqUbk8ySpKaVIktpAaNr8+epWdioY/BxRSTM+BUF3WASWUqByK9a+NfhTczUqSVpODsrEonA6XTunZv3FcJms7EYLR6Px4OhoSHZMRL15PahY7wVjQYfPk6Rt7qSeLJarewLbDabkUqlWNC/3W5nfToSibAFBx8XQa9rs9lY7JnVagWwa1WYSqXYhE2B2FVVVdBoNLBarTJxSN8VGlQpjoKyUJVme95Nyq8WbTYb67vFYhGNjY3IZDIYGhoaMeEKdjF79mxMnjwZzc3NmD59OjZv3oydO3fiiy++QDqdxhdffDHiORRfRrhcLkQiEQCA1+tFKBRij5WyHE2YMAHt7e0wm8048cQT8eKLLwIYdm/Nnj0bBoMB8Xi85L2z2+2Ix+M46KCDYLFY8Nlnn+Gcc87BunXrsHr1asydOxfRaBQdHR2sz9TV1eH73/8+fv3rX7MY2ccff1wWRmA2m1ms5o4dO9DW1jbitVtbW1nfrqqqQltbG3N7VlVVsYQCQB7ovR+muwOGSy65BDNnzsTkyZMxbdo0fPrpp9i2bRvWr1+Pvr4+bNmyRdbnKMGONx5Q7CuJFH4Oo7GSt4RRshtlhNtsNkQiEZnYorE0mUyOMIDw3jAKzk+n0/B4PEin02xhys/pwPBC2+12MyFKr0veCH7Mo+QsNQseuUXp8yC9wf+vRiX9cL9azs444wz09vbipZdewllnnYXW1lb4/X785S9/waJFi3DeeefhoIMOQrFYRG1tLW699VY0NDSwiQgAM10CYAqdF2a8mAF2fSjKLyzdaJpQaYJRPof+V/6tfA26DsH/zU+y/ETOP49eX9kGfrKn47wFUU3ECdTRaDRwu90oFAqyyYvPECYokJPuHSCPKwR2uaZ587zSPU73hVZgfEIAL86z2SxLbKHr8JY6+tIrxZOaFblQKCCTybD3lUwmEY1G2XnUh3lxRq4Bcmfx7noKC+D7LbDL/UDnk7hUxm8I5Gzbtg3JZBI9PT3o6OhAT08Pcyl2dHSMOF+j0SAYDMqy2ROJBOx2O5uoiAkTJmBoaEjVpRIOh5lr+8MPP0RtbS3S6TRSqRQikQhSqZSqqAsEAgDALAvbtm2D1+tFJpNhWX4AMGfOHCagNmzYAAAIBoNYvXo1a/Mnn3wCs9mMaDTKYuW++OILFh9XW1vLLLU8W7duZX/rdDqZK5OfwEtluwpG0t7eDgAIhULYsWMHdu7cicHBQYTDYWYRJyiMgyxiNM7QIpWO0WdPwfWAvEwFPY/m8GQyyeLNaBxRhgrxAgvYNbfyMWd8bBqFmfALy0KhgGw2K3OD8iKMEg9obOQ9Xzx8/BhZz/j/94T9Ks4uvPBCHH744Vi5ciXmzp0Lt9sNAPjXf/1XuFwuBAIBFItFLFmyBHPmzGHxQeRiUd44/oYqS2vwEwsf6M9bvfi4MeW1y62+1KxpAEp2KgAyE6vatZViS3kdpWgrZ2ETqKPT6eByuWCz2ZBOp9Hb28tEk91uZ+VRyARO7nQ+lowsWsr7BcjjDSVJkllEyYwPgJniKRiVBgi+D9NKkr82mdRJZJFV2Gg0MnFGA46yXxWLRVgsFtkCgMz/FBfHW2LpN/99ULp1Ke6N3i9ZBEutHgXDpFIpbN++Hdu3b2fHjEYjZsyYgWQyCbPZDI/Hw6wWfr8f/f39mDp1KqLRKDZv3ox8Po9AIIDGxkaZW2/KlCn44IMPYLVa4fV62QQMDJfwaG1tRSwWQ19fH0444QQMDQ0xS0kikVCNF2xubkY4HGZej3g8zoTa+vXrYTQaMWXKFDQ3NyMajUKSJCbOcrkc3nnnHeY12bRpE1pbW5nYyuVyTJhSconapM7DvydAWMd2l/b2dkSjUbZYIFeg0WhkngRaEFAIUCaTYdYtGh/I7Ufih6xj6XSaGVP47EkSQ8XicE1Fu93OXIj8PKaM46IQJDrG/00Z8eSmBORWf/IOUKZ5KpWSZUmrxRSPJvSV49yeirP96tZ88803cfzxx7N6I/Rm+BX4zp074XA4kMlk8O6772LFihUYGhpCJpNBNBplsRL0QzdULbBfLTCxVNwYb+VQE0j0fLou/38plG1Ru5by71LB1GqCjf+h1GRyjwm35khMJhOLl/L5fIhGo6z/UL+gLzyVyOC/qOQ+5N3nysUCoYxT5Ps7JX7QgMD3wXLXI2gA5Z+nRKfTwWKxsBg2ssQp+43aSpUfdOh5ythLPh6OkiYaGhpQLBaRTCZVXXOCYUoN4iaTiQmXUtZHo9GIQw45BB999BE7xtckU6utdMghhyAQCOCVV16B2+2GJEmIRCKYNWsWQqEQC9wPBAI47rjj8P7777Maasp6ZxdddBH++c9/MgteXV0d3G43NBoN1q9fr9rm0047jblQ6T2QVYYvKMpT6rja++OP6XQ61NTUYHBwkCUVCNShUihmsxnbt29nCWdms5nFQJLrnC+0SgYPo9GIeDzOxkhaJAJgCSn0XEmSWHHswcFBZi3L5/Msho36PJWXolALuh4v1J1OJ4szU7avVCFYcssTvNGG/81TSqCpaQBlG8fqXt+vlrO3334bvb29CAQC8Hg80GiGs+ImTJjA/MdUmZjS8nmTKTA8cZBAU8ZqEfwHohwIecuEUqjRc0pZqohS4qyccla2qZTwK/V/Ofg4NkFpSMBSjBcJnEQiAavVygJGE4kEi9Giv5VWVkC+wuJFFj3G9z8+Y1j5fP7/UpZT5bVplap8nF818pMYLzzV+rjyXH5RQe9NaT0j4cYX3y0Wi7IEHEFp9Ho9qqqqWJxeJpNBV1cXbDYbu8fkXQiHw/D7/aivr0c+n5fFnKVSqRETnN1ux4IFC/DOO+9g06ZN2Lx5M3tN6ivbt29nwsvv96OqqorFvdHkqCxb9Pjjj8v+p0Xgli1bSr7Pqqoq+P1+Fhc2ffp0VtGfLBkAWB03KparJvCVwoyPxfP5fEgmkywQW22nA8EuKEaKgteB4fl1YGCACW6r1YpMJsPEFMV08VZ7GhN5dyUv0miRSElLykUeeQwotpYyLmlRS9fmURaM5TMzy71fXvRTDDu/cKXzSIBSW5Qo9QBdi9pC7t6xeBH2qzhbv349+vv70dDQgKamJhiNRqRSKWi1WjYZhkIhZLNZWRo/TRCktCmtXzlZAvKJhT505WPlrFBq19gd4VTOUlbOOqY8t9TfgrFDXyByJ1IBQlrVORwOFihK5QUoE5bceLRgKIey/5SztJZycav1T+V1lJZhpYDiRZWapUy5SCnVxnJCUQkfEypQh+rDAWAB7gAwNDSEdDqNhoYGtLa24uOPP8akSZNQKBSwevVq1NfXo6mpCclkErW1taxUBkHFPoFhQUTZc5TlZjQaWTmNfD4vS4I58cQT8cUXX6CzsxOZTIbFZpayQhAmk4nV6uPht8fJ5/NoaWmBRqNBf3+/bAcTfuLzeDzo6upi5ZKmTZuGjo4OJJNJuN3uEUk7Pp8PjY2NrBBvfX09c3mKxero8NYr+t7SIo68W1STjK+rSIlOJECAXZ4nvpQGlemge0GCiwQYsGvRSNe2Wq2sKoHS2s+jZhhRO085tlHcGp9dr0RZPoTcqdQe5fzNu3XJi0Dfh7HEQO73IrTd3d1Yv349Zs6cyVK+Q6EQq5ZPQX7ZbJbFQZD7ksycyvgcQH1CA8BihHiUbhz++WpxX6OZJkslDiivr9ZO5blqzy/1+mptFJSGBg7afaG+vp6t/CVJgtvthtvtRiQSYQMUxZ5RzBdfc0zZj5TWVkA+aIz2RR1NiCutWfxr8BY6gg8X4IWZWqycmphUa5OaRZlEYDKZFIWQK+DYY4/F4OAgtm3bhra2NixYsADnn38+8vk8li9fjlmzZuGwww5DPp/H4YcfDpvNhqGhIfh8PtTU1GDWrFn461//KhNmJMDIktTW1jYi6zGbzWL69OkwmUz46KOPZBNNKpViZVjS6TR8Ph/q6upYnTWCdw2RGOQzRaurq+FyubB582YYDAY4HA6sWrUKhx9+ODKZDPr7+2WlOXjLAmWJUsHxSy65BG63myVMKLNSqVgyMBxPt2XLFrjdbnR0dMhiMgXqOJ1OlsATDAZRW1sLp9PJsn0NBgNMJhNSqRRzG9LuJ3q9HiaTCaFQiHmvgF0JS3xWOsWe8WMGbS1Ggk4ZSkFjEr9VHj+2KbMr6VoExQpTNrtWq0U6nZYttPmFAT+ekrCSpOGYNZvNJit9pXRfUo1Kuo6yxplaHTU19mvMWXNzM4DhN93Y2AiHwwG73c72HuTrjtFNpbpJyWSS1YFKp9MseFVN7CgpJWpKiS+1SUjtOmrwVgy1NlQiukZrv/J9AGCV4GnrKxFzNhLaJJlKRkycOJFtz1RfXw+Hw8G2MKKFgdFoRDAYRDKZZNls5E4v9eVWChylKKs0FkFNtCv/p9dSvh4NoHxfLxVTWUlb1Kxz/A/F+lBA7qpVq0pe6+sOuW/onrS0tKClpQVbt27FWWedBWD4ezxx4kS8+OKLCAaDOP/883HbbbchnU7LXJp81fzRaG5ulgm2o48+Gu3t7SMC7IHhQHCaNHlxdtZZZ6Gnpwc7duxAX18fmpqa2BZzjY2NLNmGf51p06bBarWyfWHfeOMNALu2uKFitFSPjYcK1ir3DwV2uWjpOWStmzBhAvx+P+x2u2xHC4EcSoTSarUYGhpi275lMhlWQojCMSi+y+FwsC3CKPucQo9ImKnNybw7kdycNHZREXVyQ6sVsgXk4osKLtNOBLx1i6/sz/cnKkNE16R+TefyHgdl+8mqqOb14p9H5yqLjytrqKnej1HP2IeQK7JQKGBgYIClcVM6LQUj8j5s2lqBJlS1chkEb1ng/1ezqo0mzspZqyphdy0kwgK27+BFBTBcKJC+QGTCdzqdbKAh6xgFMPP9ak/u0570rXJCfbS/1RYcPKNZ9tQsavx3iTfrC8qj1WrZZDM4OMgmxVwux3b9aGpqwsSJE6HX65FMJmG1WlmsLTGaMKNdWOg1eWgLODWKxeHtyajgLX+9jRs3sg3T+bguh8OBgYEB2R7A9P76+vrg8/mYC5dew+VysUlWLTOT35idqKmpQW9v74h4HpqII5EIc9kJSkNzMUHZ13xsqnKhR1Zy+pvfeBzYJWKU96aUuOEXjXzZIh5aECotY1TjlH99QF7Nn4fPtleGXvDJAWr9Rq1vKt2fBF/miBd9o7Hft2+imxEOh5nYInFGMREA2A3OZrPI5XIsVojEmZplarTJRS0TTinU+OuVmjwrzbwkyrVrLAOIciUhGBt80Dp9uWk1RUUUfT4fc2UODQ2xSYXq9ijLRYyWzQOMdHdXKsr2ZCGgdANUkoSidt5o/Y0fsPnNjQWlOe6449DR0YHe3l7E43FWY6ylpQVr167F9OnTMWfOHNhsNpx22mno7u7Gk08+iTlz5gAA2/rovffeY8LJarUiEAigra1NZk2bOXMmK04ciUTQ3NyMeDyOgYEBVu7CaDTi1FNPxXvvvceC9k0mE3PzUzYnMNyveLckH4NJVeaV0DWpsj+RzWZht9uxc+dO2flGoxFNTU2yc0mQAcChhx4qy/5sbGxk9eG0Wi3C4TDC4XDFk+LXFaqTJ0kSM4pQuR5KAiCRa7FYWHYmn/BDWwlSrCMtziRpVzA/iTi+6DuV0sjlckgmk2zRbLfb2SKFrsfvqkNQ6BPBz//KxwB5rUj6nygWi7IYSf4c2u6Jf780rppMJrb/MrDLckttIJ1S6V7D+9WtWV1dzT5AutnkBiH/NnUSurmZTIZV/qVVI91UpZumXJ2x0dw5pSaufflx7em1+eeTWzORSAi3ZgkaGxvZ6imXy8Hv98Pj8aC2thYulwsejwderxfpdJpt5eR2u1mNp/b2dgSDQdb3+MKvpaxSauJGzZKr9lwlpVaV5VAuKEaLiRwN3q3JZ1xRUo/L5YLP58N7771X0fW+jpA1wmazIRqNMhHkdrtxwgknwOFwQKPRYPXq1Xj55ZeRyWTwq1/9Ch988AE2b97MXIY0ZhqNRlksVjnIxRiNRtHb28smE4fDgWnTpsFsNuPNN9+E2+1myTJ89X2CrxFF1NfXI5VKVdSWuro6HHroofjnP/856rlqQdjAsIibM2cO9Ho9NmzYwAroms1mzJw5EzNmzMAjjzwy6vW/rmg0GlY2gxanJGhpazpJGi7YGo/HUSwW4fP52F7A/AKVj/uiuVu5FyZBddAodpYv5k27suh0OrabC421alZetb7Bb26uXGgq20NGId46zJ9X6m/l50gFy3kLsFarhcPhgMvlUg0dULJfl7WkKMmCwe+7pQzQA8BuCF8yQ5mdSdctN9mpWclKnaO8Bv29LyxWpSZuwb6Br4VjsVhgt9vZ9jGxWAy5XA7xeJwVRSwWi4jFYqy2GV9GglaIfCFEQhmoSozWx0rBrwpH64f8ecoMJv65pTKVyrVHzRrIt4mPuRCUR6/Xw2q1Yvr06eju7mZC/91332XjoslkQnV1NbLZLNatW4eBgQGYTCYWO0ZJUc3NzbLSEV6vl8VGAsP3uqWlBVqtFq2trcjn86wAM014g4ODWLt2LVvlUwV+j8dT8XvyeDwyrwb1IWWsG11/3bp1soK0PGSFoLg0NbLZLFavXo26ujrZLh/0vRSUhxcbVISb5mgKQeKtQiSkyDVIrngaA/ji2uSep+KygDzLk87lBT4tcsm9arVamUCjraGU91VtPOTHNhJvJKCUAo8ykvnae6ONfUokSRqR0co/r1LL2X4VZ/zgTZMbBZ1SVgVfh4fizvgNv9UKdapZyOhv/lgpYab8W+1YqYms1E0rZaEYDbW4HrVrlQsIF6jD74VJe/lZrVbo9XqEQiFEIhFotVpMnDiRTVxUqJYyjpSWI0BulVL7cir7XDnrbilKCTQaTNVEmLJdauKsXB/j/y8Vb6aW3CDEWXmo2KfRaMTcuXORSCQQjUZRKBTw8ccfs89x0aJFaGhoQCaTYQkWdrsdtbW16OzsZItW2qeS6n3NmzcPg4OD+PTTTwEMF6GdPXs2ent74fV6MTg4iKGhoRETFVme+IxM6vfKBUgmk0F1dbUsJsxut6Ovr0/W1/R6PaZMmQKz2YyhoSFEIhF4vV50d3dj+/btOPvss9HZ2SkLBiePCpUCUVroWlpa2O4K+XweoVCIfWaNjY2IRqOs3JKgMsxmM9tkHADbSo68XCSq+LpgFJtL4wgtKsh6ZjKZZCEgZOUl16kyc5y3pGk0Ghb0z1+XwpsIcpkq9++kNvDjFmkL0hJU8qJYLDJxqlxY87/VLHS0cCBhSefQjisHjDhLJpNMYRL0xVcKMH7iIJHGiytlQU2gvAgrJ8yIvWm1GouLqpRFRAiuvQutqPP5POLxOGpqaljxWYvFglAohGg0imJxuMo9WW2B4VV6PB5nXzbqS3zWHQC28qMv6+5YbZXHlEJcKcj5rVRolViqqj9/fT4Ilh/w+HaOtjDg28TvbycoDU0wg4ODuO+++3DBBRfAarVixYoVmDNnDivQKkkSPvzwQ/bZt7S0oL+/H+vWrUNtbS2A4f7W39+PRCLB7kNDQwPMZjN27NiBuro6rFq1CqtWrUJDQwOr/F+OE088ES+//PKIOmqAfFN1ZbB+T08Pc4FSm0lAtrW1sfpl3d3dbHH07LPPYtGiRfB4PIjFYnj77bfZRtbUzygztbm5GS6Xi8WXzZ07F9OmTUMoFMJrr70GYHhv0qamJlRVVYliyKPAC4pgMAiXy8XEMNUgpYLENBaSUaVYLLLNy+laSpceLQApbImqLFCCCy/I6BqEwWBgu0/wRcMTiQTbEJ3cpmqB/3SMvzadS69DSV8ajQbxeBwWi4WNpfyOGzR28sKLXJgA2GJCkiTmHs3lcjAajSxUqxL2e7YmWcLC4TC7mXTj+UkNGGkF42+esh5ZuR96PlGptWI0lOp6T69T6lqVWNAEo8MXIEyn0xgYGIBOp0NVVRULGE0mkwgGg8zVTmKLd6vz4oeKLPLnARixmFBSqfVW2Td4yx0NlC6Xi7WD6hbxiTMURgDIt4iigYjO48Ukb/ErZSHjz6PPVbiTRqehoQHJZJIVVX3llVcwefJkzJgxQ7bfZmdnJ6vQHggE2GN+v59ZyRwOB9t3s7a2Fn6/H5s3b0YsFmM1JPnrAcNFcCdOnMg2JAfkWyq99957MquaVqtFY2Mj6uvrYTKZsHLlSlkZAhqvTz/9dJYUwO8k8H//938oFotwOp1wu90syJpcpyQC+PIrPT09sNvtqK6uZq5PvV6PnTt3YmhoCC6XC6tXr8bq1auZUCVCoRD8fn/Fk+LXFb7uYzablVVN4O8/uRnJ00WF46kAMY2D+XyexUHyVjVlTUg+QUCv18vKTNB4QpUaaCsnt9vNNAKN3bSrBv88YNgKSFY7PpuZ9t/kx05eb1Db+AUJP4aSpYw+M3LvkpeFRBtdjy80XQnjwq0JDAs1rVbLbipfImM0IaVU22rPKWWh2FPrmFIMqQkrNVfQnr5mqYlbCLXKoRUfmbepZh4NBiRsyLJBQkZZz4zfU5LPJuL7GYm4fQEvuIxGI2w2G9u3jgY7Wm3SAEKrWN50T+2kQZTeHz2m1u/K9UPewi0ojSRJsn0fh4aGEA6H0dLSgnA4DLPZjHQ6jVAoxGJ6eOuA0+mUZVXGYjFUVVWhpqaGbTlGcTR8LBYwXDessbGRbQtF8JMxbXBOeDwe+Hw+eDwe5HI5JswaGxvZLi5msxlWqxXV1dWor6/H+vXrEQwGEYvFEI/H4XK5mDizWCwsGQEAS/oCwPbFpPhPt9vNamRGIhEmaPk+1tPTA5PJxOaQeDw+4n0LRkLfV7Kg064A5Cbkw4v4uZPCQ3jLO51LNc/oOL8IpN80hpKYITQaDbLZLMuMT6fTrMwRublpjE6lUsyiyu/pybeD9AW/IFUucPmYYV6o8XXT+PmcrkeLUH6M5/cMV+4wUAn7VZzxe03RZEgTCF/brJQLpdSxcuKr3ERRzqKhdCWpUcoVubcm5VJtV8YxlWqLQA59WSlegvpjPB5nq3fKROJN/nyRQd5ayluj+H3l6DylOZwYi3hR9ke6JlXotlqtsNlsLNuvoaGB7YkYjUZZzByVoyFxptfr2V539Bq0SuSzrEpZn/n/lecKcVaerq4u9nd1dTVCoRAcDgfmzp3L9tdcv369TGD09/fj5JNPhlarZbFkwLCrs6qqilnjXnjhBZx44okoFAro6OiA2WxGbW0tgsEg8vk8ZsyYgZaWFrz++uvsGnzmZWNjI1KplEygud1ubN++HZ9++qnMCkCWaLPZDLfbjRdeeAEOhwO1tbW46aabsG7dOvT19bFYM6qkTq7YdDqNiy++GCtXrkQsFkN1dTWOOOIIhMNh7NixA21tbejs7EQ4HGahBgS5VgllfFlPT48sA0+gDs23VAiYxkgqosoX3Kax0O/3y1x4ZIWicUmSJESjUdl+ncAudyAtHIxGo+yeksWOdmJJJBLMXWq1WuH3+1mMGAk1YFd5CxJcZM3T6/XweDwyL4hyrKIFgtvtRiqVYsKRkhn4QrfKYrP0+RGlXKyVxuDuV3Hmcrmg0QxXGyblXW61XcrFCZR3/5WzvvGUCuAu97/yeCmXZCXX5ttXSnAqn1vKKrc3ReFXFYvFAo/HA5PJhL6+Plaapa2tDf39/Ugmk6wv8isqcrfzIoYmGt5yRkKM+jT/Jd4T0aKMFaMf/rXS6TSi0Sg6OztZbCfFNVEdIlrZ0WBKgw4JN/66ytei/5Xt4lejau0VqFNVVYXm5mZYrVa2G8V9992HzZs3s5grKnkBAE1NTVi9ejVCoZBsAli5ciWLL9NoNLDZbFi/fj1sNhvMZjNzBzY1NWH79u1Yvnw5li9fjurqagDDEysJ+4MPPhh6vR6PPfaYrK3btm2Dy+XC1KlTZZuRb9++HfX19fB4PHC73WhubkY0GkUmk8FHH32Ef/zjH4jFYjjkkEOwbt06hMNhZiGz2WyYMGECOjo62EJ9cHAQzz33HIxGo6xYrVp19blz5yIcDqOrq0s1m1Mtc06gDu0SQKEbsViMJQSQoCLLu16vRywWk3kUisUiEokEDAYDE2wktEgwkYuSgvAjkQiznpGw02q1sFqtLPYrGAzC4XDA6XTCYrGw5BfaYo+SPyiOjeBjgqkMFwk6fttHsupRnB0dLxQKTKPwwkotnpasfCT+lAtyWkRXwn4VZ1TcExi53Y3aqrzc5FBqouAfG+3LWc7KVi5Av9LJp5z1rZzoUxNrpZ5H55aqrizYhU6ng8VigcVigSRJslICVEqDF2K8q4+/D/z/FE9BX0peNKn13VJ9uBILL28xJYGYSqUQi8WQTqcRi8VY1h+dQy5OWnHyrlilwFP7vpX7LlHfUxNogvLMnTsX06dPxzvvvIOOjg7kcjkMDQ2hv78fZrMZDocDkiSxiTORSKgWeAXAgrZpoqBYICruqrb9UTQahdFoZMHQ9fX12Lp1K4sDU+JwOFRjZ8gF+/nnn8PhcGBwcBChUEjmtvzss8/YAoJIJBJIJBJob29HY2MjXC4XgOGSHtlsVlb4Vm2hG4/HYTKZEAgEZJbIqqoqDAwMwOFwiKzhCqCsYb7wK1/Ogi8fRPeBFnLK7zvvZaDn0Pn0uLLUCv8cEn+0lRMlkFBxWhKLFosFfr8fJpMJkUiElWkhlyfvPuVj0vgFKD920eKAd7Oqle0qFeZBYSb8mM9v4XRAZGvyKpImQj57QjlZVWIBKxWoXGoyqeQ8tdeohFKTVKn/lRaR0V5P+YXghZmohj06ZDGiAoeRSATpdBqFQmGEW0RpAldDKcr4Ctj0PKWwUlJO9JQ6ToMnHyNHr6HX69nKk75jNPjQc+k6tNpUZkmXap9aH+XbKgRaZZjNZsydOxdz5szB3//+d+baoexHqs6ez+fh9Xqh1WpldcKUG4ADwwVg7XY7Nm3aBK/Xi23btiGbzTKxEolEcNJJJ+Hzzz9Hf38/UqkUHA4HkskkMpkMtm7dOsJVCAzf05aWFthsNmaxa2pqgiRJ6OjogMViQXd3N6LRKNatW4fBwUHZ7gSSJGHDhg2oqqpikya1iUilUqivr2dlPngaGhrgdDrZbgbE1q1b0dzczHYOoO9cXV0dNBqNyNasEDKY0L7VfJwZH9xO8wt5DDQaDUwmExN0FKNFgp/6MI1BZLXKZrNwOBzMsl8oFGSB+RTET2MNWU2tVisTdiaTCQ0NDcjlchgcHMTAwADzyJEVjc+ap0UFxbDx751fMEiSNCKmjKAEBmX5GdrXk16TnkfnU9mcStiv4iwajbJNU3n/Lb9qL+euLGcdq3RS2V1hVsmkw09O5Z6nPKZWELQSIcmvasS2OaMTi8XYBBMMBhGPx2WWMj6LkeDvKa3s6G+lEOMpZfmtxKrL93NlP6LvCD940KBFP1SbCpDXM6P3SMf5985/H8v1vVICjeLY6BqC0qTTafz3f/833njjDSQSCQQCAWg0GvT19WHSpEnYtm0bE0rJZBKNjY1s14BYLIZQKITW1lbE43G2pZFer2ebjn/66aewWCyYN28eIpEIE0Jvv/02nE4nc2HFYjG2sFMKs/nz56NYLGLVqlXYtm0b21LpjDPOgMvlYkkH1B4ArMQFsX79euYynTZtGpuss9ksa1NrayvsdjsGBgbQ3d2NRYsWsd0lGhsbWVwS7dTB09bWNqK47eeff47W1lbU19ePSHoQjIQyE8n6SgLEbDazpCIAzCWp1WphNpvZgtZisciEELkCk8kkkskkdDodrFarbKyk8YmO8WMs7XcsScPxYD6fD1qtFt3d3dBqh7fmampqwvTp05m71OFwoLe3F8FgECaTCalUinkKqBoEn0DFj68kQGnRTotefnN2crvyFjGCEqp4SJxSolalu/Xs9701+cmBH9xHm7RGO17KMlGOcs9RumyUkyX/92hxacpjStclIN+UWPnadKzUawi3ZmVQ0D+tzvg4AT77RllhmiARzAszpZkcUO/PlSwKKrWs8e1RuzZZyZSWrHICkr9mJRZrOq72HRDlNEanu7ubue7IlelyubBt27YR53Z0dIwYq6qqqlBdXY2qqiqsW7cOW7ZsYfFg9fX1yOVy+OSTT5i7EAAmTZok2xezpqYG8Xgc8XgcHo+HZUICwIYNG2SxXNlslsWvUbIJfz5fkDMQCGBwcJDtoQwMxzUlk0m0t7fLRByVxKA+s2nTJvh8PhQKBdhsNuzcuXPE5u7lxm2Px8PcuLRPs6A0vHih8YxqkvEB9/y4wmd3U2IVCSU+wYgsl6lUSmY9oq2d+EQBimFT7gRA9z6TyaCnpwfJZBKhUIglQgHDFjCKJXa5XOjt7WUxtvF4nMUS8+5HPsmB2sSXAqL4XH5+UC46y3lDyKVOr1MJ+9X3xe9HyNeNUpvI1CwPSkabQNSOVRr7pWyP8pjadUYTR0r3j/JHWZpBWZFe7Uf5mKA02WyWVWOnmnvKe8y7PmmlRXED9De/0wChtE6V67dqAn80RhN8/Dn0PePrsyldl8q4OLX2jnWxA0DVJSAoDe2Jm06nUVNTI3vM6/Wyv5WWcar9RIH9fF+mzaMBeTB9c3Oz7Bq8649/LXqeWoX9L774Au3t7TJhBgy7MOm1m5qaMHv2bNnjGo0G0Wh0hHVNaQUeGBiAXq/HEUccMSJDk6AsQDWmTp3KaqhVut/o1x0qDM9XzqeMbY1m17ZMlLGoFGa0LRNZ4/lCtGqLV2WyBp/lzsfCAsPfC8qijMVi6OnpQVtbG3bu3MlKtQDDfcLv92PChAmoqalBXV0d6urqEAgEWJkhaqua2OJduPSZALtqlKl5A8oZRCj+Uxm3Vo79ajmjCYOf3JRvrpIJoZSVglAqWrU4LTVrwWivpUQt1qbUxKsmxsqdr2a9KDV5kqAQ4qw8tDqSJIkFjvLuP76iMz1mtVpZtg/FcfHp3kpRpmapUt7jSqxS9Fi5/qG07Kq9jrL8B/83H4irFFSlrHKl2sZ/Dsp0ckFpqBI7sCvmLBAIYM6cOeju7mYC46yzzsJ7770Hg8GAadOmIZvN4vPPP0dnZyfmzp2Ljo4OFq9FFjSj0Yi6ujr09vYin8+jqqoKc+fORTabRXV1NTo6Oph46+/vh9/vZ4klapB1bNq0acjlcjIr35YtWwAMW+P8fj+WL1+O+vp6pNNpDA4OoqOjA+vWrWPnU2xkPB7HscceC4fDAYvFgqeeeoplUm/evFlmkSPUYuNoQfXRRx+hpqaGuW4Fo8N/r8lFSYKLLFk03jkcDlk8FWU65vN5WK1WWeY3uUQpK5OuT3XLADAhSPeKtnYi9ypZ7agem9VqhdVqRXt7OywWC/v++Hw+VojbbDaz57W1tSEQCCAej6O/v5/F16VSKbbg0WiGY3GpeK7BYEA4HGabwSvHer7KBD+m8tmd6XRaNo9UwpjEGWX7jEZTU1NF5/GNVxMaaoKlEqtZuQmvnPWilIArh1JcKbNZyp2rdEHyLk7lNZTWDOV7Usap8XuSCtRxOBxwOBxIp9Po6elhNX2Un53ZbGZFD91uN4LBIKsdxgsx3upbrs/ubgxWqYVLqb7G/x5tsaH2HSnV3/jXKNUGOk6Du6A0tbW18Hg8CIfDsqxEr9eLcDiM/v5+rFy5Ei0tLairq4NWq4XFYkEmk0F3dzd27tyJ6dOnszpQ/f39IwLpgWFLcVtbGytF8Nhjj6GmpgYmkwnLly/HQQcdhIaGBnR3d7OMX6UQongh/rGenh7ZxCZJEoudCwaD6O/vx4wZM7BmzRo26W7YsIEFTVMficVi2LRpE0s22LhxI3vd5cuXw2azQZIktr0aFd612+3Q6/XMZVpbWwudTodIJIJMJoPe3l4Ui0VMmDBh7920ryhk8eKzGknY0njAV/03m80ykUL7btKil+LJ+CLLlKlLlrZwOAyTyQSNRoNkMgmz2czGEjLe0HPJWkdijkJSLBYLBgcHodFo4PF4YDabmXXM5XKxGo6zZs1CT08PK+5MuyCYzWZWe4/EJ7WDtxgnk8kRniz6HlDBWerTJFbJKkeu4X1SSmPixIns71KTkNIsXQ5effLwE0I5K5aSSq1f+4pSQq3U40oXpVKc0Tn851BKaConZyHORocGGKKUCxkY/jxp/z+LxcLM/OXcgGp9UK1PjqWfjmYBVutfatbeUn1jtO/jWBhNGAqG8Xq9aGpqgsfjkYkzfvyIx+MIh8OwWq2sjIDP50MikUA6nWYBz8DwdkUmk0kWC0TodDrE43F2Lr9QSCQSrDyBmjADdm2Czl83EokwSwjvSk2lUmzfQ6fTCbPZzOpe0es2NDSMWPRbLBbWTn4Ta7LIAJC1ze12y/YIDYfDsr04geFdFMq5PwXDkBWMBIky9pkvsE1ZiZQEIEkSE2ukASwWC/L5PFKplCy8gr8esEvY8JnmvGeD4MNMaKwisZdMJpFKpWC321EoFJiIp/PJC6LRaFjdv4GBAVitViacqN+T5Yws/8rAfz4Lk+DbSyKN//z4sJiK7kXlt234A2toaMBll12G008/fY8zApWTiRpqInC0cyqxXpS6xu6idFHyE73aefzfSrduKfdlKXGmdk0y6QpKQ58RuS9pYFLev2w2C6vVCgBsdUiZafz2R4DcYsWLIjXRQ8crodRzla+j7AdKd2UplO0uZUkr1yZlO0j4CstZeWilT+PprFmzYLfbZZmHPp8PbW1tqKmpgdfrRSwWw2GHHQav14uPPvqIuUyAYRfKtGnT4Ha70dbWhtbWVgC74s34PTTdbjd7HgX4q92vefPmIZfL4fPPP1d9D0ohd/jhh+ONN94AMJx4kM1mMX36dESjUbS3t7Min8ryFqeccgpqamoQiURgt9uRz+cxNDQk27wakO8AQBmqBFm1KQFg4cKFLPZIUBoa8+h7a7PZWNwYfZ91Op0sk5OENzBsmeUzEQ0GAxs3h4aGWCYj1SwLh8NIJpOs0CyJNRpXeGFDcyRdj9+1BBi2aNFG6vQ8o9EIp9PJFjUUa+ZyuZBMJtHX1webzcbKD5H1NpPJMGHGl/jgPSQE3yf5x2jHFXofGo2GbVlGcaWjoZHGoEp6e3vx8MMP48EHH0Q4HMZ3vvMdXHHFFZg+fXqllwAwHCPgcrlYlV8lo00iu2tpqPQ1ylFqEqQbwAstWg3wEyS9tlJQlYu5G81yobwWALZyXLNmDSKRSMXpu18njjzySBSLwxvbUrwM3Qu6R1qtllnY9Ho97HY7crkcMpkMKx/AW86UQfVAeWuU2v+V9lllHwR2hQooFwtEqeQEpXWtVGJOqTapLUJon0+n04mtW7eqvifBrs/O5XIhm82ymDOXy8X2C1RSV1cHh8OBfD6PaDTKXHwAMG3aNAwMDLAMZNokmgorE4cffjg2bdpUstDsWAkEAqwwrkajwUEHHcTGPZfLBbfbjWKxyEoctLe3Y/v27WhtbUU6nUYkEkEsFsOsWbPQ0NAAm82GZ599FsCw5UsttszhcKClpQVr1qyBxWLB7NmzsXLlSjQ1NcFqtWLTpk1obGxkWxApS20IdkH9kDYJJ+GhrKTPb4/k9XqZC5EvrWG1WlFfX8+uTQKHdiChYthUqZ8yO2lspfmTxBFZ3ywWCzQaDbNy2Ww2WK1WJBIJ1NbWwufzoaqqivX7hoYGTJw4kc2vFouFueaj0Sjbs5ZCAQYHBzE0NIShoSFm/cpkMmx+4PcZ5ecJik1LJBIwm80wm82IRqPweDzQarWIRCKwWq1oaWnBrFmz8PDDD496P8Zk+qqpqcFPf/pT/PSnP8V7772HBx98EAsWLMCMGTNwxRVX4IorrtijIPRKLF17Q5jRa5WzypVyH6lZJpRWCrXfo1kIy7WtlGtK2Y5yxwQj4avhq9Uyo8+PYgbIZM0XTC5V12w0lIsM3sJWyh1Y6v4r/1brl6WuXc4qW6nFrBQkVoXlrDKi0ajss81ms5g2bRo6OjqQSCRkAsVoNLJK+MoYFqrtlMvlMGHCBOzcuXNE7SWHw4GNGzfCaDQyVyVRV1eHoaEhJhJLwQfn+3w+WV/0eDyYPXs2m1QHBgZYQDhNyIFAgBW8JfcTMBzbrNPp0NLSIvtsCArArq6uhtFoZK5gl8uFYrEIu93O4n3q6+vR0dEBv9+PqVOnln0/gmGUxafJXUnB/XxcdT6fZ3FblMVJ3gUK9tfpdHA6nUilUmzMJJEFDFvBPB4Ps6zlcjl2PX4fYNrFgi+6TbXDMpkMfD4fc1fG43GZV4Qsy/wuMFqtlu24wVuM6X3QuE+LTLXSX5K0q+4ZXx9Nq9XCZrOxhTJfNJesf6Ox237JRYsWYdGiRVi6dCkuuOAC/Mu//AvOPvvsESnYlaK28i4n0EpNbvw5u/Oao52rNukpBVi5/0u1USkUKxFoSmsZIbI0K4NPl+YHHP5/ACPM2PwqUhncX866yYsd/p6WOq8cpcR4qR+111Fax/j+Vsq1WYpSiwchzkbH7/ez+CxJklBVVQWdToehoSHMnz8fLpcLK1asgNfrZVYgAMwKxMewNDc3M4uu0WjE5MmTR1gt6+rqYLVasXXrVlRXV6O6upqJs+rqakyePBldXV1IJBIYGBgoWZcpEAggnU6jtrYWWq0W27dvZ49NmTIFDQ0NAMCK49Ier8FgEDqdDg6HA9OnT0dXVxfbaxEA2xPW4/GgqalpREwaH6+WSCTQ0dEBr9cLo9GIeDzOslWz2SwmTpyIrq4uZDKZMXt4vo7wpStI9JOYJjFG2ZV0LsVpkYVLr9ezOC7accDhcDDxQqKJrsFvr0Xij6xPFAuWyWQQiUSYm5Wsa+QS1Wg0sNvt7BqFQgF2ux0ul4uJK6PRKNszuVgswmq1wuFwwGq1IhQKsRg6EnHZbBYGgwFer5ft20niiz4nvkgu/7lYrVY2xlosFkSjUej1+oqLIe+2OPvggw/w97//HU8//TSmTp2KP/3pT2OuwMxPHGqDu3JSKTdZlJsURzuHP09tclY+zv9dTojx6pqfkEtNmspJUe3zULpH+d80aNGXRIi08lDWD62OyMzO190hEcPHHAC7xAwvzkpZvXhhPZqLmtrFU0nf5uMbqVwGXYcXkqUsZJV+z8qhvA4/kApK43K5cPDBB8Nms+G9995DMBiERqPBpEmT8I9//AP19fU47bTT0NjYCJvNhng8jldeeQXHHHMMs1C89tprAHYJNp/Ph2nTpsnigv1+P3Q6HWpqali/7evrQ19fH0wmEzKZDFKpFLq6urB161Yce+yxOPvss+FwONDZ2YmdO3diw4YNaGpqgs/ng9PpRCKRQENDA7OgTJ06FTU1NaiqqsITTzwBm82GqqoqHHTQQYjH4/jwww+xfft25ibSarU47rjjsHnzZmYJbGhogF6vx9tvv132cxscHGQFR0OhEEKhEGw2G7Zs2cIs2iTsotEoXnzxxb12z76qUDmKeDzOtmUyGo0YGhpiIstkMjEBQm48GttoC7xoNIqBgQHU1NTA4/EwtyYJJbvdzhI/KMtYq9WyPko7EBQKBXg8HlitVuZOzWazLGuST2AgMZlIJOB2u+H3+1FXV4dNmzYhk8nAaDTC4XAgHo8jEongiy++QG1tLds8fdGiRQgGg6x0C2Vztre3w+VysWx+ijMm6xrFkOXzeZZUQzsmUEa/Xq9n35lKY87GJM56enrwyCOP4MEHH8TQ0BAuuugivP/++5g1a9YYu8AwauZT/rfa32ouGuW5SkGmZo1SnqeEF1PlzlcTXaWK0Slfm59AlRObUiyqWceUwqDUtQXqkHuSqljzbk6+rygLtJZjNGEzWr9Q/l/K8qX8nwQZf32lkFRzZZa7phrK71250AD+tQWlGRwcZMHOVNolFosxi9fAwAAkaXhPyr6+PpbxSFvb8IVcPR4PJkyYgI6ODmzatElmLSoUCpg6dSp8Pp+smKvf72cT19atW9nrrlmzBtu2bWNC0eVyYdGiRVi7di2rfbZ582bZe8nn8wiHw/D5fCz+x+l0siQE5Xhqs9mwfPlytLa24tBDD8WqVavQ1dVVUZ/hM+MI+mzUULp2BSPhXX4ajUYWA0mCgw/rIKsaPZdEG53T29uLUCgEr9fLhIzL5UIgEACwK3De4XAwC5Rer2dJA1arFdFoFKlUCjqdjlnAyBIFDI9zfGwmbVpO7kxyL1LpFr1eD5fLhdbWVuh0OuZSj8fj8Pl8LEFnYGAAAwMDLM7YZDKxjF/qexRrR8cikQgb85LJJIxGI2t3Q0MDWlpa0NjYWNG9GJM4a2pqQn19PS699FJ885vfZNssKDN45syZU9H1yg3clUwgoz0XKF+LqdRzRzun3PPUnlvKVcULOrXaV6XEIR/PRs9Tuln58wXqUCwD1eDhLWS8FVNpMRtNsI+VUv2jnFWVf3y055f7XYlYVHu8nIteeVyIs/KkUins2LEDBoMBLS0tMJlMssKvFKisZGBggH3X7XY7bDYbHA4HDj/8cHR3d6O/v1/mEqTsYt7NXF9fz7LXKDuSoMBoAGwPToPBgGg0inw+ryp22tvbWaHZ+vp6ZpHr7e2Fy+WC2WyG3+9n1kFymeZyOTQ3NyOfz8uySXn4uCCtVovOzk7Y7XZUV1ePWv2fXGWC8vAblyvnJH4bJf47TUKF9zqQOKPYL4o3s1gsrIg3WaeoACxZomgnCCrDQqU7gF1uV7KqUf+nfk3tymQySCaTLOuX9ypQAoNGM7w5Orlrk8kkS1zhM82j0aisuC4lKpC7ktpnNpsRCoWY5yocDrMSHl6vlyUnkLt/NMaUrakMmlbeJDo+Wp0zytakDBqlmBjNgsa7idRQaxP/W0mpyVbtb6VbU2ktI5+60sXJt4seU6sWXKrtRKn4Nf65tLmsXq/HqlWrRLZmCWbPno14PI50Os2KFJIFqpQLkKdSIa9mES0nZspZaCt5jtrfapYznkpdrsrnqLUF2FWPiAJ71cSFYJja2lpWDuLEE09kJSgWLVqEFStWlIz5qq2tRaFQYNX8BwcHUSwWcdxxx6G9vR1tbW0lCx57PB4ccsghePPNNwGAiSiNRgOfz4eBgQEEAgHY7XZs376dbcAOgFk/NJrhMgpdXV2yhALim9/8JlauXIne3l6WONbT04NXXnlFtU1z585lVort27fLMlDp/fb09Ix43nXXXYcnn3ySFR1tb29njx133HFYvnw5qqqqMG/evJKvLZB/nx0OBxMu5N5TjgtkHKDaZuQ6JOFCOwQo+y+NC1R7zufzMYHmcrmg1+tZjTKdTge32w2z2YxMJgOv14t0Oo3e3l5MmjSJuUeBXfHA5OI0GAywWCxobW1l8WLV1dXw+XxIp9PYtGkTBgYGAIDFqrW0tKCmpgY2m425Zrdv345oNIpYLIZEIgGfzycrBRONRuH3+zFjxgxEIhEmzmhusVgsmDx5MvR6Perr6zFlyhRUVVWNfj/GIs74Tl+O0SoxK8WZUjxVYhHjqWT1P5pAK/VYKYGmFlum0Ywsn8FbuZTXUBNZSnelUsDxLlP+ufQ8et8UYLlixQohzkowbdo0VrgwkUjI9iMEyrvXgdH70mj9tVIxNJZ+r3Z9NTfkaJQ7r9zr8n2Xgn6NRiMbBAUjmT59Oitf0N7errpdks1mU3XZUbkAfiukQw45BJ9//jny+TymTZsm29ycMJvNOOGEE1jQ/7Zt22TZmT6fj8UMDg0NsZhMNdxuNwKBABwOB7q7u6HRaFiMEG0dBQzHkrndbuRyOXa8traW1acqFouoq6tj1r6pU6cin8/LtoWyWq1syx0q6EkxUsBwn2ttbcWnn34qa+OMGTMwZ84cPPHEE6rvQQAmbsmSRNYwfiwg6yUVgaXvu9lshslkYhnHJOooZMRkMrFsXWB4rCC3o9frZfMcX5TWYDCgpqYGVquV3WuyflKpDCrsarPZ4Ha7WbYmtZWSTKh0h9FohNvtZsKvs7OTZZfSe6JMy1gsxqyB8XgcfX19GBgYgMfjgdvtZltZOZ1OmXuTMlSpX1KCQiAQQF1dHZqamiqqETsmt+be3v6CX82Xm8yISl0plV5PrT2lrqG01pU7XkrkjdUiwkMCTU2o8S5O+kypgwhKo9wMvJQLbrTFwmiLg3L9cE/ivtQscuWuWYlLv5LzyqFczFQSSvB1p6urC01NTbBYLIjFYsyKxUPijFLyycplt9tl95ssBjROqG0UDgzHq33xxReYNGkSK3DLo9Xu2jcWkMdrKfe3pO13jEYjiy3K5/MyYQYAnZ2dCIVCOOaYY9hjPp8P8XicuU95Cxy/RRNB26hFIhFmfRgcHEQ6nWYTuMFgQFVVFVsQkDdDzbon2AXV7yKjiXL+4A0OvDjj93EmcUM7qlC8LpWYIM8EPZeC6EkcUdYnuR1p+yca82ivTXpN2r6JYjYpWYEvyswLd3KZAsOZyWTEoMxKynSmxQXFYlIcXCaTgcfjgd/vh8ViQSqVgt/vZyFeGs2uTFSyOKZSKUSjUbjdblit1opjwcckzkpVh1Yy1piz0dyTlUwqo1m9dofRLA+8C0dpBVGzjihdnGrtLuWG4J+rtJ7RaoePE6BVkKA0ZAYvFyhcygXIP6a8j6OJtkrPL+fiHstCptLrV3rtcq+ntOYKcTY6sVgM69evZyUxAoGALMgfACvuarPZ4PV6kclk0NrailgshrVr17Lz6HG/34+uri7s3LkTzc3N6O3tlVkugOEdAXK5HPNiELNmzWJJAWplUKZOnSqz1AG7sj4PP/xw5HI5mbVuzpw5CAaD6OnpQTKZZKKKRB4vDHlR2tPTwzZ/J2irKgDo6OhATU0NGhsb8cUXX7B4tq6uLtjtdqTTacTjcdhsNqTTaVGAtgL4belITPHjQaFQYNs2UbY7CZN0Os3mIZPJxFyUFKvl9/uRy+WYBZisTeSGJOFH5Tho4UHjJYkumu+cTieSySQSiQRyuRyLqZQkie0OkUgkEI/H4XQ6YbfbWfFwmjcp/MdsNstiMmnHGEoYyOVysFgszA1bVVXFLIUU70klOKxWq8zCRzXa6LiyrmYpxhxzNppFSqOpPOaMrD1qg/ieTBxqrkj+NeiGq8UUjeYqUnNL8q5LpSuTP4d3eY72mnSMVn1qblQ6jxdndNMdDgc0Gg3eeOMN4dYsQWNjI9vgGZBnNyqp9JjyXtL/pTJrSx0bzS1ayWuXem4pxurKVFqNleeSNcVgMIyYZAW7mD59Or744gtIkoTW1lZW36m3txcajYa5OY888kh0dXUhGAyWzUo0GAzweDxIJpOIx+M46KCD4PV6USwW8X//93/sniQSCbadjUajGWGlslgssNvtCAaDrPzGwMAAizOaMmUKW7BTmQOXy4Xa2lp4vV588MEHAHbVXotEIkxYOZ1OBAIBVFVVIRQKoaenB5lMBgcffDASiQSGhobQ1dWF+vp6hMNhJBIJNDc3w2q1Ip/Po729HVarlWX+rVq1Ck1NTQgEAmyHAIPBgG3btmHSpElobW3FtGnTcPfdd++DO/jVwGQyMXFGu6JIksTKMtH4UF1dPSJ5iv6n+C8STyT6aS9YsojF43FmQODLYBQKBYTDYWZ9o+3KSADRdmNUnJbcqWR9I3eh1+uFw+GAw+FAV1cXc39T28hC6PF44HA4YLPZWHJYsViEx+OR1S+jfWHj8Tiri0YWRsogpe8UjXtUnBcYXnSQmFVuWVaKMVnOduzYMZbTR6VcgPXuuCVLXZcXaJQVQmZVpTurlFjiXUmlYoZK7bHIF6xTWs+U51M7S11bzVetbDP/moLS8DFmyntRiVhSu49K1CyppfqP2vPKXVPt+Gju9Upfo9y1edQWQvS3sJhVBm9lSiaT6OrqgtFoxIQJE2SlKsoJMo/Hw1yDuVyOWdoAYMuWLZAkicWUFYtF+P1++P1+5i5VsyrRHpW1tbWw2Wxsf0QAbKNpghbkGo0GkUhEVtGf9gQl6wiwa1eDXC6Hnp4eJkBXrFgx4n0VCoURbXS73fB6vWxiLhaLrBQCsKv6+0EHHYS+vj50dnbu8V7QX3V4DwKJEt7NSdm6RqORfbfJygUMf+YOh4PNdSRaeAsUeXMsFgssFgvMZjMr3FosFhGNRmGz2QCAFWylc2kHAHKVUoYkhQHwhhGyVlFxZ3LTUp02k8kkE1VGoxHpdJq55KPRKLPSabVauFwuAJBtPUWWNGo/XxxXGX5kNptZ7BntgDAa+zXmrBIrHFHKXah8nL+u2vXJyiRJ0ojComNBbZIFdokoNTePmmuTbzNv2aNjfAV7XuQpK9jz5wp3ZmUoTfbA6NbT0dyc/L0rtdhQszjtLSFdzhJcqv2VWuGU76fc+UKY7R5UuDKVSqGxsRG5XA5arRZerxfhcBiSJKkO7BaLhYkzHo1GMyLuLJ/Pw263Y+bMmUin06MmegUCARYbxKP2PL1ej0gkMuI1yUVmNpvR0tKC3t5eZLNZtp9mKUoJKtqmibJVgeHSImRlocl4ypQpaGtrQ3t7+17bQ/TrgEajYX2PDBoUYE+iiHdB0g95aOh8KlvBF64tFApwOBzM1ehyuVi25ODgIPP68K9HblKDwcBc32S90mp37X9M7aVitXQulUuyWCzsObSjAD/vksCiLFNexNGCYmBggB2nfToLhQJzo/PzColFSqihGOdKxNmY3JrEli1b8MILL6CtrQ0ajQYTJ07EmWeeKdsLrRyl3JpAZYN6KWFWyhLFCxzK/OCL5VFtlXJB4TxKqwCfian8W2lB4614yuvRD3UY5TX5FQr/HpUuVUpJ1mg0eOutt4RbswTV1dUshkXp6h7NesofKwV/n9Rc6HROKQvevqASsVauHaUsYspjNGBSgLZwa5amurqauehaW1uxZcsW5i6kfSLz+TxmzJiBYDAISZJw0EEH4bnnnoNWq8WcOXNYbTC1chMWi4Wl/re0tLBCtoFAAI2NjcyN2tbWxjLfIpEIc3NS0L7aTg+zZs2SxZ/xyQJ8hmd1dbWsD9TW1iIYDCKfz2PhwoX47LPPkEqlMHXqVJYsoHyOknIZpHz7qBgqiVuBOiSIyJJEZSnIXUkCjEqsUHxjJBJh8VvJZJJZuvhwHl7QAWDzEc3JFPul0WjYFkl6vV62n2cgEECxWEQqlUI4HGalZAqFAhoaGhCPx5lYpO8MJYrQfXe5XMwiaLVaWf0+nU6H+vp6JBIJZDIZtvsFtY+27Eun03jrrbdQX18Pn88Hl8sFl8vFEhNoCyf6IeugzWZjeiOdTldUSmPMdt5bb70Vv/zlL1EsFhEIBCBJEoLBIG688UYsXboU119//VgvOcIqNhpKy5PSUlZOYPHZGkqLR6XxZ6Vemz9Or6W0nPAqnX9M+aMWuwbIrWJKAUrWMwp0F9aL8pB5XFnTrJy7stLBXSnyyAxPYowCrStZDOwJ5cRkpa9bibuyXF+rNDvp6wpZfpxOJ9asWcOOa7VaHHbYYVi/fj1CoRA++ugjaDTD1fppcC8Wi0xEabVaWaV0gi+RsX37dlgsFrjdbvT39zMLQjabhd/vh91uh9lslu3HOTg4iObmZsTj8RElUfj/vV4v4vE4czn29PSgtrYWLpcLTqdTJrR4AUmxaQBkGZ50PsWz8ej1ekyePBmDg4OsRhztoxgMBuFwOGA2m9Hd3Y10Oo1AIICDDz5Y/QYIGDQu8UKcylpks1kkEgnk83l4vV628ThZbCkIn99JgKxbZJXisxhpq6hwOMx2COANDFRxn9ypZNQhaxXFd9ntduj1epZ5ScKPLHbKEh5DQ0PMsprNZtmc2tfXJxuj6Xc4HEZ1dTU7NmfOHHi9XthsNlavjazCJCopXo+OkYjUarUVG0rGJM6WL1+Of//3f8cvfvEL/OhHP4LH4wEAhEIh3H333bjxxhsxf/58HH300RVdb09cLOWOl5t0+ErCyhpi5Vyl/OuN5pLiJ0S1c5VCTK39vFAod57aa9LkL9yb5SEXsZpbe6zCRa0P8EIbAEvYIJcBPW9virOxWPYqvR7/u9w5/P/KhYdgdPg4La1Wi4kTJ2JoaEh2nPoL32f7+vrg8XggSZJsInI4HGylzpNKpVhcTzAYRCwWgyRJrN5UKZxOJ3PdECQMaVKkSv3Nzc1sMrXb7SOyTyuFrHqExWKB0+lEJBJhbq5kMskSFshSQp8Hva7RaERdXd1uteHrBj8mktWLKv4Xi0XEYjEWzE/xhcViEdlsllnHdDodMxKQC48KzVqtVmg0GrYQoIKtJAJ5izuVliGjCn/9VCrF3Jm8xYysfiScKEOyUCgwtyNZCclSSAKKrIbUFgDsOGmG+vp6FrtGm6dLksSeo6z1CIBZrvnrjsaY3JrnnXce3G437rvvPtXHr7zySsRisVEL/dGXlp9IlK66EQ0ts1pXxmoB8q0mCGWBV/65Y5lA1Cascu5K+rtUjTI1ixkpePpy8NdXCgJyDfPXJ3PtRx99JNyaJaDK1OQaURPco/WLUo/TfaIvIy+UaYCjLKjdiXkcrU3l3JKVolwg8NcYTaxRnIXZbIbZbN7tyfnrAAUo5/N5pFIpmQWIIBef3W6Hx+NBS0sL1q5dy8TQzJkzWbxabW0thoaGoNFo0NLSgvfff181mWDhwoUyqxWPxWJhE59Op5MlGFBfpvHV7XbDbrejs7NTdo1DDz0UAwMDI5INfD4fpk+fjt7eXmzduhWHH344urq6EAqFYDabMTg4CI1GwzY055k3bx6cTieWL1+Ogw46iNWqWrNmjczaR8Vth4aGYLfbUVVVBbvdLis7IpDDh9WQlQuQJwqQRYtEEJUpodAgih+jcY/mJZPJxLZwonMtFgtz5w8MDKBQKLBsTIrpooQA+p+sauQypIB+nU4Hj8cDo9GITCaDeDzOCtzW1taybOG2tjbmzmxoaEB1dTWA4UB/SmYAILO4kdUwmUwinU7D6/WyIrTxeBx2u53NvZS8kslkWPtovCfRSYJwNMZkOVu5ciUeffTRko9ffPHFuOSSSyq+npobsdSkWMrNSJMgmRLpxlHKbrFYZBNDpZNgObeWmhWsVPtLWeKUj/GTnXJlzL9euVUtrXbo89jbE/5XkVJxYIB6nNhoKLNsaZAi87la4HO5unZq7S3XN9XeRyXnjGYFVhNnam3k/6f3zVfpFqiTzWZlEyDvmpwyZQqi0Shz3cXjcRZzw/en9evXs79nz57N9tZsa2uDXq/HtGnTMGvWLHzwwQfo7u4GAHR3dyMQCMiEF0ETaV1dHZustdrhyunt7e0sSDuTySAcDrPJiHehbtmyRbWs0uDgIMLhMHNbfvTRR+wxCtpOpVIjhFlVVRUreUDXoXZ6vV60traiu7sbyWSSuU2rq6tZJp5awoRADgW3A3JRRntI8kWJaVN0/h5TyJBOp4PL5UI2m5UZD6jKfyaTQXd3N4sXoyD+YDAIj8cDp9PJXs/n80Gj0bDnkkCj1ybBR3XWisUiQqEQa+u0adOYGKIkhmQyiVAohJqaGiaokskkq0VGQor6EmWokuWPr/rAx6rztdMikQi7DiWp0Ll7XZz19fWhubm55OMTJ05kg0glKGOveEazXKi5TpR1xmgV4Ha7WaYOrfp4axsvrNQmodEmQuV5pd5XuTg23t1J/ytFWqnN0ct9ToLy8J/f3nAvlkoIoervwEhXDd+Ocn1E2TdHa+9YXJFjeY6a5Yw/xlt8x2LG/7pDK30ST5R+z4sKmuDKEYvFYLfbmbWAXDvpdFom/GhPxFJQeQqLxYJAICDbeJwmGkoA4EUZQZOTmnWYxmXlgsVqtZbM3iTLB4UH1NTUIJ/Po7u7G9FoFBrN8JZAyWQSOp2OFagdGBiAzWYTbs0KoTmUQi8ofkoptMuNQRR3Rol2hUIBJpMJGo2GZVEqN1En0UX7ZdL2TmR4MRqNsNvtzCLHb3ROQfuUbUmFaTUaDbNukbijOmWUbENtoE3ayWslSRKMRiOzBtJ7LhaLLJOVkgvpPfMlZZSWMnqs0hjcMYkz8ueXgsx/laJmKSt1w8tNGsogfFLS9EG3trayzJN0Os1cWZQuOxYLSSWia7RkgtHO4SdqXpyVc4FRJqeI8akcXtQrGatQ46+l9vmT64f6ZjAYZFlIpaxYlbzm7rRzLOco+6ny/dHjygQWsppRDImgNK2trchms9Dr9Zg9ezZeeOEFWCwWfPOb38STTz7JzquvrwcAFvvCixiLxcLKBbS3t7MirJFIBA6HA/F4HB9++KHMvRkIBGSuwIaGBmSzWYRCIfh8PvT392NwcBAejweTJ0+GwWAYsfheuHAh3n333ZLjkiRJcDqdLKi6qqoKfX19MJvNaGpqgt/vZ/tgkrtoYGAAfr8fJ5xwArZu3YodO3ZgcHAQuVyO7bt56KGHYubMmRgcHER3dzdLTLBYLFi0aBGb3Ens1dTUYPbs2Xtym74W8PtC0nZOtAk4QYsDGgeUbk9KsCL3p06nY1ssSZLEkgVsNhtMJhNzJ9Jr1dfXs/potMsAuVB9Ph90Oh3S6bSs1Iff78fg4CATfjS2UlFcqjVmMpnQ2NgIp9PJwi6MRiOcTid27tzJxit6H1arFYFAgIlNunahUGBiUaPRMGGWTqfZZ0gVKfjPij7bShhztubf/vY3lpWhpFy9mkqoxApUygVDJTG0Wq2sngil0/JxP7zriafUJLk7Fgj+espJlAZXZcwYPaZMGuCfV+r1KMiR1LlICKgMEhVqq0KgdP08NZT3jgYiClzlTfBKN7iSSsQ9nafmJh9N8FXap5XlYGjBo7SUKS3ZfNYVbWUiUKe/vx+1tbUwGAx44YUXsGjRIuj1erz00ktYsmQJNmzYgPb2dnR1daGhoQEulwvbtm3DhAkTkE6n0dfXJyvH0tnZiUQiAZfLBZ/PJ6tHtnDhQoRCIUQiEQwMDDArHTDsDt2yZQv6+/tlmZXz589nriC+b/h8PmzYsIEJs8WLF+PVV19lj1NZDJq8KbttcHAQAwMD0Gg0cDgc7Hyv1yvbNmr16tUwm83weDwwm82YM2cO1qxZg4GBAXR1dWHy5Mlwu92YPXs23nzzTTQ3N2PixInYuXMnmpqaUCwWsXbtWjgcDnR0dGDjxo34/e9/vzdv3VcSsjZROYxEIgGn08nEST6fZyWpADBxRfte0vxLcWIGgwE+n09mOWpqamJjhNlsRjgcZiJr2rRpyOfziMVicLlcTOTV19ezZAIaUyhuTZKG66p5vV7MmjULg4ODzH3o8XiYMYYXX/Tdofi5oaEh5pKMxWIs05JEILnynU4nc6fTfrcAmMWNkhkymQxzh5IVkYxHfL8vxZjEWVNTEx544IFRz/kyUVrN+JISpOBjsRgzjdJErKxrVqlQK4dSXJZy1yon+dEmyrFYU/Zm5t/XAf7eqwn/cu475T2kLzAvrEmE07Yg1Cf5x0ajlFBUO0ft/0rEWan/eWsgbxHjk1aoPystveRGoNWrQJ1oNIq6ujr4/X4Aw/FeVH389ddfl+1v2dnZCZ/PB7vdDpPJxBbESo8FuYN4DAYDduzYIfMc8CSTSQwODgKQ10tbu3YtamtrZdejoqB0PjAcD0fWfa1WO2Lj8+7ubkQiEfh8PgwMDLAJnQiHw/B6vZgzZw50Oh36+vpgs9mYOKupqWHejhkzZsBms8FsNmPq1KlobW2VFSQNh8Po7e1Fe3s7s/wdccQRY7sxX1N4IwYtsEiUEQaDgdXwInd3JpNhsVj/n73/jpPkrM7F8adzznHyzM7szGatVtLuooBQsGRZCAEKIBMkRDIXBNyvScL2tbk22djYxoDBXJlkMBLJBq+EVloslOPmnZ1Nk6enp3OeTvX7Y37n7Fs11T090opdUD+fz3ymu7q6urrr1Pue9znnPEej0cBisbBzBpzWPiTbFcdKs9kMjWap5ZPb7UahUMDi4iJcLhcKhQIkSeK+lWJRAP1RiJ3GJ3IYtVotdw+gZuYkn6HX65HP52USF+QfEMtGYzTtQ+MdhSvFcKder+cuCPQ+0mkj7TZic1vBqpyzM9049kw5Eo2YMLrwIs1JA4z4npXOo9lErbZdDc0cNfFcG+3fipO2Up5eG3IoHQoRrYTXRSeMGCVlziOBEmNpwBCds0b2q/Z5q4W4EBC/k9LBVIZ2G30vClWKZej0G1KpPX0G5Yy0Ohi9kpHP5/l3SyaTrCGlFJQFlmwpGAwin88vS5oHTqc4EJMBAJ2dnTjvvPOwa9cuAEuTq1KzLB6Pc35bMBjkz56dneWqOQqLUv6QyM4nk0k4HA6eHGm+CAQCSCaTHHYdGRnhzxadymw2i2uuuQZbt25FLpfDM888A4PBALfbDZ/PB5/Px2zGpk2bkMvlYLVaEQqFcMkllyAajWJ2dhblchkHDx5kx7VWqyEcDredsxagJDtoEUb5W+RQmc1m2O12OJ1OWQhTdJ7E9kjkmNjtds41FHtr2mw2aDQaVuKnHDWbzcaSHCQWLp6bOCaSwyVJEjt7Wq0WuVyOQ5ii5hiFaynqRtWgtVqNc9Tou4m/BTliwPLcdzGFg76bGD2hMGorWHVYs16v49/+7d/wk5/8hDsErFmzBjfddBPe9ra3vWSWZ6UwnlqOWiOIEwuBctGUx1M6ac2cKbUJutF7mjldSsdMZCmU2xv9HiLoe9LN0Wri4SsV5FAoQ8DkiIgsF0FpI2IRCg029Cd+Bq2+xJAmOWdqn6MGNeeKHittsJEtK5lCOg+l3Ido67RCpPuJVssUsqTvJkqSkMaQ0+lkPcQ2GmNqaoqryk+ePMk29PnPfx67d+/Ggw8+CLfbjR07diAUCmFmZgYPPfQQv7+vrw8WiwWStNRDk3KzLr/8cvzBH/wBFhcXuSpz06ZN8Pv9+PWvfw1giWVzOp2YmJhgFqJWq8HpdCKTyUCv18Pv9yMajXLYMZPJIJPJ4MILL+Tqu1qthvPPPx8dHR3o7+/H+Pg4HnzwQSwsLKC3txd+vx+hUAjr1q3DgQMH2G6o6pOaqa9duxalUgmlUgkvvPACFhYWMDExgU984hOIRCI4evQoPvaxj+FLX/oSrFYrDhw4gOuvv17WdPqKK67A5ZdfjkgkgvXr10OSJFkItw11iCLtlI+t1+sxODiIQqHABSbBYJDzaOfm5qDRaOD1etHX18etuihiQOFKr9fLDo/JZILX64XZbMaxY8dYTsZsNnMY0ePxcNK9RqPhxcbi4iKH8ilM6ff7efwixs1ms3E4NpVKoVgswmq1clN0r9fL+mwUghTbUYkRAVpcazQalgGrVCrIZrNwu938nMZD0bbJaaVjviy9NSVJwg033IBdu3bhvPPOw+bNmyFJEo4cOYI77rgDP/nJT/Czn/1s1QahxniJ/xu9RxkeVHttNQyZ2jGU56T2mtq5i8+V30fpjCmTqZs5ZWoSG7RdzF1r55y1BiVrRXZDTr3IBDXLE6NrJ4bPla/TMZR/ytfVQK+Lx1Wzp2YMq/LcaaVKybY0eACQhWDL5bKMRaPzEFnoarXKuSbkyJE9thtON0dXVxdmZmZk20RHPhQKwefzIZ1O48SJE5ibm8OpU6dk+w8PD2NhYQGRSARms5n7IE9MTMDpdGJ2dhbPP/881q1bJ6uINJlM8Pl8CIVCmJqaYvsqlUqcBF6tVnHs2DF+T29vL09kp06d4qbQR48ehd1uR09PD+x2O3w+H1772tcim81iYmICGzZsQE9PDwYGBnD55ZdjfHwc8/PzqFQq2LlzJ7Zv346bbrqJQ009PT3YsGEDT7S7d+9mtvbd7343HnroIXR3d+Oyyy5jsd1EIoGHH36YmZm+vj5oNBpuP9RG6xDDeVR1TdpedP3T6TSKxSKHlC0WC4eeiWGjBP5CocBCwVarleUraFwSc8Qp9WhxcRGxWAylUglut5vH4EwmA6/Xy4UDtIgAwO2kKIyq1+s5541YNVpgEsNG0iAUqhWJDvpuhGKxyOOkzWZDNpvlRSsVHi4uLiKdTrNDJ0oLkbO6ElZlrf/2b/+G3/zmN3jooYdwxRVXyF57+OGH8frXvx7f+c53VqV1diag5kg1muRWYutaQSvOY6PX1ViyZn+NzrtRCJeMoVG4ro3TaMTKKtlLem0luxJfU2PclAuF1eSbiY+bOWXNHDTxfbQgoKo2p9PJ2oDklBKrmMvlln03UUCXBlWi/0nrh1aN7WrN5ggEAsucMxEGg4H7FlK1pFK6glg3s9mMZDKJgYEB6PV6HDlyZFk7GRLTdLvdMjHNdDoNjWYpNKPsaUkJ0MBSEjYJflLIs1QqYXZ2FuFwGE6nE5VKBcFgkHN3KHeMqkw9Hg8MBgP6+/uRTCaxc+dO7Ny5E93d3YhGo5Akiavz3G43TCYTdu/ejWQyCZ1Oh+7uboyNjWFhYYHDa1S5mUgkEI1G4Xa7cfHFF2NqagpOp7MtpbEC1MY3WqCJ+dk0JpTLZVZooFBdNBqFRqPh/ckpJqUHSqKnHpnkGAFyAVdx7kqn06hUKuyEUZiVUkSIhSLnrFaryWye2DqKJpFMiJhvRmr/NGaJUIZPyXmkMZ46bNB5EBNH3Qi0Wi2HZylX7ow7Zz/4wQ/wyU9+cpljBgBXXnklPvGJT+D73//+b805U7Id9Fi5rdWcMvH9avuoTXzNmArle5XvaXViVX4Pte/TKI+pjdZAg4Gy9FnJeIlQDlo0yIjdHWhwExm4Vm2zmXMvnqda9aS4v/gZtHITVbZJpZs0e+g9xEZQqxRixigUkM/neUFA35tYip6eHhgMBthstnZBwAqw2+3YsWMHJ7ATKA+HwkkdHR04efIkgKUwprjv6OgorFYrLrnkEjz44IPIZrOw2Wzc4JxaL01NTaFYLEKn0+G8886Dw+HA/Pw8y1kA8r6KBNKGotDmxo0bMTg4iIsvvhgTExMolUq47LLLsHXrVmQyGZw4cQKXX345fvGLX+DgwYP4m7/5Gzz88MM4fPgw0uk0JEnCli1bcOmll6JQKGBkZAShUAilUolFR2u1GtauXYt6vY5MJoPXvOY1+MlPfoK9e/fiqaee4mbmFN6lBtqdnZ3QarVYu3Yt/uRP/gR33HEHK8K30RjE7pCOF4EcMmK/tFotEokEJEmC1WplJwRYWiQEAgH4fD6uGDYYDKzrSE4Z5UrSApH6u87OzrJ9Uv6XKFwrynmJuWRiI3Wj0Qiv18vOmtVqZYavv7+fW07RYoNCnCRzocawKtm9TCaDYrHIGn+kKSgWCJDDR9pqiUSCx8c1a9aseD1W5Zzt378fX/jCFxq+ft111+Ef//EfV3PIZVBzlFp1rtQ8fzWGabWOixqDpXZurR6bvGnxv/Jz1Ng5Jfuidl4i+9POOWuORhpjxAYRlEyX8hpTCErZcL6RYyc6auLx1K4/PVayZeLjRragfCwyqjTQEA1PAw2FL2g7DWA0YNGqlRha8TekQdTv96O3txder5d/nzYa4/Dhw6qJ/fl8Ho8++ij0ej0uueQSlEolds5ExwxYctai0SgefPBBAEur+3A4DADL2u3ZbDbs2LEDe/fuXVYUoNEs5Q6JVZjAkgB5KBTCjh078OSTT3Ie2PDwMKrVKg4cOICf/vSneMMb3oD+/n7YbDbs2bMH+Xwefr8fP/zhD5FIJJDP55HL5TA7OwuHw4ENGzbg5MmTiMfj6O7uxo4dO/CLX/wCbrcbb3zjG/Hcc88hHo8jl8vB6XTiggsuwLp163D++efjP/7jPzA3N4disYjNmzdjbGwMk5OT6OjoQCgUwqZNm3D++efj05/+NAqFQjusuQKI/VaiUqmwMyZWIQLyfrDAkt1NT09jcnIS5XIZfr8fJpMJ5XIZR48elY2R1MScPpdSI8QQar1eh81mg8PhgMVigcVigcvl4lA6LRT1ej0KhQJyuRyi0SiGhoZYZJYEaev1Oo4fPy4TxqW5l1ow1et1Lngiltbj8SCdTqNUKvECnJhkm83GzB45ZsViEYuLi1wcQQtem83GArmtYFXWmkgkuBeVGkKh0KpaZIgTSyNnpBlejGPUbN9Gk2OjfVZCs9w0cR9x8qZJT3kMNcdA7XGjRt5tLAetFClEB8gdNEKj31ztNaVNig7UahYZyv/Ntinfq7YgUZ4j2QmFB2ilR2XxpLZNTqeaDAiAZQweAO4RScU3beesObxer6pz5na7ceDAAc6RaWQ/g4ODOHHihGzbzMwMJ3Yrkc/nVR0zYMk+lI5ZV1cX60b5/X6cf/75PAmOj4/z5AQAk5OTMJlM3Bbq5MmTiMViLCVQLBYRiUR4ARCLxeD3+5k1nJ2d5aq+RCKB2dlZXiQcPXqUGdynnnoK5XIZoVAIwWAQkUgEbrebWRDKbzp69Ci6urqQSqVUv28bpyESBSKIvQWa526bzWZ2PGgcIv0ypWwVOUjZbJYdJ0qloOIkOp9wOAyXy8WVwDqdjvtWkq5pLpdjVYZyucxOI7HHpVKJ9cUofYMatQNgR0vMtSSnqlAocLUx9dgkId16vc65ZTqdDrlcjreTiK/YDYbG1lawKueMYrmNQBNdq1Cu+sWJTA3NJrdmE1KjzxbftxJrtRqnrFUoc5CUrynPsRFDIk7+ZNBtB21liKXRlJ8AoKFDsZKDLD5fKTTd6P0ENYasUZiz0XnS68p7DDjtxFOoslqtwm63c14GVZiK4Vpi2+g4pKIt/o4kVhqJRLjYoI3mCIfDiEajyGQy2Lp1K/bu3QtgSbH/4MGDvB+FbpRYt27dMucMAC+Uw+Ewurq64PP5cOTIEUxNTbXsqNjtdlx66aXYvXs3dDodnE4n+vr68Pzzz+PQoUM4duwYMxfAUs4RhbJzuRyOHz+OQqHAYqCUm7Z161bodDrMzMzg0ksvxeHDh/HCCy9g165d+NSnPoWOjg4cP34cMzMz3O/wiSeeYAHQPXv2oKenB+vXr8eGDRvw0EMPYXh4GOvWrUM2m2Xn8YEHHsCrXvUq1Gq1ZU5nG3Lo9Xq+1ynHEQAn9BMazYV2u533ozFIfB91C6CKy0aLB2VYnaoeA4EAM1vEoBWLRQ77A2DnjpxErVbLDhdpTZKeGVV1Ug6a0WhELBZDPB7H4uIienp6oNFoOIeREv0jkQjruiUSCRbStdlsmJmZYeZPXMxOTU3B6/U2dIBVr0dLe/3/IUkS7rjjjoYJvmq5Cisdj7DSJLOa1+h1NbahkRPX6L/aubX6mvJ44gQrMmK0kmjEkIjHasToiJMuTajtas3moFWYKBqodJSbhbGb5Y0p36cMMavZoXjNm1XtkmNEUBOzFZ8rxRPVjlur1TifRBluF38TpeMqtj8jhy+VSiGVSmF2dpZFJdtojEcffZQfUxeAWq2G8fFxvPnNb8a9996LWq2GTCaD4eFhDs9s374dZrMZv/zlL5sePxKJcCFBX18fhoaGUK/XMT09rdpuj1ivcDiM4eFhlMtl7Ny5kye6X/3qVygWiwgEAnj961+Pxx57DBaLBVdddRVmZmaQz+dx5MgRbNmyBZVKBadOnUK1WmWldgB43eteh/n5eTz66KPcMoryHmdmZjAzM4NnnnkGNpsNsViM88soIXzdunW8z7FjxzA2NobDhw8v+y4/+MEPcPXVV8Pn87V7vK4A0RZEQVnS/crlcgCWxgOj0cjhTapuVGN/Gx1f1EgUu1sQKE/LZDJhzZo16O3tlemElctlzM/P88KanHaNRoNgMMgh0lgsBo/HwyFOIjBo3Pf5fKjX68zuptNp5HI5DoXS52SzWXb60+k0CoUCM2BUxEByNcViEcVikXMrabzu7++H3++H3+/Hu971rhWvx6qcs9tvv33FfVZTDKDmLDWb8MTtqwljqjlqyvNQPm60f6uvq32mGAJq9H4yHrVzb9UxoFBUq7/PKxV0s9MA0Sz81owta8bC0nMl69mIGROdRWKjlMcmeQo1R038LqK8iqiqLUp9iOFK5Tmr5UOKDqwa80vflZpsU8JvG42xc+dOnDp1Cul0Gp2dnThw4AD/7j/84Q8BgMPNY2Nj/L79+/ezlpMy94cwNDQk659J0hqUB6Tc12QyMcOwfft2dHR04MCBA5xMn0qlWEjU4/Ggo6ODNcx27NiB6elpaLVauN1uzM/PY3Z2FkajEfF4HHNzc7Barbjwwguh0Wiwbt06bNy4kXWfqtUq5ubm+PufPHkS69evZwmCSqXC516v1zE6OgpgqdqV3q+GJ598Ehs2bMD555//Iq/QKwPk9NBjsSKYHDOCaDulUmlZRWOzYwPgkJ/aPN7d3c1Vvm63Gz09PQgEAjw3SpLEjhjlpplMJk5PsVqtHOUj3T5yJEulEjQaDYdFqdLU4XCgUCigUCggk8kgFothYWEBpVIJ8Xick/6z2SxSqRT39iyXy4hGo9xvk0KfVCggygpNTEywnlorWJVzds8996xm9xWhxgqooRkz0ei4rXx2s8fNGLRGk6za8dUm4NUcu9UwmPi6yGS00Rh6vZ7VqJXSBIC6Q9bMtlphVNX+K5ktsTWIyIiKbJpYFk6P6XqLraJowKL9KK+MaHdRMoMgLg6oYorOgwY6cugaOaqUd0a6R200xvDwMEKhEDKZDKLRqOp9u2XLFllFJQAWahXDnZRjAyxVoXV2dsqcMwBc+k8gEdiLLroI+XweJ0+ehN/vx8DAAPx+P06dOoVgMMghyY6ODjidTq6q9Pv9AMCFADSh/td//RdCoRBPbFQdbLPZUC6XEQ6HsXHjRjzzzDMIBoMol8uYmppilo/CXzqdDna7HdFoFL29vTCbzSyyCwALCwsIBoPcE5FA42cul0MikWhLuqwAyuFqNm+QrShBOVcEce6isUe5GFCOHyTWGgqFeJyiyk+Xy8WfIUkSOzlUXSlW25NoLYUaY7EYL3bJqaIxk6rRLRYLO2eFQoFFa4vFIrLZLGuy5fN5RKNRZuZyuRxisRiPcaK8EI2blO6RSqW4urUVnPXylVYmvZXQ6L0rOWDK52pshto+4jble5rlsCnf0yqL1yrEm6FZ4mYbS6BBw2AwyIQFxfBxozw/JZQLDdqm9l9cZYrCtSSKSIOOKIYoSZLMWSPNHMpvEPej0nZyvMReebTKJOeMbJZWe8QeUrhSzF9UC/uKv4v4W1FJfjv/cWWMjY1h06ZNCAQC2LNnD2+nXJZCoYDnn39elo8mQsmaveY1r0EymcTc3BweeeQRAEvhzDVr1mD//v1sS1arla+P3W7HsWPHYDabEQgE4Pf7odVqYbfb8Vd/9VfI5XLYv38/Dh48iD/8wz/kRu0PPPAA+vr6EA6Hodfr0dfXh1AohO7ubuRyOVx//fXo6+vD3//93+Oyyy7D7OwsPvWpT2FwcJDt74knnsCFF16ICy+8EP39/Th69ChcLhcuuugi3HPPPXC73QgEAshmszhx4gRcLtcyHbbh4WFMTk7KnDNJkuB0Ojnxu1GOUxtLWFxchMVigVarRSqVkr1G4wQ5RWrhcGWFuxi2FPPXRGkNWpySpI/f74fD4YDdbofdbofH4+Em636/H6VSicOOlNtoMBgwMTHB2orVapV7+no8HszNzcHpdMLv9yMej8Pn86FSqeDEiRPQapd6alosFpw4cYI7nWSzWUSjUdY0o560+XweY2NjHCIVHVWNRgOHw8HjqBgxEfdvtWjyrDtnjZwU5T7Aykn/q2HMmoWYmm1Te61VFk7cvxFDpmTLmn2nRuHatlPWOtSch5Uc7GbhS7X/4uv0JxYiiH0qaSVIKzBlD0sCiTvSqozCs8rOENQDkc5b2ZidmDC1sIT429DjRver6Bwqj9FGc3g8Hhw8eJAbf2u1S/0AS6USJz8Xi0Xs3bsX/f39WL9+PSYnJ3Ho0CE+Rnd3N/L5PIrFIgte0qRgNptRLBbx5JNPolgsMhNx/PhxXHjhhejp6cGJEyeg0+mwdu1abNu2DaVSCT09PdDpdPjOd76Dzs5OeDwefPCDH0QqlcLU1BTK5TIcDgfC4TAsFgv27NmDt7/97QgEAjx5jo6O4sSJE9iwYQM7gbfddhvq9ToWFhYQjUZhsViwa9cu5HI5dHZ24pFHHoFer8f09DROnDiBmZkZnvjL5TLi8ThMJhMqlQoLKFNTdeB0CBg47bhOTk62cx9XADU4F1kwtZQHEp81m83MRBFEbUciCWixKzp4ADhCQDYZCATgcDjgdrvh9Xrh8/n4+ur1eoyPjzMD5vV6uYqXHD76nIWFBfT09KBcLiMSifDCk1T86ZxIi61arbLw8tzcHGKxGGKxGGsC1mo1JBIJlsig34C+LwAey8UFLjmK9N0p1NkoBWHZ9XgJ1/IlQ7naFreroREztRJWE2JS7q/miLUyCTd63sg5a8b+KZ21lZyHlY7ZxhIonKcs814JK7GbrbKmyqR/cq5EKBP5iWkTHThanSr12dQWNcSGKXvMimEBMWQpiugqjyV+jrKgggZRsSVUG+qgVXo2m0Vvby/Gx8d5Eshms3A4HHC5XIhEIhgYGEBPTw9eeOEF2THEXrrz8/Nc8l+pVNDb28uJyhTiJkeGEqZ7enqQTqexsLCAZ599FuVyGel0GlarFfF4HKlUCj09PQiHw6y47/f7EQwGEQgEWBV9YmICCwsLPOlRVRsVNJD+EyVaE0tcLpeRSqW40s5gMLAeGtl0MBhEPB7nfFqqLq5UKjh58iQsFgszemLYk37H6enpl/tS/k6DmHZi2JVCtDROiUr6Ss0utTGFxgSDwbAst1d8bDQa4Xa7YTab2V4ol9BgMCCTybCoK4W86Tyo/RwA7mBQLBZlC1ZajBYKBVl7KJJdWVhYwNzcHObn57kVGt2HqVRqWWSKQMemCIQYDRGr3uncWmVwz7pzRv9FCrAZWh3oV5o0VzqeciJV+2v2PmB5NWUjJ095Hkq2QXk88XkjBk9svt2GOkgTh5raNnI8gMZOifJxo21qTKlo96KmGDk1tPIiSpxCkkTz0yqtXq/zZKh0ssTCEDoP2k/p4InnLDpo4n1K7U7E30QUPBY/n5J62+KfzXH06FHOrfJ4PBy69Pv9iMVirKB/3nnnYWRkBJlMhvOySJj16aef5rzE5557TiZrtGPHDmi1WkxNTeHmm2/GQw89hEgkAo/Hg/HxcUxNTeFjH/sYnnvuOezatUs2YY6MjOA1r3kN9uzZg2PHjqFareK5557Dddddh0suuQQejweRSATRaBSdnZ346U9/ym1xAoEAJ+tT6yVKwO7o6EAmk8Ho6CiGh4fR398Pt9uNY8eOMbMXCoVkixVSi6cJnnKLFhYWACxNfFu3bkU8Hl/mnEmShPHx8ZfxKv7ug9ggup/JDkQm0mQyQafTwWazyZh1jUbDDC09V+aa0gKTCjso/YIEZAuFAjNixF5Rsr7NZoPL5UImk+E2UBR29/l88Hg8zGzpdDp2xPV6PZxOJ8xmMwwGA1KplGxRTs3LqbqcnLOZmRmUSiWONqhFs2iMFPUd6R6kohXgtHNKuXGtOmca6SzEwDKZDCv88okoJreXymC0wl6pPRa30XMxYVttn0bhRUKzcKyawydOhmpJ6WqfI1aCarVauFwu6HQ67Nu3D+l0uqFG0isZ4XCY+wyqOR2EVsPpzdhQpd2QTYltt5TPifanEILdbudBRpl/VigU2A5p4KHBQUzibxaapEGGqo5ELTT6HUTtHuV3pfdT+MDtdrO693333dfSNXklYnBwUCZrMTQ0hNnZWdkg3qwiU4TBYMDmzZtx+PBhzuvp7OxEIpFAqVRCf38/Oyk2mw2hUAhr1qzBFVdcgc997nOw2WxYs2YNO07VahXDw8OwWq3weDzo7e3Fzp07uS1PJBLhx5VKBQ888ADC4TAuu+wyzM/PY3p6GgsLCzAYDNi3bx8SiQT0ej0mJyc5x4iKICgf55ZbboHT6cSxY8fwxBNPYO3atVi7di1+/vOfs5K7+FsEAgEsLi7ytgsvvBAHDx6EXq/H1VdfjfHxcRw5cgSLi4vtlI8mILFYAjlBIlmgjOQ0gkajgdVqRbFY5PeLYrRiYYHBYEBvby+6urqwbt06TE5Ock4khfjJoaMWXW63G319fTCZTMxk0SKwXl9q90X2BUAmGpvJZLjycmpqCslkEslkEuPj48hmsywyS+3TqFsKsXTZbJYjApVKRVZwRQtYSVpqbbW4uAiNZqk6VHQIWymSOmeWtCKLsBIaOUDi9kYsnJozJj5eyckDljfGbuaY0Xalw/ViQj2N2EU1p1GUS2hDHaIKPjkeq1kcNEOjULT4upKVUjriYmiRBkllfgdwupJTCXGbWlK/yHKJEJuYK6U2lCyb8p4DTrezIseyzeA2B+khESYmJpYN3o3YR5PJBIvFwgncer0eJ06ckIl/koI5ABl7FAgE4PV6IUkS9u/fD7vdjkKhgNHRUZbFSKVSyOfziEQiXGU5NDTEmniUtK3T6TAxMYHu7m4Eg0E+J8pPcrlc8Pl8rD0FLOmviaFG0iGj3oUzMzOoVCo4fPgwa5ipVboRc0YgwVFgSW6kp6cHPT09y6pW25BDzAsDoCrHJL6ufKzRyHU4KSJBEB0/MZGeGFDKJyT2q15f6g4g5neRY0NjFM11VOlJxQxGo5HtiZw7+vxsNotkMolIJILJyUnE43EsLCwgFostK4ASz5ty1+i3IadMbUwUoyO0wKXzaXVuOWecM6C5nAah2evN3t/MWVM+Xk3ostEE1cyBbOXiqN0AasdtdK7EvrTRGKIeWKvXBWi8EFBzyNQGM/HGVT6n/dREa0UGi1Zp9D2IeheTcVf63qLDJf4nx4z+0+Ck5kDSuYrfgRS36bu8mIXIKwnxeFz2G9FvJ8piUJuZ7u5u+P1+Dn1SQn6pVOIwNeWTEfL5PCwWy7I2US6XC5K01K5pamoKDocD0WiURUfdbjfn+WQyGRaAPX78OKv2b9++HW63G5IkoVAooK+vDw6Hg/WfAHBumN1uZ2kDp9O5TLS0Xq9zblG1Wm2q6K/T6VR1Cd1ut6zS8OTJk+jo6EA4HG4vElaAcpxSpkjQawC44pucZdFRoXteucCg8UJ57SgEXygUMD8/z+OHqEFWLpdZm4/Gr0KhwAVUxGpRdxMaD8Um6wC4U0Q0GsXk5CRmZmYQjUYbVqeKv4Ny/KOQLI255LCJDeTp/cVicZk80ko4Z8Kaamj2JVZytJTPm4US1ZyyZmFMtdcJamFItZCleE6NJrBGIU219yrP1ePxQK/X49lnn22HNRvA4XDIekCuhFac+1btkmyIGE6xWwENOBqNhpNf6RiifAa9l8IPYlGAuGIDwHkQtA/tT6D30Ou06lU6Z+IgrbRBMSxcq9XQ3d0Nt9sNt9uNe++9d8Xf95UK0T5EMVUx70dUaLdarVi/fj327dvH+xIDlslk+LcnNouOazabZVITIijcaTKZcNFFF2Hv3r3YuXMnAoEAHn74YYyMjLD0BnV+oIIAm80Gn8+HTZs24dSpUygUCiiXy0gmk5xz9vOf/xyHDh2Cx+PBbbfdhpmZGezbtw8HDx6EzWaD1WqFTqdDoVCAy+WC0+mEx+PBk08+CYfDAZ/Ph9nZWaxbtw5GoxFPPfUUbDYbvF4vwuEwnn76aU4FoFCScsy85ppr8MADD5zZi/d7BNEOxaT3RlEAjUbDxRzKuU7MswIgyx1stBAmu65Wq3xdrVYrOjs7YbPZEI/HYbPZeNwjkVcaE8lBJKeRxi+yB5LPmJqaQi6X44UJVUaT40jnR8cjfTQxF4/YvsXFRVnxEx1HXIhTxIN+L7PZvMwZVMM5xZwp0YwxWinPS0QjJ01tv1YmV/p8NYZCLUxFE5faOdN/5cpEebxm50tGRaBk7DZz1hyrXZc0Y2ZF53ulfRo5+uRo0QChXGnR6oxANzw5W3Rsyq2hAgPgdDUfOaLixE/HJupf7DBBxxF/L/qOag4arZxNJhNcLhdsNlvbDlcBkW0Q7UgM5xWLRZljBgCJRIJtplarcbjQ5XJxY/JmeS7Eti0uLuKpp57C5s2bMTc3h1OnTsmEPfP5POeNAUsLHAo5OhwOPPzwwwgGg9i+fTseeOABzhMiIdB6vY5jx47h0KFDMBgM2LlzJ44ePQqPxwOLxcIFCiIoREl6b8BSocLY2BhyuRySySRXm5ZKJZx33nnYt28fv9/hcAAAHn744VYvwysadB+Lz9UcNUmS63zRNnEMFBcazSq+zWYzvF4vTCYTbDYbFzw5nU5UKhW2Tzo36pdJXQAojL64uAiz2YxMJsP3w/z8PCv3z83NcWGKRqNhQWaSZhHHRtJ6FH8HjUbDIVWaZ8WFrMikUV4dbacCLyWz3QjntHMmQjnprZZVE7erOWGrDb2stKpQo0DVPqsZO6Z2fOU5K1kLctSI4m2jNbQSUl/Nfo2uFXA6BCBS4OKf+LoIKloQ88FoHxosqLKKBkX6L+aRiGXlSkVrkYEjpkyZUyEOwCJbJu5jMBhgs9lgNptXfW+9EkH3rNipolE7IqWTLm6nvByCzWZbNhnQ9RFb9ZBqerVaRaVSgdVqRSQSQTweh8vlwvT0NF/PfD7P+lYkOaDRaJBKpTA/P89MWCKRQKFQgM1mY0YBWHI0x8bG4HK5cN555wFYYk3ImVc7X6XoqThx5nI5dHV1cbWex+Ph/dxuNzZt2rRMoLYNdTRauJ2J4zaD3+9nXTMqeqLxjKRYyMYAsOI+3TfUBaJUKsFmsyGVSnG0YGZmhgu/kskkFynQsWkxSecpMl9KKOd0cfEqMm8AZFWepGHZrEWgEr8zzpkINSetGeOl5pSpsRji+5oZpDhBi4zXShdTfG8jlq6Vz20WUiINLJPJdEZuqt9nNHP2V7KBZralXD0qmTK6RqJDpqTmxRUi3fS0sgNO55mJExe9j5gz5SROqzgCOYcAeFIWiwBEx0y52FAyZeLnU7UmrYBXMyC9EnHjjTdiz549qtWY/f39SCQSDSs1LRYLOjs7ueJRr9czq1QsFjE7Oyvbn4RDy+UyrrjiCoTDYWSzWTz99NPI5XLQ6/Xo7u7G6OgoarUaTCYT67ABwE033YRnnnmGe6fu2rULPT092LhxI3Q6HUZGRuB0OhGPxzE4OMjyCfPz8+w0hsNhAEts3SOPPMJOn9frxfr167lVjsvlQn9/P7LZLIdnCSdPnuTHIyMjSCaTLCZ64sQJfm3Dhg0YGBgAAMzNza320ryi4Ha7kcvlZCw83fNipaUaaFwT3yuGPJVjgHjs3t5eDA8Pw+FwsENjs9lgs9mQzWY5LFgoFHgh4HK5OCdRkiQsLCxwdxWbzcYOmCRJ3PuyUqlwQ3OqBqX3UxsnMdVElMoQF8EixMUUdV2hsV8cl6k4qlqtyop1muGczDlrNDE2c8oaTbRqjlcjx6wVR0/5XGQL1I4vfg81FfZGUDsv5Wc3mvD1ej26urpQr9exe/fuds5ZA1CiaSOGAlg510/cJrKX4v7kPNNjnU7HCayUX0afJTp15CyJuWBqFZTKc1Oek3hc8bNEGxZDDspBWLlaVNo+fR7le1B+0/r16znP7Sc/+UnD3/iVDmrwTNIDYmsij8eDbDbb0EYNBgNMJpMs7Llz506cPHkSuVwOHo8HMzMzAJbsfXh4GPF4HIlEAvl8nhmr7u5uTsqm1k/d3d0Ih8N49tln+dhikUIz2O12Wc/aa6+9VpbvNTg4yE6fx+PhijoA6OnpQSaTYQYtHA7D7XZjdHQULpcLdrsdMzMzK8qL2Gw2BAIBDAwM4MSJE5icnGwvWJuAxiYaM5T9dpX6m0oo9zGbzcxwEuMPnG7hRI6Pz+dDX18ffD4fhzYprBiLxbjKcW5uDplMhh0tkrygxUajcxIXltRtQzxH+iyxqApYYpTFlBGxo4GYJqLT6VQ/X/w9KQRK+Zit2OE5xZw1Yq+aOScrbW+2bzMHSBm+ahS+pNdEVoser4ZJa/Rc+T3UjrVa1qeNJZBD0Sj5lfZZ6bm4TXTCRMdMvFZExSsb91JIURSQFUOOYrhRyWaJx1f+iVAbYJW2rNxHzUabraBp30YDZhtyUAUaMUiic0biwo2glks2Pj7OTABdS8rlIaFNQr1e58nF4/GgVCpx+I+S8umxTqdrOTSYy+VkebB79+6VTYw9PT3cvom+B0HZqqxQKLCeld/vh81mY1X3RqB9tVotkskkDAYDMyVtNAY5Umrz1EpQk+JQvl9MqqdxxWQysVg1jS2Li4ssDkuCrrFYjEXDqSn5SmOM0kYogV/UXtNoNCzL0Sj9iL4DsdP0vpUiXcSa0bmsJtXonHDOGrFJzSZGtYlH3EftdTWHbKXJF1h5wlb7DEDOMqgdbyXnTc1RW4nlE1mNtoPWHEpHqtGA1MjZV2Nllflk9FhZNWm1WmWhTVpNicyY2AFA1GOjzxIXBaJNiedFAwQ9Vgsxqg1C4n/lfkq7FBlBMTwrfuc2mqNUKnF7JRFqk4/VasWll16KX/3qV7zt2muvxeHDhzE1NcXdA/R6PbLZLP7wD/8Q1WoVx48fX6aS39PTA6fTiYmJCXbOiIXzer2w2+0AliQ8tFotZmZmZI2bt23bxkn6alIdGs3pXLRt27YhGAzi/vvvh0ajWdanEFgK42o0Ghm7kcvlkM1modPpkEwmUSgUYLFYloVsRYRCIfT09CCVSiGVSsHv92Pbtm0N929jOZTjitrrYlcAYImtJMFXcniApbnQZrMBALf0AsCyLaTiXywWOWk+Ho+zfEu1WmV9vFqthsXFRZndWK1WFm1WMnhimki9XofFYoFOp2MGWEm8AKedNvEYIptIOXDk2In7iZ9Njhy9x2QycYHKSjirzpkaO9YK66PGeDUKN70UZ6xR6EicAMXBVHxO7xOTBQlKoTvl+TViQcQcIdER0GhOV/YBS8bfKnX6SoboSDVyckQorxO9V5kvRrS9KHchSRIsFgsnS1OOF+Uf0D6UlE/XUEz+Fx3uRveJmtOudOrUvp/ysZrdi99ZbZv4fUmHiBS022iM7du3cxVZT08PLr30UlQqFe4rqXRCCoUCO2aUVP/AAw+go6MDb3jDG/DrX/+ac7B27NiBp59+Gna7HR0dHeycXXjhhXjta1+Lxx57DAcOHMD8/Dwuv/xy7lVJcgS5XA5+v58rMpUQr63omAWDQZhMJlnlJTlxwFICOOUMiWHSCy64AD/+8Y8BLInkLiwsyPT36DOuuOIKBAIBJBIJLCwswO/3c4Wq2+2G0+nE+Pg4pqen0d/fj5MnT8rCs20sBzGW1WoVer0eFosFkiRxaFK5sJMkiR0zCttR3iIJGovMLWnxkfRPd3c3uru7sWnTJuRyOWQyGS4oyWaziMVi7OhR0/BGTJl4bmqOmfi66EyS5poyjGu1WjmsTrlzwOmxkSIcFouFIx8iC02OGI2FpVKJ8z1/Z6s1m4VLlI9bdcjEXC9xcmr02eJ/tf2U9KR4TFEzSwwRKbc1UlpXOqnNHExRgkEJZYPZNpajUV6VEkoHWXSURQFE4LSSu1a7pJ5OA4Pb7eZ8GQoPUQUR5UxQ/oSyclIZalTaZSPWT7xnlPlsjdgv5e+h3Ea2L9qj6JzScSiBuN2pYmUkEglIksTtkKidDE104uTg9/sRDodx6NAhSJLESfXA6QnS5XIxc3n48GGsXbsWsVgMTz31FHQ6HS677DKcf/753GLL7/ezWjpVPObzeRakbRYpEB0eh8OBbDYLq9XKbFyjXKVjx44xwyfimWee4cdUQaeGAwcOcE4bVY76fD4UCgVmywjUI7GN5iCHQww70likJA5o/KNwdL1+umek2rxWLpdhtVo5ZOn1etHR0YHOzk5otVosLi4il8shnU4jlUqhUChwHqKyHZ0aREkP8TzFcxTnVHpd7Bwg2qqYtC+OX0o7EsPxNDYqm55TVEEM5baCc8I5a3bCakxAI+es0XNx0hA/T80ZU/5vdFMrGS8xB0g0ZPoTExOVTIhyshONSASFSZU5AUoHlG6ulRI4X+lQc5SVUDr5omgsJWNTlRBR2PT7+3w+rrgMh8PweDyw2+2c6E/sJjln1MNNrVJS7dzpvFZyLNUcrUbHU9uuHNTEfcXfAgD/DvS8bYMrY25ujkMt0WhU9vtWq1WYzWaEQiHMz88jGAxi3bp16OjowIMPPig7jtlsRrVahdvths/nQzqdxvHjxzE8PMzs1NatW7FlyxYMDAywNhqxasePH+dxJJFINNReNBqN2LBhA5xOJzuGwOmOA6TnVKlUYDabmdUSJ7+pqSlmEOi7AZA1LG9WeEAhLkK5XEYoFILRaMT+/ft5u9/vRyqVgl6v5z6LbahDVPcXxyBgubo/RQfIsVKCHDqqYKxWq7BYLJwv5nK5eDwkzbJMJoNsNotsNitr0dQIlLsLyNkwsjPRbmnsJskhcsjE3qFUbUrCtQTl2ChKZIiRARobKSRK6QG0iCcGstVOFWfVOWsUlmk2Uao5YsByB0z0dklygI6tZCHUzkl0rJSvqzEMdC6iwjB5ymLIh7bTJCx+htK5UzI1yvMSJ10Ko4klwO2JsTnEZHulTTUKb+p0OlgsFmYoiNY2GAwcThGTlxcXF5FOpxEIBLj3WzweRyqVQjweR7FY5PJ1GsREJ57OoZnzROesZjOiKKL43cgO6bVGq8NmCyGya7PZzL+J3+/nyTmVSvE90UZj5PN5dkSoIszn82H9+vV48MEHmV0FgMOHD2N8fBw33ngjNm3ahL6+Prz2ta/F2NgYxsfHMTs7i82bN8Pr9aJer2N8fBxbtmxBrVbD2NgYBgYGUKlUuKcgHf+iiy7CI488AqPRiKuuugq7du3i81PaXrlcRiQSgc/nk22nsGIul+OQZalUQiQSWdZWKRwOw263Y25uDm63m52z/v5+bNy4EePj4zh06JDs+DS+0eJGbJ6t0SzJK3i9XqTTabz61a+Gx+PB1NQUfvrTn/J5tdEcNCbQGELzCinqk1NDzpPdbmeHxGq1cipGrVbjIgxir1wuF8v8UH5ZJBJBJpPBiRMn+PrkcjmOPDSrxqXogpJhVetoQv/JQQPk8zW9Rgw1FSlQOFUJcS4nh1VczJCcEInBi8xiqzgnmDOCGkumfK6cgNQmJUAua6A28aiFhZRlt+JryhAYXXiiaSlEQMl+pVJpWfKtGmgCVTphyu8lvq50RAliWx+K67fRHHQdxdUQoM7UAvK+lLS/yWSC3W6H1+tFf38/AoEAAoEAD0CpVIpLwPP5PKanpxGLxZBKpZDL5WTVmErHu1noVe1+kSRJJjQLnBbsJM0xkQEUHTdRo6fRIgHAshAmvS6WoHu9Xl41t8OarYPya6anpzE9PY2enp5livkA8IMf/AAajQaFQgEejwc///nP0dHRga6uLjz33HO49dZbsWnTJlx//fWo1WocRpKkJQ2pSqWCRx55hNs9Pfroo3C73TAYDHjuuecAgMPwDocDsVhMxlZFIhHu97kSiMXo6OjgCtJDhw7Bbrdjy5YtsuOOj4/LJDgIJOHh8/nQ0dGBgwcPykJKiUQCVqsVPT092LVrFx577DEMDg6is7OT9/F6va1dhFc4yOnQaDScvG8wGJZVBWs0Gq7elaSl3r+k2k+Ojtfrhc1mY0ePnB5Jkjj8PDs7i3Q6LWtwTrYNQDbnKSNCovZjK9BoNNztQqPRyPLgREdL7GMsgtg1pWg07UetnXQ6HS8cxEgCnUMrOCecMzVHq9HqXXRQ1N7XKLQphjTVoPaDKcM54n7iZxNlS/kgtLqrVCqsMSRCNHRib4DTRik6Ysr/IgtIEFc0wNLkaDKZVmW0r3Q0YogIdA3EUKiSkRJDeVRNRLlkCwsLKBQKyGQymJub47wKyjFThlab2Z7aOYuLhVqtxrlwVCFF28TPED9XXISIK0o1G1QuFug703el6isqamjnPq4Oopinx+NBsViUOTDihJBIJDA/P49sNssLRPrtU6kU0uk0YrEYK6cfOHCAJw4qOABOj0OUc0aMSKFQ4AUfJTQTWr2uxOJRDh05SVQwomS01JxRh8PBAqL025BuFEGs4KNG7n19fas+3zZOkxpiPpayYbnoJIkhUHEBKKZviKFCYtVrtRqSyeSytmV0PHF8EefcZovWRhA7o9B4LY6bdP5E0ijbN4nFUPS5oj+gHMNpofxiF6dn1TmjLyQyR2qOh/I9ao6K2kWj94s/ojIsKL4mHkMZzhI/Q1R2NxgMcDqdCAaDGB4exubNm+FwOJjOffzxxxGJRFAul3Hy5ElO2h0fH0c2m5Ul7ms0Gvbi1dgJMbladBLoOeU8UeucVo32lQrR0RC1lZRsK4HsgcKP5IDn83nU63U4nU4cPnwYpVIJqVSKBxSdTofp6WnOoaAcM2WyP30ubROvtfj54jZ6LDJvwBKbFwgE0N3djUgkgkKhwJMvnbs4KZLjRkwu5Y6J95iY7ArIq0Dpe5FMiNVq5URstZyUNk6DEumBpbDe9u3bMT4+jqeffhrRaBTd3d0YGRnBY489BkB+7cnp3rlzJ8bHx3HkyBH87d/+LR599FH86Ec/wtjYGO/b1dUlWywqdb9EDbOhoSHs3bsXAGTSGZQ3NDg4iI6ODpkj1d3dzaFNQn9/P9avX49nnnmGj1+r1bjnp9gDEwA6OjpkOmw7d+5EJBLB+Pg4Nm7ciEOHDiGTyaC/v5+dRWJgjh8/zjZN92WtVmN9tVar5F6pEOdPClOS2CuFKU0mk2p4juYnq9XKTnIgEEA2m8X8/PyqUmzEiI/RaOQFgbIKs16vcxqAmPQvtiYj0LmLi0Xat16vs4wNfYZyIUIV9uVymduRlctlDlvS/EsFBsqxWowutDovn1XnjH4I+iH1ej334lOyCMRGiCyT2Wxmx06UMqD2H0RTWq1WGQVPkx9RtqTHIsbI1UKGorMkOkpTU1OYmpricMAf//EfIxgM4qc//Sluv/12dHR0cOsGwvT0NA4cOICjR49i79693JyY4ujib6Q0bJG1ET13YswsFgs7eG00h+iQiwuDRsnIFosFAFhNXUz+/PWvfw2DwYCOjg4MDw9z1RslvEqSxFWa5HzRNROLCcj2xVAicLoSlFajYlUnJeZSCOuyyy7DZZddhltvvZWdslgshtHRURQKBRSLRezfvx8LCws8odF5KO2G7hFJktiOSQaEFlfU9WB4eBj9/f0477zzMDU1hdnZ2ZbblbxSoWRof/SjHwFYkoQgeQFxPKQQn81mQ61Wk+WH6fV6vPe974Ver0dHRwcuu+wy7Nu3b1mokPoKKhEKhXDhhRfi+PHjvC0cDiOdTrPw5xVXXIFisYhjx47J3is6ZnRPjY+Pw2634/HHH8cXvvAFPPjgg5iYmMCGDRtw55134uqrr8bNN9/M5xaNRnHjjTcCAF544QVMTU3h/PPPx0033YQvfelLsnOamZnBwsKCbPKmMTkQCGDTpk1Yt24dXC4XL6LbaAzRxnQ6HTuzxJg1S5NRNvTWarXcUslsNsvmbiXUQqbE/IvbRQV/0isjmQrxO4iOGdkhhT/9fj/bMknGWK1WGAwGJJNJvhfL5TJr/JGcBzVYF38XipwR86zM9SbCRfQXfqfCmvQDEhuldM7Is9VolkTv6AJQ1YfIZFG1h81mg8FgQLFYRDablem2UFIgda6ni5DP55HL5eD1emXMiTLnBjg9cdJxRb2XkydP4rHHHsPnPvc5GAwGbNq0iT1x+l7xeJyTcsXiADqG8vcR/yuLAchZJIezWCxySKKNxiC2SOl4i6snZS6aaAe0YMjlcjAYDAgGg9DpdJicnEQul8PIyAg7UHq9HrFYDIVCAXa7HVqtlmUAHA4HbDYbO1/0Ocp8RDpfqgAViwjq9TpmZmZgNpsRDAZZgJR6ElYqFS5TJ+kBnU4Hu90uE1ykz1WuRKlHIp1PvV7nfej8yuUy9Ho9yuUyFhYWkE6nkcvlVBNq2zgN0UkSe0aKCfQiaOGgtoCgVXsgEEAkEkEul0NfXx8WFhY4NEqJ9GKVJHA6/zUSieDo0aO8XaPRcL9CYGni0ul0cDqdmJ2d5RQKpfwATcaxWAwTExNwOBxYs2YN0uk08vk8JicncfDgQT4utVvKZDIwm80YHh7G7t27eRIGlhgMn8+HWCwGn88Hi8WC+fl5zjejMH4ul8OpU6fQ0dHBTHA797F1vJjwtQgxxKlMuxFBjJbSOaPxRXS0lIyTyNy3gnK5zPnFBoOB5136bOWiWCRtCoUC678RyMbFuYOcSjEcW6lU+H3kp7SCs+Kc0Y8g6kAVCgVZTFdkMcipcTqd/EMYjUYuuSWWiJgJu93OZdMul4srQujzJElitiAQCPDkZDKZEI/H2Wtu5uHSpK7X69Hf389OmslkwmOPPYbR0VEAwL333osHH3wQFouFB0etVivLNVIqDCu/Pz2n/6IQrTip1mo15PN5TuBU6s60IYfJZJK1uKHfU1mxI4bARSaTGDOqzKRwtsFgwMTEBBYWFjgZFljKsfH5fNwSBwAmJiaQy+XQ1dUlu65kWzSpiGK2tFqkcyFWa3Z2FjabDaFQCPl8HgcPHmTGjs49EonwYER2QmwgsXHk4IshdZPJxLlHVKEq3q+SJHHIlPLrSHOqHU5qjsXFRfT398NoNGJsbAyhUAiSJHFrI8LFF1+Mxx9/vOmxqPOE1WrFyMgIDh48iJ6eHtjtdkQiEYTDYczPz2Pt2rV41atehe9///us0k6VwxQBIJDCfnd3N7LZLObm5tDR0YGenh6Mjo5y5bIog6HX67F27VrMzMwgFovh+9//PkqlEvx+P66++mr88pe/xP33348nnniC3xMIBLB582bs2bMHTqcTV199NQDg+PHjzOT19vYiFArhsccew3XXXcdj9tq1a3n89/l8iMfj2LdvHy/2dTpde5HQAui+btYWScyJXAliZSQ5YaKjJsphiMem6IAIZQSJFoPiQkAttUnMlSsWixxRIwaa1BMIFCEolUoy8oYYOOD0QoZyOWlspsibJEm8CKLPo/eJxQFNIZ0FTE1NSQDaf7+lv6mpqbNxmX9nsWfPHgmAdO+990qZTEaqVCqq+6XTaUmv10sf/ehHZdsXFxclu90uvfOd7+RtH/3oRyWdTiel02nZvp/5zGckANLk5GTTcxobG5Pe+MY3SqFQSDKZTFJXV5f0pje9SUqlUpIkSarX/fbbb+f3T09PS+94xzukYDAoGY1GacOGDdK3vvUt1e/9wx/+ULr77rulUCgkWa1W6YYbblh2fiudTxsvH7Zt2yZt27ZNti0YDEq33HLLsn2Hh4elq666ip//8z//swRAOnTokGy/f//3f5cASL/5zW+afvbc3Jx0xx13SF1dXZLRaJTC4bD0ute9Tjp16pQkSZLU19e3zA4vv/xyfn8ymZQ+9KEPSd3d3ZLRaJQGBwelz33uc1KtVuN9Tp06JQGQvvjFL0p/93d/J/X29kpms1l69atfLR04cGBV59PGy4OXY4xshH/8x3+UNmzYIFksFsntdksXXHCB9P3vf1+SJEn6y7/8S9WxT7z+3/3ud6Vt27ZJZrNZ8ng80pve9KZl49nll18ubdy4UXr22WelV73qVZLZbJb6+/ulr33ta6s6nzOJs8KcdXZ2cjWNRqPB888/jyuuuAJf/epX8Za3vEW27+zsLNavX49PfepT+PCHPyx77T3veQ9+9atfsWTFXXfdhR//+MeYmZmRsU4nT57E+eefjy984Qt473vfu6pjquHhhx/GG97wBlx++eW44YYbAABjY2OIRqP49re/jVOnTuHrX/86vv71r+NP//RPMTIyAgC44oorEAwG8cMf/hB/8id/gquuugrXXnstCoUCvvWtbyGd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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Epoch 10: 100%|██████████████████████████████████████████████████████████| 63/63 [00:41<00:00, 1.52it/s, loss=0.052]\n",
- "Epoch 11: 100%|█████████████████████████████████████████████████████████| 63/63 [00:45<00:00, 1.39it/s, loss=0.0505]\n",
- "Epoch 12: 100%|█████████████████████████████████████████████████████████| 63/63 [00:47<00:00, 1.33it/s, loss=0.0514]\n",
- "Epoch 13: 100%|█████████████████████████████████████████████████████████| 63/63 [00:47<00:00, 1.32it/s, loss=0.0508]\n",
- "Epoch 14: 100%|█████████████████████████████████████████████████████████| 63/63 [00:46<00:00, 1.37it/s, loss=0.0511]\n",
- "Epoch 15: 100%|█████████████████████████████████████████████████████████| 63/63 [00:47<00:00, 1.33it/s, loss=0.0506]\n",
- "Epoch 16: 100%|█████████████████████████████████████████████████████████| 63/63 [00:46<00:00, 1.36it/s, loss=0.0501]\n",
- "Epoch 17: 100%|█████████████████████████████████████████████████████████| 63/63 [00:48<00:00, 1.29it/s, loss=0.0487]\n",
- "Epoch 18: 100%|███████████████████████████████████████████████████████████| 63/63 [00:46<00:00, 1.34it/s, loss=0.05]\n",
- "Epoch 19: 100%|█████████████████████████████████████████████████████████| 63/63 [00:46<00:00, 1.35it/s, loss=0.0494]\n",
- "Epoch 19 - Validation set: 100%|████████████████████████████████████| 63/63 [00:16<00:00, 3.83it/s, val_loss=0.0507]\n",
- "100%|███████████████████████████████████████████████████████████████████████████| 1000/1000 [00:06<00:00, 150.39it/s]\n",
- "100%|███████████████████████████████████████████████████████████████████████████| 1000/1000 [00:06<00:00, 157.68it/s]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████| 500/500 [00:03<00:00, 158.92it/s]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████| 200/200 [00:01<00:00, 160.13it/s]\n",
- "100%|███████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<00:00, 159.67it/s]\n",
- "100%|███████████████████████████████████████████████████████████████████████████| 1000/1000 [00:06<00:00, 159.70it/s]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████| 500/500 [00:03<00:00, 160.24it/s]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████| 200/200 [00:01<00:00, 160.20it/s]\n",
- "100%|███████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<00:00, 160.62it/s]\n"
- ]
- },
- {
- "data": {
- "image/png": "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386rh6eddhqAheshMNf2UT3c3/JoDiz720aacfXVVyMYDOLYY4/FIYccgiuuuAIPP/xwU+XZsWMHhBA45JBD5tW5rVu3zqtvy5YtQyAQMGxT+9r9KU+rLInlmxrR3d0NABgdHZ23b3R0FPF4XKry7u5ubN68eV5eMzp32bJlLV/TjI6ODjzzzDO4//77sWnTJmzatAm33XYb3ve+9+EnP/lJw89DcXN33HEHurq65u13Olv/SvanPJrm6evrQ7lcRi6XQzgcXrAeUX0D5urc8PCw6XEADMea8Y1vfAOXXHIJfv3rX+OBBx7AlVdeia9+9at47LHH0Nvba3ke1bf3vve9BmsL58gjj2x47wNZHk3rpFIpnH322Ugmk3jooYfm1ZVXoo204hOf+ATOPfdc3HPPPbj//vvx2c9+Fl/96lfxhz/8Aa973esanluv13H66afjU5/6lOl+6ghbYX/Koznw7E8bacaGDRvw0ksv4d5778Vvf/tb/PKXv8R3v/tdfO5zn8MXvvCFhudSaqlNmzYZBjMEeexaYX/K0zJ/FefpAlDMxG233Wa6P5FIWM5E4nE8t956q+lMpJ///Ofz/N7NXrMZarWa+NCHPiQAiB07dgghhLj77rsFALF582bDsRS/08wU4osvvlgAEC+99JJh+6ZNmwQAceeddzZdHs3+c/755wuv1ytj+JLJZMOZSJdeeqnc9slPftJ0tuZXvvKVpmZrqjz88MMCgPjMZz4jtwWDwXkxZ9VqVYRCIfGud71rwWtSzNm1115r2F6v10V3d7c488wzWyqPZv8pFArixBNPFH6/XzzyyCOWx70SbWQzbN++Xfj9fkNqjyOOOMI05uywww5rKm0MxZyZ1dmNGzeKQw89tKXyaP567E8b2QylUkmcc845wuFwiEKhIIQQ4utf/7ppzNmNN95o2n+acfLJJwun0ymy2axh+/e+9z0BQDz66KNNl+dAseTdmsDcjJx7770Xg4ODctvvf/97bN++HRdccIHc9ta3vhUulwvf/e535TYhBL7//e+jp6cHxx9/fMvXNGN6etrwv91ul9YHMt+SeVTNWnzmmWciHA7j+uuvlysicMwyet96662Gz3PrrbfC5XLh1FNPbbo8muYx+w6effZZ/M///A/OOOMMGcMXiURw2mmn4Wc/+5lh5vEdd9yBbDZrqEdvf/vbUavV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68WPfvQjfPCDH8SaNWvwnve8B/X19RgcHMQjjzyCc889t0gZM5vNeOyxx/DhD38YGzZswKOPPopHHnkEX/jCF0S6cCXjqaJyvPvd74bFYsE555wDr9eLgwcP4ic/+QmsViv+67/+q2jfr3/96zjnnHNwwQUX4BOf+ASGh4fxne98B5deeikuv/xysd+GDRtw7bXX4pZbbsHk5CQWLFiAn//85+jv78ddd91VdjxPP/00PvnJT+Laa6/FokWLkMvlcM899wjFi7B27Vo8+eST+O53v4umpiZ0dnZiw4YN+K//+i9s3rwZGzZswMc//nH09PQgEAhg586dePLJJ4uKMAMzhSU3btyIj3zkI5iYmMDtt9+OBQsW4OMf//i8xlPFK8NnPvMZPPTQQ7jyyisRCATwy1/+sujzD3zgA+L1azFHyjh8+DAuvvhivOtd70JPTw/0ej0eeOABTExM4D3veY/Yb+3atfjRj36Er33ta1iwYAG8Xi82bdqEm266CQ899BDe+ta34rrrrsPatWsRj8exb98+3H///ejv7xelEICZGKaNGzfiH//xH5FOp3H77bejtrZWuEUrHU8Vrz5eizlSDZdeeikaGhpw7rnnwufz4dChQ7jjjjtwxRVXiKQlUpy++MUv4j3veQ8MBgOuvPJKdHd342tf+xpuueUW9Pf346qrroLD4cCJEyfwwAMP4BOf+AQ++9nPit9qamrCt771LfT392PRokX47W9/i927d+MnP/mJ6LpSyXheNbyqPNw8oVawkP5kinL//v3KpZdeqlitVsXtdivvf//7lfHx8VnHzOfzyje+8Q2lvb1dMRqNyrJly5Rf/vKXqr9f6TFl3H///cqll14qCnq2tbUpN9xwgzI2Nla0309/+lOlq6tL0el0s1ycmzdvVi677DLF5XIpZrNZ6e7uVq677jpl+/btYp8Pf/jDis1mU44dOybG6fP5lC9/+ctFRRsrHU8VleH73/++cuaZZyoej0fR6/VKY2Oj8oEPfKCki3jLli3KOeeco5jNZqW+vl658cYbi0pREJLJpPLZz35WaWhoUEwmk7J+/Xrlsccem3M8x48fVz760Y8q3d3ditlsVjwej3LRRRcpTz75ZNF+vb29yvnnn69YLJZZRWgnJiaUG2+8UWltbVUMBoPS0NCgXHzxxcpPfvITsQ+5NX/9618rt9xy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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Epoch 20: 100%|█████████████████████████████████████████████████████████| 63/63 [00:44<00:00, 1.41it/s, loss=0.0495]\n",
- "Epoch 21: 100%|█████████████████████████████████████████████████████████| 63/63 [00:49<00:00, 1.27it/s, loss=0.0494]\n",
- "Epoch 22: 100%|█████████████████████████████████████████████████████████| 63/63 [00:47<00:00, 1.32it/s, loss=0.0493]\n",
- "Epoch 23: 100%|█████████████████████████████████████████████████████████| 63/63 [00:47<00:00, 1.33it/s, loss=0.0477]\n",
- "Epoch 24: 100%|█████████████████████████████████████████████████████████| 63/63 [00:49<00:00, 1.28it/s, loss=0.0485]\n",
- "Epoch 25: 100%|█████████████████████████████████████████████████████████| 63/63 [00:47<00:00, 1.33it/s, loss=0.0486]\n",
- "Epoch 26: 100%|█████████████████████████████████████████████████████████| 63/63 [00:48<00:00, 1.30it/s, loss=0.0469]\n",
- "Epoch 27: 100%|█████████████████████████████████████████████████████████| 63/63 [00:47<00:00, 1.34it/s, loss=0.0475]\n",
- "Epoch 28: 100%|█████████████████████████████████████████████████████████| 63/63 [00:47<00:00, 1.34it/s, loss=0.0468]\n",
- "Epoch 29: 100%|█████████████████████████████████████████████████████████| 63/63 [00:47<00:00, 1.34it/s, loss=0.0474]\n",
- "Epoch 29 - Validation set: 100%|████████████████████████████████████| 63/63 [00:15<00:00, 3.97it/s, val_loss=0.0482]\n",
- "100%|███████████████████████████████████████████████████████████████████████████| 1000/1000 [00:06<00:00, 147.63it/s]\n",
- "100%|███████████████████████████████████████████████████████████████████████████| 1000/1000 [00:06<00:00, 154.96it/s]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████| 500/500 [00:03<00:00, 156.04it/s]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████| 200/200 [00:01<00:00, 155.64it/s]\n",
- "100%|███████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<00:00, 156.37it/s]\n",
- "100%|███████████████████████████████████████████████████████████████████████████| 1000/1000 [00:06<00:00, 156.49it/s]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████| 500/500 [00:03<00:00, 156.87it/s]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████| 200/200 [00:01<00:00, 157.53it/s]\n",
- "100%|███████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<00:00, 156.81it/s]\n"
- ]
- },
- {
- "data": {
- "image/png": "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CxcabrfbWLFihfH1r3/dqNfroswbb7whJjI33HCDsXjxYsPr9RqHHnqo8eKLL3ZVH42dg53RR1rhO9/5jrHPPvsYPp/PiEajxrvf/W7jrrvuMgzDMK666ipl38ff/5133mkccMABhtfrNWKxmPGxj32sqT877LDDjH333dd47rnnjPe+972G1+s1li5datx8881d1WdHYl7MmtlsFgAwMzNj2p7P55v8zgjValVpU240Gkgmk6ZtVrbsQqFg+l6r1YRfGIfx/5s4u4HRgY9Xo9GwTA3Sal+9Xm+6Fv/fqk7A3POORCIty2o041Of+hRyuRwcDgcOOeQQXH/99XjPe94j9r/44ouo1WqmbcCcmXz//ffH888/L7Y9//zz2HPPPREOh01lV61aBWBO+l+0aJGyHpVKBccccwzK5TI++9nPYnBwEFu2bMGDDz6IVCqFSCSCO++8E+eccw5WrVqFc889FwCwYsUKAMDk5CT+5m/+BjabDRdeeCH6+vqwbt06nH322chkMvj85z9vut7XvvY12Gw2XHrppZiamsKNN96II488Ei+88AJ8Pl9H9dHYOTAMA5OTk9h3333Fti1btmBqaqqpHQJz7eu///u/xffnn38egUAAe++9d1M52t/KxH7SSSfhpZdewmc/+1ksXboUU1NTeOyxx7Bp0yYsXboUN954Iz772c8iGAzii1/8IgBgYGAAwFz/e9hhh2HLli0477zzsHjxYjz99NO4/PLLMT4+jhtvvNF0rTvuuAPZbBYXXHABSqUSvv3tb+Pwww/Hiy++KM7Zrj4aOxc7so9U4Uc/+hEuuugifPSjH8XnPvc5lEol/OlPf8Kzzz6LU089FR/5yEewYcMG3H333fjWt76F3t5eAEBfXx+Aub7syiuvxCmnnIJzzjkH09PT+O53v4tDDz0Uzz//vMkMmkwm8YEPfACnnHIKPvGJT+Cee+7B+eefD7fbjbPOOquj+uxQ7HC61wHq9bqxefNmI5VKGel0WrDw73//+0Y6nTb90b5bbrmlad9FF11kADCmpqaMdDptHHPMMcbSpUubyo2PjxsAjH/4h3/o+pyqv/PPP98Ih8NGIpGwLHP77bcbAIwHH3zQtH3Lli1GJBIxzjzzTNP2jRs3Nm0/9dRTDQDGeeedJ7alUinjmGOOMdxut/H666+3rE8qlTI2b95smpVqtMdTTz1lnHTSScZPfvIT4xe/+IVxzTXXGD09PYbX6zX++Mc/inL33nuvAcD4zW9+03SOk08+2RgcHBTf9913X+Pwww9vKvfSSy8ZAIwf/OAHlvV5/vnnOzIhWJk1zz77bGNoaMiYmZkxbf/4xz9uRCIRo1AoGIaxdTY8PDxsZDIZUe6ee+4xABjf/va3u6qPxo7HnXfeaQAwqZ6///3vDQDGHXfc0VT+kksuMQAYpVLJMAzDOP74443ly5c3lcvn8wYA47LLLrO8djKZbDLNq2Bl1vzqV79qBAIBY8OGDabtl112meFwOISaQcqZz+czRkdHRTlyDfiHf/iHruqjseOxM/pIFT784Q8b++67b8syVmbNkZERw+FwGF/72tdM21988UXD6XSath922GEGAOOb3/ym2FYul43999/f6O/vNyqVSsf12VGYl2hNu92OhQsXIhKJIBwOIxgMAgB8Ph/C4bDpjwIEotFo0z6aobtcLoTDYVSrVeU5+vv7AcypU92eU/XX39+PfD6PZ5991rKM3+8HAAQCAdP2Z599Ful0GmeeeSYqlYr4i0ajWL16NZ566ilR1uVyAQD+8R//0VS/z3/+86hUKuL6VvWJRCJYuHBhR2uYamzFQQcdhPvuuw9nnXUWPvShD+Gyyy7Db3/7W9hsNlx++eWiHAWUeDyepnN4vV6xn8palePnUoHa5COPPNKk/raDYRi4//77ccIJJ8AwDMzMzIi/Y445Bul0Gn/84x9Nx5xxxhkIhULi+0c/+lEMDQ0JBWZ76qOx7XjllVdwwQUX4L3vfS/OPPNMsb1dO+Rltqcd+nw+uN1u/PrXv26yVnSCe++9F4cccghisZipHR555JGo1+v4zW9+Yyp/4oknYnh4WHxftWoVVq9eLdrh9tZHY9uxM/pIFaLRKEZHR/H73/++6zr+/Oc/R6PRwCmnnGJqb4ODg9hjjz3wxBNPmMo7nU6cd9554rvb7cZ5552Hqakp/OEPf9ju+nSLXX7U9vl8AObSEMgolUqmMj6fr+NynZ5Thc985jPYc889cdxxx2HhwoU466yz8PDDD3d0Pxs3bgQAHH744ejr6zP9Pfroo5iamjKVt9vtWL58uWnbnnvuCQAYGRnZ7vpodIaVK1fiwx/+MJ544glhZm7Xjngb6rRtqrBs2TL84z/+I3784x+jt7cXxxxzDL73ve8hnU63rff09DRSqRR++MMfNrW3T33qUwDQ1Ob22GMP03ebzYaVK1eK9rY99dHYNkxMTOD4449HJBLBfffdZ4pq3xl9pAoejwfXXnst1q1bh4GBARx66KG47rrrMDEx0dE9bNy4EQ8//HBTOzzyyCMBtG+HwFzfR+1we+ujsWOxvX2kCpdeeimCwSBWrVqFPfbYAxdccAGeeuqpjuqzceNGGIaBPfbYo6nNrV+/vqm9LViwAIFAwLRNHmu3pz7dYpdMQssxNDQEABgfH2/aNz4+jng8Llj50NAQnnjiiaYUE3TsggULuj6nCv39/XjhhRfwyCOPYN26dVi3bh1uvfVWnHHGGbj99ttb3g/5ld15550YHBxs2u90dv9Ktqc+Gp1j0aJFIjVLOBxu246ovQFzbW7Lli3KcgBMZVX45je/iTVr1uAXv/gFHn30UVx00UW45ppr8Nvf/hYLFy60PI7a22mnnWZSWzj222+/ltfekfXR6B7pdBrHHXccUqkUnnzyyaa2sjP6SCt8/vOfxwknnIAHHngAjzzyCK688kpcc801+NWvfoV3vetdLY9tNBo46qij8IUvfEG5nwbCbrA99dHY8diePlKFvffeG6+++ioefPBBPPzww7j//vvx/e9/H1/60pfw5S9/ueWxjUYDNpsN69ata0rRBUBY7LrB9tSna/yfGE/bgHwmbr31VuX+vr4+y0gk7sdz0003KSOR7rrrria7d6fn7AT1et0477zzDADGxo0bDcMwjPvuu88AYDzxxBOmsuS/00kI8ZlnnmkAMF599VXT9nXr1hkAjLvvvrvj+mhsP0466STD6/UKH75UKtUyEumss84S2y6++GJltObXvva1jqI1ZTz11FMGAOOLX/yi2BYMBpt8zmq1mhEKhYxPfOITbc9JPmeXX365aXuj0TCGhoaMY445pqv6aGw/isWiccghhxh+v994+umnLcvtjD6yE2zYsMHw+/2m1B5vf/vblT5n++yzT0dpY8jnTNVmV69ebbztbW/rqj4a/3fYnj6yE5TLZeP44483HA6HUSwWDcMwjG984xtKn7PrrrtOOX6qcNhhhxlOp9PI5XKm7TfffLMBwHjmmWc6rs+Owi5v1gTmInIefPBBbN68WWz75S9/iQ0bNuDkk08W2z784Q/D5XLh+9//vthmGAZ+8IMfYHh4GAcddFDX51Rh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/b//twXAeuCBB/pee2lpybrpppus2dlZKxgMWlNTU9ZP/dRPWUeOHLEsy7L27t27DYdXX321fD6Xy1lvfetbrV27dlnBYNA6cOCA9Xu/93tWu92WY44cOWIBsO644w7rD/7gD6w9e/ZY4XDYeuELX2h973vfG2o8rpweOR06spf80R/9kXXhhRdakUjESqfT1qWXXmp95jOfsSzLsn7rt37LUffp+f/0pz9tPfe5z7XC4bA1MjJivepVr9qmz66++mrroosusr71rW9ZV1xxhRUOh619+/ZZH/3oR4caz6mUM8KczczMYG5uDolEAh6PB9/+9rfxohe9CB/5yEfw2te+1nbs4uIiLrjgArz73e/G2972Ntt7b37zm/EP//APOHr0KADg1ltvxec+9zksLCzYrObDhw/jOc95Dt7//vfj5ptvHuqcTvKVr3wFP/uzP4urr74aN9xwA4Athmx1dRWf/OQnceTIEXzsYx/Dxz72MfzKr/wKzjvvPADAi170IkxMTOCv/uqv8Iu/+Iu45pprcN1116FareITn/gECoUCHnjgAezduxcA8Eu/9Ev467/+a8zOzuL5z38+nve85+G+++7DF7/4Rfzqr/4qfv3Xf33H8XzoQx+yediuDC6vf/3rUS6X4fP58IIXvAB33HEHnve858n73/ve99BqtWyvAVuVdJdccgkefvhhee3hhx/Gueeei2QyaTv2sssuAwA88sgj2L17t+M4ms0mrrvuOjQaDdx6662YmprCwsIC/u7v/g75fB6pVAqf/vSn8aY3vQmXXXYZ3vzmNwOA5FmurKzgP/2n/wSPx4O3vOUtGB8fx7333os3vvGNKBaL256B97znPfB4PHjnO9+J1dVV3Hnnnbj22mvxyCOPIBKJDDQeV06PWJaFlZUVCT8CWxGH1dXVbTgEtvD1//7f/5P/H374YcRiMVxwwQXbjuP7V111Vc/rv+xlL8Njjz2GW2+9Ffv27cPq6iq+/OUv4/jx49i3bx/uvPNO3HrrrYjH46KfJicnAWyFU6+++mosLCzg5ptvxp49e/Bv//ZvuO2227C0tIQ777zTdq1PfepTKJVKuOWWW1Cv1/HBD34QL37xi/G9731PzrnTeFw5vXIqdaST/Omf/il++Zd/GS9/+cvx1re+FfV6Hd/97nfx9a9/Hf/1v/5XvPSlL8XBgwfxl3/5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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Epoch 30: 100%|█████████████████████████████████████████████████████████| 63/63 [00:43<00:00, 1.44it/s, loss=0.0474]\n",
- "Epoch 31: 100%|█████████████████████████████████████████████████████████| 63/63 [00:48<00:00, 1.29it/s, loss=0.0477]\n",
- "Epoch 32: 100%|█████████████████████████████████████████████████████████| 63/63 [00:46<00:00, 1.34it/s, loss=0.0475]\n",
- "Epoch 33: 100%|█████████████████████████████████████████████████████████| 63/63 [00:51<00:00, 1.23it/s, loss=0.0467]\n",
- "Epoch 34: 100%|█████████████████████████████████████████████████████████| 63/63 [00:48<00:00, 1.29it/s, loss=0.0479]\n",
- "Epoch 35: 100%|█████████████████████████████████████████████████████████| 63/63 [00:48<00:00, 1.30it/s, loss=0.0462]\n",
- "Epoch 36: 100%|█████████████████████████████████████████████████████████| 63/63 [00:49<00:00, 1.28it/s, loss=0.0464]\n",
- "Epoch 37: 100%|█████████████████████████████████████████████████████████| 63/63 [00:48<00:00, 1.30it/s, loss=0.0466]\n",
- "Epoch 38: 100%|█████████████████████████████████████████████████████████| 63/63 [00:47<00:00, 1.31it/s, loss=0.0468]\n",
- "Epoch 39: 100%|█████████████████████████████████████████████████████████| 63/63 [00:47<00:00, 1.33it/s, loss=0.0468]\n",
- "Epoch 39 - Validation set: 100%|████████████████████████████████████| 63/63 [00:15<00:00, 4.06it/s, val_loss=0.0463]\n",
- "100%|███████████████████████████████████████████████████████████████████████████| 1000/1000 [00:06<00:00, 148.94it/s]\n",
- "100%|███████████████████████████████████████████████████████████████████████████| 1000/1000 [00:06<00:00, 154.48it/s]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████| 500/500 [00:03<00:00, 155.37it/s]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████| 200/200 [00:01<00:00, 142.93it/s]\n",
- "100%|███████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<00:00, 156.49it/s]\n",
- "100%|███████████████████████████████████████████████████████████████████████████| 1000/1000 [00:06<00:00, 155.99it/s]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████| 500/500 [00:03<00:00, 156.75it/s]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████| 200/200 [00:01<00:00, 157.27it/s]\n",
- "100%|███████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<00:00, 156.92it/s]\n"
- ]
- },
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmcAAAFwCAYAAAD9idyvAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOy9eZxcVZn//6l9X3up3tLpztKBJISwJYqQIARCBJQRUXABBIVBFJj5giyOgqhRxAUVRXRGQHQYARUcmLBJlDWBAAnZO1snve+171X390f/npNzT99bSxY7kfN+vfrVVXc599yqW+d+7vM853kMiqIokEgkEolEIpEcERinugMSiUQikUgkkv1IcSaRSCQSiURyBCHFmUQikUgkEskRhBRnEolEIpFIJEcQUpxJJBKJRCKRHEFIcSaRSCQSiURyBCHFmUQikUgkEskRhBRnEolEIpFIJEcQUpxJJBKJRCKRHEFIcSaRSP7peOihh2AwGLBu3bqp7opEIpFUjRRnEomkakj86P2tWbNmqrt4SPniF78Ig8GA888/X3P9X/7yF5x44omw2+1obW3FHXfcgXw+/w/upUQi+WfBPNUdkEgkRy933XUX2tvbJy2fNWvWFPTm8LBu3To89NBDsNvtmutXrVqFCy+8EGeccQZ+9rOfYePGjfj2t7+NoaEh3H///f/g3kokkn8GpDiTSCQHzIoVK3DyySdPdTcOG4qi4Prrr8dll12Gv/71r5rb3HTTTViwYAGef/55mM0TQ6rX68XKlStxww034JhjjvlHdlkikfwTIN2aEonksNHV1QWDwYAf/OAH+PGPf4zp06fD4XBg6dKl2LRp06TtX3rpJZx++ulwuVzw+/342Mc+hq1bt07arre3F1dddRWamppgs9nQ3t6Oa6+9FtlsVrVdJpPBv//7v6Ourg4ulwv/8i//guHh4Yr7/8gjj2DTpk34zne+o7l+y5Yt2LJlC66++momzADgS1/6EhRFwRNPPFHxsSQSiYSQljOJRHLARCIRjIyMqJYZDAbU1NSolv32t79FLBbDddddh3Q6jZ/85Cc488wzsXHjRoRCIQDAiy++iBUrVmDGjBm48847kUql8LOf/Qwf+tCH8M4776CtrQ0A0NfXh0WLFiEcDuPqq6/GMcccg97eXjzxxBNIJpOwWq3suF/5ylcQCARwxx13oKurC/feey++/OUv4w9/+EPZc4vFYrjllltw++23o6GhQXObd999FwAmWQ+bmprQ0tLC1kskEkk1SHEmkUgOmGXLlk1aZrPZkE6nVct27tyJHTt2oLm5GQBw7rnnYvHixbj77rvxox/9CABw8803IxgM4o033kAwGAQAXHjhhTjhhBNwxx134OGHHwYA3HbbbRgYGMDatWtVouiuu+6Coiiq49bU1OD555+HwWAAABSLRfz0pz9FJBKBz+creW533XUXHA4H/u3f/k13m/7+fgBAY2PjpHWNjY3o6+sreQyJRCLRQooziURywPz85z9HR0eHapnJZJq03YUXXsiEGQAsWrQIixcvxv/93//hRz/6Efr7+7F+/Xp89atfZcIMABYsWICzzz4b//d//wdgQlw9+eSTuOCCCzRj3UiEEVdffbVq2emnn44f//jH2Lt3LxYsWKB7Xp2dnfjJT36CRx99FDabTXe7VCoFAJrb2O12RKNR3X0lEolEDynOJBLJAbNo0aKKJgTMnj170rKOjg489thjAIC9e/cCAObMmTNpu2OPPRbPPfccEokE4vE4otEo5s+fX1H/WltbVe8DgQAAYHx8vOR+N9xwA0499VRcdNFFJbdzOBwAJmLbRNLpNFsvkUgk1SDFmUQi+adFy4oHYJL7k+ell17Cs88+iz/96U/o6upiy/P5PFKpFLq6uhAMBuH1epk7s7+/H9OmTVO109/fj0WLFh38SUgkkvcdcramRCI57OzYsWPSss7OThbkP336dADA9u3bJ223bds21NbWwuVyoa6uDl6vV3Om56Fi3759AICPf/zjaG9vZ3+9vb146aWX0N7ejt/85jcAgIULFwLApEoEfX196OnpYeslEomkGqQ4k0gkh50nn3wSvb297P2bb76JtWvXYsWKFQAmgucXLlyIhx9+GOFwmG23adMmPP/88/jIRz4CADAajbjwwgvxv//7v5qlmUpZxCrlzDPPxJ///OdJf3V1dTj55JPx5z//GRdccAEAYN68eTjmmGPwq1/9CoVCgbVx//33w2Aw4BOf+MRB90cikbz/kG5NiURywKxatQrbtm2btPzUU0/FjBkz2PtZs2bhtNNOw7XXXotMJoN7770XNTU1+OpXv8q2ueeee7BixQp88IMfxFVXXcVSafh8Ptx5551su5UrV+L555/H0qVLcfXVV+PYY49Ff38/Hn/8cbz66qvw+/0HdU6tra2TYtUA4MYbb0QoFMKFF16oWn7PPffgox/9KM455xxccskl2LRpE+677z584QtfwLHHHntQfZFIJO9PpDiTSCQHzDe+8Q3N5Q8++KBKnF122WUwGo249957MTQ0hEWLFuG+++5TpaBYtmwZnn32Wdxxxx34xje+AYvFgqVLl+Luu+9WlYhqbm7G2rVr8fWvfx2///3vEY1G0dzcjBUrVsDpdB6+k9Xh/PPPx5/+9Cd885vfxFe+8hXU1dXh9ttv1/1sJBKJpBwG5VD4ASQSiUSDrq4utLe345577sFNN9001d2RSCSSowIZcyaRSCQSiURyBCHFmUQikUgkEskRhBRnEolEIpFIJEcQMuZMIpFIJBKJ5Ahiyixn8Xgcd9xxB84991wEg0EYDAY89NBDuttv3boV5557LtxuN4LBID73uc9heHh40nbFYhHf//730d7eDrvdjgULFuDRRx89qDYPhC1btuDOO+9UZRiXSCQSiUQiKceUibORkRHcdddd2Lp1K44//viS2/b09GDJkiXYuXMnVq5ciZtuugnPPPMMzj77bGSzWdW2X/va13DLLbfg7LPPxs9+9jO0trbi05/+NP7nf/7ngNs8ELZs2YJvfvObUpxJJBKJRCKpiinLc9bY2Ij+/n40NDRg3bp1OOWUU3S3XblyJRKJBN5++22WHHLRokU4++yz8dBDD+Hqq68GAPT29uKHP/whrrvuOtx3330AgC984QtYunQpbr75Zlx88cWs1l6lbUokEolEIpH8I5kyy5nNZkNDQ0NF2/7xj3/E+eefr8ravWzZMnR0dOCxxx5jy5566inkcjl86UtfYssMBgOuvfZa9PT04I033qi6TT3+53/+ByeddBI8Hg+8Xi+OO+44/OQnPwEAPPTQQ7j44osBAB/+8IdhMBhgMBjwt7/9je2/atUqnH766XC5XPB4PDjvvPOwefNm1TGuuOIKuN1u7N69G8uXL4fL5UJTUxPuuuuuSWVqSvVHIpFIJBLJ0cMRP1uzt7cXQ0NDOPnkkyetW7RoEd599132/t1334XL5ZpUMmXRokVsfbVtavHCCy/g0ksvRSAQwN13343vfe97OOOMM/Daa68BAJYsWYLrr78eAHD77bfjkUcewSOPPML69cgjj+C8886D2+3G3Xffja9//evY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9Kfx8Y9/HJ2dnXj00Ufx4x//GLW1tQCAuro6ABNj2de//nV88pOfxBe+8AUMDw/jZz/7GZYsWYJ3331X5QYdHx/HRz7yEXzyk5/EpZdeisceewzXXnstrFYrrrzyyor6c0iZCnNdoVBQuru7lXA4rEQiEWYi/cUvfqFEIhHVH6174IEHJq27/vrrFQDK0NCQEolElOXLlyttbW2Ttuvv71cAKP/2b/9WdZtaf9dee63i9XqVsbEx3W0efvhhBYDy9NNPq5b39vYqPp9Pufzyy1XLd+zYMWn5pz/9aQWAcs0117Bl4XBYWb58uWK1WpXdu3eX7E84HFa6u7uVQqEwFV/zUctrr72mXHTRRcp//dd/KU899ZTy3e9+V6mpqVHsdrvyzjvvsO0ef/xxBYDy8ssvT2rj4osvVhoaGtj7efPmKWeeeeak7TZv3qwAUH75y1/q9ufdd9+tyIWg59a86qqrlMbGRmVkZES1/JJLLlF8Pp+STCYVRdnvqmhublai0Sjb7rHHHlMAKD/5yU+q6o/k0PPII48oAJT/+q//YsveeustBYDy29/+dtL2N998swJASafTiqIoynnnnafMmDFj0naJREIBoNx66626xx4fH5/kmtdCz635rW99S3G5XEpnZ6dq+a233qqYTCZl3759iqIoyp49exQAisPhUHp6eth2FBrwb//2b1X1R3LoORxjpBYf+9jHlHnz5pXcRs+t2dXVpZhMJuU73/mOavnGjRsVs9msWr506VIFgPLDH/6QLctkMsrChQuV+vp6JZvNVtyfQ8WUuDWNRiNaWlrg8/ng9XrhdrsBAA6HA16vV/VnMpkAAH6/f9I6ekK3WCzwer3I5XKabdTX1wOYsG5V26bWX319PRKJBNauXau7jdPpBAC4XC7V8rVr1yISieDyyy9nFrBsNgu/34/FixfjtddeY9vSxIR///d/V/XvxhtvRDabZcfX64/P50NLS4vMd1Ylp556Kp544glceeWV+OhHP4pbb70Va9asgcFgwG233ca2I0unzWab1IbdbldZQlOplO52fFta0DX53HPPqayolaAoCv74xz/iggsugKIoGBkZYX/Lly9HJBLBO++8o9rnsssug8fjYe8/8YlPoLGxkVlgDqY/kgNn27ZtuO666/DBD34Ql19+OVte7jrktzmY69DhcMBqteJvf/ubpsehHI8//jhOP/10BAIB1XW4bNkyFAoFvPzyy6rtL7zwQjQ3N7P3ixYtwuLFi9l1eLD9kRw4h2OM1MLv96OnpwdvvfVW1X3805/+hGKxiE9+8pOq662hoQGzZ8/G6tWrVdubzWZcc8017L3VasU111yDoaEhvP322wfdn2o54u/aNBtTy12YTqdV2zgcjoq3q7RNLb70pS+ho6MDK1asQEtLC6688ko8++yzFZ3Pjh07AABnnnkm6urqVH/PP/88hoaGVNsbjUbMmDFDtayjowMAmF/9YPojqYxZs2bhYx/7GFavXs1iG8tdR/w1VOm1qUV7ezv+/d//Hf/5n/+J2tpaLF++HD//+c8riu8aHh5GOBzGr371q0nX2+c//3kAmHTNzZ49W/XeYDBg1qxZ7Ho7mP5IDoyBgQGcd9558Pl8LH6ROBxjpBY2mw133303Vq1ahVAohCVLluD73/8+BgYGKjqHHTt24Nlnn510HS5btgxA+esQmBj76Do82P5IDi0HO0Zqccstt8DtdmPRokWYPXs2rrvuOrz22msV9WfHjh1QFAWzZ8+edM1t3bp10vXW1NQEl8ulWibeaw+mP9VyxOdaaGxsBAD09/dPWtff349gMMhUeWNjI1avXj0pCS3t29TUVHWbWtTX12P9+vV47rnnsGrVKqxatQoPPvggLrvsMjz88MMlz4cCXx955BE0NDRMWn8g6S8Opj+Sypk2bRqbpOH1esteR3S9ARPXXG9vr+Z2AFTbavHDH/4QV1xxBZ566ik8//zzuP766/Hd734Xa9asQUtLi+5+dL199rOfVVlbeBYsWFDy2IeyP5LqiUQiWLFiBcLhMF555ZVJ18rhGCP1uPHGG3HBBRfgySefxHPPPYevf/3r+O53v4uXXnoJJ5xwQsl9i8Uizj77bHz1q1/VXE83wmo4mP5IDj0HM0Zqceyxx2L79u14+umn8eyzz+KPf/wjfvGLX+Ab3/gGvvnNb5bclybYrVq1SvUwQ5DHrhoOpj9V8w9xnpaBYiYefPBBzfV1dXXKxRdfPGl5R0eHKo7nvvvuUwAomzdvVm33+9//fpLfu9I2K6FQKCjXXHONAkDZsWOHoiiK8sQTTygAlNWrV6u2pfidSqYQX3755QoAZfv27arlq1atUgAojz76aMX9kRw8F110kWK321kMXzgcVsxms3LzzTertstkMorb7VauvPJKtuymm25STCbTpLQm3/nOdxQALN6mUl577TUFgPK1r32NLXO73ZNizvL5vOLxeJRLL720bJsUc3bbbbeplheLRaWxsVFZvnx5Vf2RHDypVEo5/fTTFafTqbz++uu62x2OMbISOjs7FafTqUrtMX/+fM2Ys7lz51aUNoZizrSu2cWLFytz5sypqj+SfxwHM0ZWQiaTUc477zzFZDIpqVRKURRF+cEPfqAZc/b9739f8/6pxdKlSxWz2azE43HV8vvvv18BoLzxxhsV9+dQccS7NYGJGTlPP/20avrrX//6V3R2duLiiy9myz72sY/BYrHgF7/4BVumKAp++ctform5GaeeemrVbWoxOjqqem80Gpn1gcy3ZB4VZ30uX74cXq8XK1eu1Jy5qTUj9b777lOdz3333QeLxYKzzjqr4v5IKkfrO9iwYQP+8pe/4JxzzmExfD6fD8uWLcPvfvc7NgMZmLCKxuNx1XX0iU98AoVCAb/61a/YskwmgwcffBCLFy/WnakJTMwyFqeqH3fccTAajarv1+VyTbreTCYTLrroIvzxj3+clIZA71xplhzxxBNPoL+/HytWrKiqP5KDo1Ao4FOf+hTeeOMNPP744/jgBz+ou+3hGCNFkskkc38SM2fOhMfjKXsdAsAnP/lJvPHGG3juuecmrQuHw5OuqSeffFJlbX7zzTexdu1adh1W2h/JoedwjJFaiPc2q9WKuXPnsiTygP699uMf/zhMJhO++c1vatbVFtvO5/N44IEH2PtsNosHHngAdXV1OOmkkyruz6FiSt2a9913H8LhMPr6+gAA//u//4uenh4AwFe+8hUWeHz77bfj8ccfx4c//GHccMMNiMfjuOeee3DcccexuBkAaGlpwY033oh77rkHuVwOp5xyCp588km88sor+P3vf68ybVbaphZf+MIXMDY2hjPPPBMtLS3Yu3cvfvazn2HhwoVsivrChQthMplw9913IxKJwGaz4cwzz0R9fT3uv/9+fO5zn8OJJ56ISy65BHV1ddi3bx+eeeYZfOhDH1KJMbvdjmeffRaXX345Fi9ejFWrVuGZZ57B7bffzqYLV9IfSeV86lOfgsPhwKmnnor6+nps2bIFv/rVr+B0OvG9731Pte13vvMdnHrqqVi6dCmuvvpq9PT04Ic//CHOOeccnHvuuWy7xYsX4+KLL8Ztt92GoaEhzJo1Cw8//DC6urrwX//1XyX789JLL+HLX/4yLr74YnR0dCCfz+ORRx5hwos46aST8OKLL+JHP/oRmpqa0N7ejsWLF+N73/seVq9ejcWLF+OLX/wi5s6di7GxMbzzzjt48cUXMTY2pjpeMBjEaaedhs9//vMYHBzEvffei1mzZuGLX/xiVf2RHBz/7//9P/zlL3/BBRdcgLGxMfzud79Trf/sZz/LXh+OMVKks7MTZ511Fj75yU9i7ty5MJvN+POf/4zBwUFVZYGTTjoJ999/P7797W9j1qxZqK+vx5lnnombb74Zf/nLX3D++efjiiuuwEknnYREIoGNGzfiiSeeQFdXF0uFAEzEMJ122mm49tprkclkcO+996Kmpoa5RSvtj+TQczjGSC3OOeccNDQ04EMf+hBCoRC2bt2K++67D+eddx6btETC6Wtf+xouueQSWCwWXHDBBZg5cya+/e1v47bbbkNXVxcuvPBCeDwe7NmzB3/+859x9dVX46abbmLHampqwt13342uri50dHTgD3/4A9avX49f/epXbHJeJf05ZBxSO1yVTJ8+XQGg+SeaKDdt2qScc845itPpVPx+v/KZz3xGGRgYmNRmoVBQVq5cqUyfPl2xWq3KvHnzlN/97neax6+0TZEnnnhCOeecc5T6+nrFarUqra2tyjXXXKP09/ertvv1r3+tzJgxQzGZTJNcnKtXr1aWL1+u+Hw+xW63KzNnzlSuuOIKZd26dWybyy+/XHG5XMquXbtYP0OhkHLHHXeo0mNU2h9JZfzkJz9RFi1apASDQcVsNiuNjY3KZz/7WV0X8SuvvKKceuqpit1uV+rq6pTrrrtOlYqCSKVSyk033aQ0NDQoNptNOeWUU5Rnn322bH92796tXHnllcrMmTMVu92uBINB5cMf/rDy4osvqrbbtm2bsmTJEsXhcCgAVC7OwcFB5brrrlOmTZumWCwWpaGhQTnrrLOUX/3qV2wbcms++uijym233abU19crDodDOe+881SZ5yvtj+TgoOn9en8ih2OM5BkZGVGuu+465ZhjjlFcLpfi8/mUxYsXK4899phqu4GBAeW8885jFVt4F2csFlNuu+02ZdasWYrValVqa2uVU089VfnBD37A0hWQW/Oee+5RfvjDHyrTpk1TbDabcvrppysbNmyouj+SQ8/hGiNF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Het7Tg899JDxW7/1W8bIyIjh8/mMiYkJ47nPfa5RLBYNwzBs1/3FL36xfP748ePGS17yEiObzRper9c4//zzjY9+9KO21/1v//Zvxpvf/GZjZGTECAaDxo033rjh/DY7n6GcObnkkkuMSy65xPRaNps1nv3sZ2947969e40nPvGJ8vs//MM/GACM++67z/S+//N//o8BwLj99tv7fvfc3Jxx0003GRMTE4bX6zVGR0eNpz3tacaRI0cMwzCMqampDTi85ppr5POFQsF47Wtfa0xOThper9fYvXu38dd//ddGp9OR9xw5csQAYLzrXe8y/vZv/9bYvn274ff7jauvvtq45557tnQ+QzkzciZ0ZC/5+7//e+P88883AoGAEY/HjUsvvdT41Kc+ZRiGYfzZn/2Zre7T6//JT37SuOSSSwy/328kEgnjuc997gZ9ds011xgXXHCB8eMf/9h4zGMeY/j9fmPHjh3GBz/4wS2dz+mUs8KcjY+PY2ZmBpFIBA6HAz/96U9x7bXX4gMf+ABe8IIXmN47OzuL8847D295y1vwute9zvS3V77ylfjqV78qPW1e85rX4LOf/SxOnDhhsl4PHz6MRz3qUXjnO9+JV73qVVs6pp1885vfxG/+5m/immuuwY033ggAeOihh7C4uIiPf/zjOHLkCD70oQ/hQx/6EP7gD/4A5557LgDg2muvRTabxb/927/hd37nd/DEJz4R119/Per1Oj760Y+iVCrh9ttvx9TUFADgd3/3d/G5z30OExMTuPzyy3HZZZfh61//Or785S/jD//wD/HHf/zHm57P+973PhlrMpStyUte8hJUq1W4XC48/vGPx7ve9S5cdtll8vd77rkH7Xbb9BqwRvU/8pGPxM9+9jN57Wc/+xn27t27IffviiuuAADceeed2LZtm+15rKys4Prrr0er1cJrXvMajI6O4sSJE/jP//xPFItFxGIxfPKTn8TLX/5yXHHFFXjlK18JANIRfWFhAY9+9KPhcDjwe7/3e8hkMrjlllvwspe9DOVyecMz8Na3vhUOhwNvfOMbsbi4iPe85z140pOehDvvvFPCRZudz1DOjBiGgYWFBRMLdOLECSwuLm7AIbCGr//+7/+W33/2s58hFArhvPPO2/A+/v1xj3tcz+9/5jOfifvuuw+vec1rsGPHDiwuLuJrX/sajh07hh07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9a246qqrcM011+CVr3wljh8/jne/+9148pOfjKc85SnyviuvvBLPfvaz8eY3vxmLi4vYs2cPPv7xj2N6ehof/ehH+57PN7/5Tfze7/0env3sZ2Pv3r1ot9v45Cc/KYYX5dJLL8XXv/51/O3f/i3Gx8exc+dOXHnllfjrv/5r3Hrrrbjyyivxile8QuYa/vSnP8XXv/51ae5JSSaTeNzjHoeXvOQlWFhYwHve8x7s2bMHr3jFK7Z0PkM5NfmDP/gDfOlLX8KNN96IfD6Pf/3XfzX9/YUvfKH8fCZ0pFUeeughPPGJT8RznvMcnH/++XC73fj85z+PhYUFPO95z5P3XXrppfjgBz+Iv/qrv8KePXuQzWZx3XXX4Q1veAO+9KUv4Td+4zdw00034dJLL0WtVsM999yDz3zmM5ienpZWCMBaDtPjHvc4/O7v/i5arRbe8573IJVKSVh00PMZyumXM6Ej7eTJT34yRkdH8djHPhYjIyN44IEH8P73vx833HCDFC3RcPrjP/5jPO95z4PH48GNN96I3bt346/+6q/w5je/GdPT03jGM54h01E+//nP45WvfCVe//rXy3eNj4/jHe94B6anp7F371783//7f3HnnXfiwx/+sDQTH+R8TpucVh5ui2LXsJD/rBTlvffeazz5yU82gsGgEY/HjRe84AXG/Pz8hmN2Oh3jbW97mzE1NWV4vV7jggsuMP71X//V9vsHPaZVPvOZzxhPfvKTpaHn9u3bjVe96lXG3Nyc6X3/9E//ZOzatctwuVwbQpy33nqrcf311xuxWMzw+/3G7t27jZtuusn48Y9/LO958YtfbIRCIePQoUNyniMjI8af/dmfmZo2Dno+QxlM3vve9xpXXHGFkUwmDbfbbYyNjRkvfOELe4aIb7/9duOqq64y/H6/kclkjFe/+tWmVhSURqNhvP71rzdGR0cNn89nXH755caXv/zlTc/n8OHDxktf+lJj9+7dht/vN5LJpHHttdcaX//6103v279/v3H11VcbgUBgQxPahYUF49WvfrWxbds2w+PxGKOjo8YTn/hE48Mf/rC8h2HNT3/608ab3/xmI5vNGoFAwLjhhhuMo0ePbvl8hnJqwvL+Xv+sciZ0pJZcLme8+tWvNvbt22eEQiEjFosZV155pfHv//7vpvfNz88bN9xwgxGJRDY0oa1UKsab3/xm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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Epoch 40: 100%|█████████████████████████████████████████████████████████| 63/63 [00:45<00:00, 1.40it/s, loss=0.0454]\n",
- "Epoch 41: 100%|█████████████████████████████████████████████████████████| 63/63 [00:46<00:00, 1.35it/s, loss=0.0469]\n",
- "Epoch 42: 100%|█████████████████████████████████████████████████████████| 63/63 [00:48<00:00, 1.30it/s, loss=0.0452]\n",
- "Epoch 43: 100%|█████████████████████████████████████████████████████████| 63/63 [00:48<00:00, 1.30it/s, loss=0.0465]\n",
- "Epoch 44: 100%|██████████████████████████████████████████████████████████| 63/63 [00:48<00:00, 1.30it/s, loss=0.046]\n",
- "Epoch 45: 100%|█████████████████████████████████████████████████████████| 63/63 [00:49<00:00, 1.27it/s, loss=0.0456]\n",
- "Epoch 46: 100%|█████████████████████████████████████████████████████████| 63/63 [00:49<00:00, 1.27it/s, loss=0.0462]\n",
- "Epoch 47: 100%|██████████████████████████████████████████████████████████| 63/63 [00:48<00:00, 1.30it/s, loss=0.046]\n",
- "Epoch 48: 100%|█████████████████████████████████████████████████████████| 63/63 [00:47<00:00, 1.31it/s, loss=0.0448]\n",
- "Epoch 49: 100%|█████████████████████████████████████████████████████████| 63/63 [00:49<00:00, 1.28it/s, loss=0.0466]\n",
- "Epoch 49 - Validation set: 100%|████████████████████████████████████| 63/63 [00:15<00:00, 4.16it/s, val_loss=0.0446]\n",
- "100%|███████████████████████████████████████████████████████████████████████████| 1000/1000 [00:06<00:00, 147.01it/s]\n",
- "100%|███████████████████████████████████████████████████████████████████████████| 1000/1000 [00:06<00:00, 154.44it/s]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████| 500/500 [00:03<00:00, 155.73it/s]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████| 200/200 [00:01<00:00, 155.84it/s]\n",
- "100%|███████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<00:00, 155.30it/s]\n",
- "100%|███████████████████████████████████████████████████████████████████████████| 1000/1000 [00:06<00:00, 156.05it/s]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████| 500/500 [00:03<00:00, 156.86it/s]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████| 200/200 [00:01<00:00, 156.94it/s]\n",
- "100%|███████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<00:00, 157.29it/s]\n"
- ]
- },
- {
- "data": {
- "image/png": "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NptFNptV3aZYLLJMSR5JksZso7UPco3y2/LL6LUkSSVrmEkaCQW8C1UNcsVqrUulUqrrotGo7NgUo1cKqssGjH7eHo+nZHvBWD796U8jHo/DYDDg7LPPxl133YUFCxaw9Vu3bkU+n5ctAwCz2Yx58+Zh8+bNbNnmzZsxffp0uN1uWdtFixYBGDX9Nzc3q/Yjm81ixYoVyGQy+OIXv4j6+np0d3fjmWeeQTgchsfjwSOPPILPfOYzWLRoEa6//noAwJQpUwAA/f39OP3006HT6fCFL3wBgUAAa9aswXXXXYdoNIovfelLsuN973vfg06nw6233oqBgQHcc889OP/887FlyxbYbLaK+iN4b5AkCf39/Zg9ezZb1t3djYGBgTHXITB6ff31r39l7zdv3gyHw4GTTjppTDtaX8rFfumll2L79u344he/iLa2NgwMDOCFF17A4cOH0dbWhnvuuQdf/OIX4XQ68bWvfQ0AUFdXBwBIJpM455xz0N3djc997nNoaWnB66+/jttvvx29vb245557ZMf67W9/i1gshhtvvBHpdBo//elPsWzZMmzdupXts1x/BO8tx3OMVOPXv/41brrpJlx22WW4+eabkU6n8e6772L9+vW4+uqr8dGPfhR79uzBo48+ip/85Ceora0FAAQCAQCjY9nXv/51XHHFFfjMZz6DwcFB/PznP8fSpUuxefNmmRs0FArhoosuwhVXXIGrrroKf/zjH3HDDTfAbDbj2muvrag/x5XjLvcqoFAoSJ2dnVI4HJYikQhT4b/85S+lSCQi+6N1999//5h1N910kwRAGhgYkCKRiLRixQqpra1tTLve3l4JgPQf//EfVe9T7e+GG26Q3G63NDIyotnm4YcflgBIzzzzjGx5d3e35PF4pGuuuUa2fO/evWOWX3311RIA6XOf+xxbFg6HpRUrVkhms1k6cOBAyf6Ew2Gps7NT9lQqKM9rr70mXXrppdL//M//SE899ZT0/e9/X6qpqZGsVqu0adMm1u6xxx6TAEivvPLKmH1cfvnlUn19PXs/e/ZsadmyZWPabd++XQIg/epXv9Lsz+bNmytyIWi5Na+77jqpoaFBGhoaki2/8sorJY/HIyWTSUmSjjwNT5o0SYpGo6zdH//4RwmA9NOf/rSq/giOP4888ogEQGb1fPvttyUA0m9/+9sx7b/85S9LAKR0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rRqGYRive93rjAMHDmzbr1QqGQCM973vfQMf0w7vec97jHg8bjSbzY77fOYznzEAGPfff79pe6FQMJLJpPELv/ALpu1LS0tGIpEwbX/rW99qADDe/e53y7Z2u2287nWvM/x+v7G6utr39TjoHw888IDx+te/3viLv/gL4wtf+ILxe7/3e8bw8LARDAaN73//+7Ifx/jf/u3fth3jjW98ozE+Pi5/X3311cZtt922bb8jR44YAIw//dM/7Xg9jzzyiKxSuyESiZisZcTb3/52Y2JiwlhbWzNt/6mf+ikjkUgY5XLZMIyt1fCePXuMfD4v+/3t3/6tAcD4yEc+MtD1ONh93HPPPQYAk9XzQshIO2xsbIhFqxuuvvpqk7WM+M//+T8bkUjEOHbsmGn7+973PsPj8Yg1g5azUChkzM3NyX7f+c53DADG//V//V8DXY+D3ceFkJF2+PEf/3Hj6quv7rrPhz70oW3WMsMwjDNnzhgej8f43d/9XdP2J554wvB6vabtt9xyiwHA+KM/+iPZVqvVjGuvvdYYHR016vV639ezW7jkIyQZq2BXVZclM7hPpVLpe79+j2mHZDKJUqmEr33ta33fB/G1r30N2WwWb37zm7G2tib/PB4PbrrpJkkP1/jlX/5l+UzrR71ex3333Xfe1+NgO1760pfis5/9LN72trfhx37sx/C+970PDz74IFwuF97//vfLfr14pDnULzftQEvUV77ylY49BzvBMAx87nOfwx133AHDMEycu/3225HL5UwNtAHgZ3/2ZxGLxeTvN7zhDZiYmBALzPlcj4Od45lnnsG73vUuvOQlL8Fb3/pW2X4hZKQdQqEQ/H4//uVf/mVHZXo+85nP4OUvfzlSqZSJh69+9avRarXwb//2b6b9f+InfgJ79uyRv2+88UbcdNNNwsPzvR4HO8eFkJF2SCaTmJubw3e/+92Br/Hzn/882u023vSmN5n4Nj4+jssuu2zbXOv1evHOd75T/vb7/XjnO9+JlZUVfO973zvv6xkUl7xyxoKIdumn1WrVtE8oFOp7v36PaYf/8//8P3H55Zfjta99LaampvC2t70NX/7yl/u6n+PHjwMAbrvtNkn35r+vfvWr22r+uN1uHDhwwLTt8ssvBwBxvZ7P9TjoD4cOHcKP//iP4/7775ekj1480hzql5t22L9/P/7v//v/xic+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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Epoch 50: 100%|█████████████████████████████████████████████████████████| 63/63 [00:45<00:00, 1.40it/s, loss=0.0452]\n",
- "Epoch 51: 100%|█████████████████████████████████████████████████████████| 63/63 [00:50<00:00, 1.24it/s, loss=0.0445]\n",
- "Epoch 52: 100%|█████████████████████████████████████████████████████████| 63/63 [00:46<00:00, 1.35it/s, loss=0.0456]\n",
- "Epoch 53: 100%|█████████████████████████████████████████████████████████| 63/63 [00:50<00:00, 1.24it/s, loss=0.0452]\n",
- "Epoch 54: 100%|█████████████████████████████████████████████████████████| 63/63 [00:48<00:00, 1.30it/s, loss=0.0457]\n",
- "Epoch 55: 100%|█████████████████████████████████████████████████████████| 63/63 [00:48<00:00, 1.30it/s, loss=0.0441]\n",
- "Epoch 56: 100%|█████████████████████████████████████████████████████████| 63/63 [00:49<00:00, 1.28it/s, loss=0.0444]\n",
- "Epoch 57: 100%|█████████████████████████████████████████████████████████| 63/63 [00:49<00:00, 1.28it/s, loss=0.0449]\n",
- "Epoch 58: 100%|██████████████████████████████████████████████████████████| 63/63 [00:49<00:00, 1.26it/s, loss=0.045]\n",
- "Epoch 59: 100%|█████████████████████████████████████████████████████████| 63/63 [00:47<00:00, 1.33it/s, loss=0.0454]\n",
- "Epoch 59 - Validation set: 100%|████████████████████████████████████| 63/63 [00:16<00:00, 3.71it/s, val_loss=0.0457]\n",
- "100%|███████████████████████████████████████████████████████████████████████████| 1000/1000 [00:06<00:00, 150.27it/s]\n",
- "100%|███████████████████████████████████████████████████████████████████████████| 1000/1000 [00:06<00:00, 157.00it/s]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████| 500/500 [00:03<00:00, 158.48it/s]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████| 200/200 [00:01<00:00, 158.88it/s]\n",
- "100%|███████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<00:00, 157.25it/s]\n",
- "100%|███████████████████████████████████████████████████████████████████████████| 1000/1000 [00:06<00:00, 159.14it/s]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████| 500/500 [00:03<00:00, 159.99it/s]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████| 200/200 [00:01<00:00, 160.52it/s]\n",
- "100%|███████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<00:00, 159.09it/s]\n"
- ]
- },
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmcAAAFwCAYAAAD9idyvAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAADtT0lEQVR4nOydeZhcRbn/v73vy6zJJCEkgUQhgiCSXBCIhCUgRriyCCoQFuFC2K4/kMWLiEoQAgoS2VzCoheFgOBFwybxymVfgrJpAmRCJjOTyWSmp/e9fn/M81beU31OT/fMhJkJ9Xmeeab7dJ061d3VVd/zvm+9ZRNCCGg0Go1Go9FoxgX2sW6ARqPRaDQajWY7WpxpNBqNRqPRjCO0ONNoNBqNRqMZR2hxptFoNBqNRjOO0OJMo9FoNBqNZhyhxZlGo9FoNBrNOEKLM41Go9FoNJpxhBZnGo1Go9FoNOMILc40Go1Go9FoxhFanGk0mp2Oe+65BzabDa+99tpYN0Wj0WjqRoszjUZTNyR+rP5eeumlsW7iqPDMM89g4cKFiEQiCIVC2G+//fD73/++otwf//hHfO5zn4PX68X06dNxzTXXoFgsjkGLNRrNzoBzrBug0WgmLj/4wQ8wc+bMiuO77777GLRmdFm5ciXOOussHHHEEVi2bBkcDgf+9a9/YdOmTYZyq1evxnHHHYcvfvGLuO222/DWW2/hRz/6EXp6enDHHXeMUes1Gs1ERoszjUYzbI4++mh8/vOfH+tmjDrt7e1YunQpLrzwQtx6661Vy1566aXYe++98dRTT8HpHBxSw+Ewli1bhosvvhif/vSnP44mazSanQjt1tRoNDuM9vZ22Gw23HTTTfjpT3+KXXfdFT6fDwsWLMDbb79dUf7ZZ5/FwQcfjEAggGg0imOPPRbvvfdeRbnNmzfjrLPOwpQpU+DxeDBz5kycd955yOfzhnK5XA7f/va30dLSgkAggH//93/H1q1bh2z3nXfeiVKphB/84AcAgGQyCSFERbl3330X7777Ls455xwpzADg/PPPhxACq1atGvJaGo1Go6ItZxqNZtgMDAygt7fXcMxms6Gpqclw7L777kMikcDSpUuRzWZx6623YuHChXjrrbcwadIkAIPxXUcffTRmzZqF73//+8hkMrjtttvwhS98AW+88QZmzJgBAOjs7MS8efMQi8Vwzjnn4NOf/jQ2b96MVatWIZ1Ow+12y+teeOGFaGhowDXXXIP29nbccsstuOCCC0zjxjjPPPMMPv3pT+PPf/4zLrvsMmzevBkNDQ1YunQprr32Wtjtg/e1a9euBYAK6+GUKVMwbdo0+bpGo9HUgxZnGo1m2Bx++OEVxzweD7LZrOHY+++/j/Xr12Pq1KkAgKOOOgrz58/HDTfcgJ/85CcAgMsuuwyNjY148cUX0djYCAA47rjjsO++++Kaa67BvffeCwC48sor0d3djZdfftkgin7wgx9UWLeamprw1FNPwWazAQDK5TJ+9rOfYWBgAJFIxPJ9rV+/Hg6HA2eccQa+853v4LOf/SweeeQR/OhHP0KxWMT1118PAOjq6gIAtLW1VdTR1taGzs7OKp+eRqPRmKPFmUajGTY///nPMWfOHMMxh8NRUe64446TwgwA5s2bh/nz5+PPf/4zfvKTn6CrqwtvvvkmvvOd70hhBgB77703jjjiCPz5z38GMCiuHn30USxevNg01o1EGHHOOecYjh188MH46U9/io0bN2Lvvfe2fF/JZBLlchk//vGPcfnllwMAjj/+ePT19eHWW2/FVVddhVAohEwmA2BQkKp4vV7E43HLa2g0Go0VWpxpNJphM2/evJoWBMyePbvi2Jw5c/Dggw8CADZu3AgA+NSnPlVRbo899sCTTz6JVCqFZDKJeDyOz3zmMzW1b/r06YbnDQ0NAID+/v6q5/l8PqRSKZxyyimG46eccgqeeOIJrF27Focccgh8Ph+Awdg2lWw2K1/XaDSaetALAjQazU6LmRUPgGlwP2fKlCkAIOPhiNbWVgDbxR25M8m9yenq6pL1aDQaTT1ocabRaHY469evrzi2bt06GeS/6667AgD+9a9/VZT75z//iebmZgQCAbS0tCAcDpuu9BxN9ttvPwCDq0I5FEPW0tICANhnn30AoGIngs7OTnR0dMjXNRqNph60ONNoNDucRx991CB0XnnlFbz88ss4+uijAQxaoPbZZx/ce++9iMVistzbb7+Np556Cl/60pcAAHa7Hccddxz+53/+x3RrpqEsYrXyta99DQDwq1/9Sh4rl8tYuXIlGhsbpXibO3cuPv3pT+Puu+9GqVSSZe+44w7YbDaccMIJo9IejUbzyULHnGk0mmGzevVq/POf/6w4fuCBB2LWrFny+e67746DDjoI5513HnK5HG655RY0NTXhO9/5jiyzfPlyHH300TjggANw1llnyVQakUgE3//+92W5ZcuW4amnnsKCBQtwzjnnYI899kBXVxceeugh/N///R+i0eiI39exxx6Lww47DNdffz16e3vx2c9+Fo8++ij+7//+D3fddZdhAcDy5cvxla98BUceeSROPvlkvP3221ixYgXOPvts7LHHHiNui0aj+QQiNBqNpk5WrlwpAFj+rVy5UgghxIYNGwQAsXz5cnHzzTeLXXbZRXg8HnHwwQeLv//97xX1PvPMM+ILX/iC8Pl8IhwOi8WLF4t33323otzGjRvFaaedJlpaWoTH4xGzZs0SS5cuFblcztC+V1991XDemjVrBACxZs2aId9jIpEQF198sZg8ebJwu91ir732Er/5zW9My/7hD38Q++yzj/B4PGLatGniv/7rv0Q+nx/yGhqNRmOGTYhR8gNoNBqNQnt7O2bOnInly5fj0ksvHevmaDQazYRAx5xpNBqNRqPRjCO0ONNoNBqNRqMZR2hxptFoNBqNRjOO0DFnGo1Go9FoNOOIMbOcJZNJXHPNNTjqqKPQ2NgIm82Ge+65x7L8e++9h6OOOgrBYBCNjY049dRTsXXr1opy5XIZN954I2bOnAmv14u9994bDzzwwIjqHA7vvvsuvv/976O9vX1U6tNoNBqNRvPJYMzEWW9vL37wgx/gvffew2c/+9mqZTs6OnDIIYfg/fffx7Jly3DppZfiT3/6E4444gjk83lD2e9+97u4/PLLccQRR+C2227D9OnT8fWvfx2/+93vhl3ncHj33Xdx7bXXanGm0Wg0Go2mLsYsCW1bWxu6urowefJkvPbaa9h///0tyy5btgypVAqvv/663Mh43rx5OOKII3DPPffgnHPOATC41crNN9+MpUuXYsWKFQCAs88+GwsWLMBll12GE088Ue61V2udGo1Go9FoNB8nY2Y583g8mDx5ck1lH374YXz5y1+WIgoADj/8cMyZMwcPPvigPPbYY4+hUCjg/PPPl8dsNhvOO+88dHR04MUXX6y7Tit+97vfYb/99kMoFEI4HMZee+2FW2+9FQBwzz334MQTTwQAHHroobDZbLDZbPjrX/8qz1+9ejUOPvhgBAIBhEIhHHPMMXjnnXcM11iyZAmCwSA+/PBDLFq0CIFAAFOmTMEPfvCDim1qqrVHo9FoNBrNxGHcr9bcvHkzenp68PnPf77itXnz5mHt2rXy+dq1axEIBCq2TJk3b558vd46zXj66adxyimnoKGhATfccAN+/OMf44tf/CKef/55AMAhhxyCiy66CABw1VVX4f7778f9998v23X//ffjmGOOQTAYxA033ICrr74a7777Lg466KAKN2ipVMJRRx2FSZMm4cYbb8R+++2Ha665Btdcc03N7dFoNBqNRjNxGPd7a3Z1dQEYdIOqtLW1oa+vD7lcDh6PB11dXZg0aRJsNltFOQDo7Oysu04z/vSnPyEcDuPJJ5+UblLOrFmzcPDBB+NnP/sZjjjiCHzxi1+UryWTSVx00UU4++yzcffdd8vjp59+Oj71qU9h2bJlhuPZbBZHHXUUfvaznwEAzj//fCxevBg33HADLrroIjQ3Nw/ZHo1Go9FoNBOHcW85y2QyAGAqlLxer6FMJpOpuVytdZoRjUaRSqXw9NNP1/w+iKeffhqxWAynnHIKent75Z/D4cD8+fOxZs2ainMuuOAC+dhms+GCCy5APp/HM888M+L2aDQajUajGV+Me3Hm8/kAALlcruK1bDZrKOPz+WouV2udZpx//vmYM2cOjj76aEybNg1nnnkmnnjiiZrez/r16wEACxcuREtLi+HvqaeeQk9Pj6G83W7HrFmzDMfmzJkDANIFOpL2aDQajUajGV+Me7cmuR7JFcnp6upCY2OjtIC1tbVhzZo1EEIYXJt07pQpU+qu04zW1la8+eabePLJJ7F69WqsXr0aK1euxGmnnYZ777236vspl8sABuPOzBZEOJ31fyUjaY9Go9FoNJrxxbgXZ1OnTkVLSwtee+21itdeeeUV7LPPPvL5Pvvsg1/+8pd47733sOeee8rjL7/8sny93jqtcLvdWLx4MRYvXoxyuYzzzz8fd911F66++mrsvvvuFXFvxG677QZgUFAdfvjhQ16nXC7jww8/lNYyAFi3bh0AYMaMGTW3R6PRaDQazcRg3Ls1AeD444/H448/jk2bNsljf/nLX7Bu3TqZsgIAjj32WLhcLtx+++3ymBACd955J6ZOnYoDDzyw7jrN2LZtm+G53W7H3nvvDWC7qzQQCAAAYrGYoeyiRYsQDoexbNkyFAqFirrNdiignG30flasWAGXy4XDDjus5vZoNBqNRqOZGIzp3porVqxALBZDZ2cn7rjjDnz1q1/FvvvuCwC48MILEYlEAACbNm3Cvvvui2g0iosvvhjJZBLLly/HtGnT8OqrrxpckN/5znewfPlynHPOOdh///3x6KOP4k9/+hN++9vf4utf/7osV0+dKv/+7/+Ovr4+LFy4ENOmTcPGjRtx2223YcaMGXj99ddht9vR3d2NadOmYf/998d//Md/wOPxYOHChWhtbcV///d/49RTT8Wee+6Jk08+GS0tLfjoo4/wpz/9CV/4whekGFuyZAl+//vfY5dddsEBBxyA+fPnY/Xq1Xj88cdx1VVX4brrrqu5PRqNRqPRaCYIYgzZddddBQDTvw0bNhjKvv322+LII48Ufr9fRKNR8Y1vfEN0d3dX1FkqlcSyZcvErrvuKtxut5g7d674zW9+Y3r9WutUWbVqlTjyyCNFa2urcLvdYvr06eLcc88VXV1dhnK/+MUvxKxZs4TD4RAAxJo1a+Rra9asEYsWLRKRSER4vV6x2267iSVLlojXXntNljn99NNFIBAQH3zwgWznpEmTxDXXXCNKpVLd7dFoNBqNRjP+GVPLmaY6S5YswapVq5BMJse6KRqNRqPRaD4mtL9Lo9FoNBqNZhyhxZlGo9FoNBrNOEKLM41Go9FoNJpxhI4502g0Go1GoxlHaMuZRqPRaDQazThCizONRqPRaDSaccSYbN9ULpfR2dmJUChkuc2RZuQIIZBIJDBlyhSdiFaj0Wg0mgnCmIizzs5O7LLLLmNx6U8kmzZtwrRp08a6GRqNRqPRaGpgTMRZKBQCADQ0NKBUKoGvSRBCyOdWj+m51TkctZzNZquoa0diZhmkNpi1cSTX4deia5TLZfl5azQajUajGf+MiTgjEWGz2aS7bbgizOo8qzJqG6yEkZmoqkVEqfWqgsmsnCrWar0u/xzpv3qsXC5r17FGo9FoNBOIMRFnhJUFi4uVoYSLWpbXrZ5Lz+12u7z2UMLF7NpW51kJsWp1VTtey2v0nsw+By3KNBqNRqOZeIypOHM4HACsLVvDcfdVs5apZWq5hpmFzUr0VBN71c7n7RiJi3MocajRaDQajWb8M6biDKh079HjWs4bKnasWvxZrdeppW7VYlfPuaPVHt4WLcw0Go1Go5m4jKk4MwtgHy1qWSBQTz3Vzq8lbk0Vn/UKOo1Go9FoNJ8MxjzmjP+v9tpQiwFq+W9W/1BtGwlDrRwdDaxcqbXE02k0Go1Goxl/jAtxxp8PJaRqEWL1pNbYGTBbEKHRaDQajWZiMuZp42u1alWznFmdZ5WGw+oaE52d8T1pNBqNRvNJY8wXBBBW4qnW3GVWljO1jp1dwGh3pkaj0Wg0E5sxtZzVYzUze15vsP7OLMyquXI1Go1Go9FMHMbcrflx8UkRLJ+U96nRaDQazc7KmIqzHeF+0xYkjUaj0Wg0E5mdwnJmtsrzkyzMtDjVaDQajWbiMubibDStZ2aLAT6p6M9Ao9FoNJqJybgQZyMRaFaCTAs1jUaj0Wg0E5Ex377JbI/KWgVVtYSzdrvdUO6Tht5jU6PRaDSaicm42yFguGVtNhscDgfsdrtB5FG5crks/2q5nkaj0Wg0Gs1YMG6S0BJDCTSrrP9OpxNutxtOpxNOpxPlchlCCCnGSqUSyuUySqWSweJWLBZ3SvfnzvZ+NBqNRqP5pDDm4mwkIoJcd3a7HdFoFM3NzQgEAvB6vSgUCtJSRu7TcrmMQqGAXC6HcrmMYrGITCaDXC6HbDaLXC6HUqk0iu/u40eLMo1Go9FoJjZjLs6qYSU0yNJVLpdht9vhdDoRCAQQDAYRCoXg9XqRz+elePN6vYZzC4UCSqUSCoUCUqkU8vk8stksEokEkskkMpmMLDOR0Fs3aTQajUYz8RnX4qwWSIyoMWdOp1MKN7/fD7vdLp9zF2c6nZbizO/3w+PxIJVKIZlMIpfLoVgsGuLUNBqNRqPRaHYk42JBgJWFTF3NaXVuuVxGKpXCwMAASqUSfD4fHA4HHA6HjCujWLRAIACXyyVFHHd1JpNJxGIxxGIx9PT0IJFIIJfLSUsat9iNR8hSqFdqajQajUYzcRkXlrNqIqzaOXResVhEPB5HsVhELBaDx+OBz+eD0+mEx+NBIpGA0+mEy+VCKpWScWn05/P5YLfb0dTUhJaWFqRSKTQ3NyOVSiGRSCAWiyEej6NQKKBYLCKfzxtWf9KigvECCU+bzYZisTjWzdFoNBqNRlMH40KcWVFPvrNCoSAtXBTcT9YyWsXpcrmQzWYRiUQQDAYBQLo/HQ4HXC4XgsEgvF4v3G43MpkMUqkU+vv7MTAwgGw2K12gtBqUYtdKpRJKpZJ0g5JoU1eN7ijIrUvvg95TLpfbodfVaDQajUYzuoy5OButNBalUgm5XE4uBMhms9J6RCLN5XJhYGAAmUwGkUhECiayoJGQCwaDaGhoQDabRSaTkVa0dDqNVCqFTCYDYHvuNIpNy+fzSKfTKBQKUiTm83kUi0W5enRHWNgols7j8cDlcsHj8cj329/fP+rX02g0Go1Gs+MYc3GmQq5KnkhWjZ8yEzg8XQb9p/O4m6+vrw89PT3w+Xwy/UY4HEY0GpUWNa/XC4/HI2PVGhoa0NbWJuPTBgYGDMltM5mMXGRQKBSQz+dlrFo2m5UrQROJBDKZjEzfMRxUK5/f70cgEJBt9/l88Pv90vp31113Des6Go1Go9Foxoa6xNkPfvCDmsp973vfq6lcLVYkddGAmoSW/vNAeLUsT4nBXZH0x4VTOBxGIBBAOBw2bAFVLpfhcrmki5QLRsqPVi6XDdaybDYrr5HL5aTVLZvNIhaLIZ1OS/Gm7l5Aq0tdLhccDgecTid8Pp+Ml/P7/YhGowgEAvD7/YhEIvI1Emsul0uLM41Go9FoJhg2UYefzW63Y8qUKWhtba26wvKNN96oWk88HkckEkFDQwMA8z0y1ZWR6mvqcXWVotk2TaqYs9vtCAQC8Pl8CAaDaG5uRjQaRSgUQlNTk1woAAChUAg+nw8ejwdCCDgcDnktijcrlUrIZDIoFovSzclj0fL5vIxZ6+vrw8DAABKJBOLxuCzLc7dxV6XX65XWPb/fj3A4jIaGBvj9fvh8PoTDYWkxCwaDaGxshN1uxwEHHICBgQGEw+Fav2aNRqPRaDRjSF2Ws6OPPhrPPvssPv/5z+PMM8/El7/8ZYN1aTgMlWiWizZuFeNWMu5iBIybnqvuUS7qaJVnMpmUYoncgwMDA2hqajLEo3k8HrjdbmnJogB8snqRVY7+uBWtWCzK61OONYppGxgYQDKZRLFYRKlUktdxu91wuVzw+Xzwer1SmFGb3G63LBsKhRAKhaRw8/l8ejGARqPRaDQTkLosZwDQ2dmJe++9F/fccw/i8ThOO+00nHnmmfjUpz5Vcx3cckaiSbWc8aSxJMRI1NAfD7JXzycRVkuaDhJwTqdTugzb2tqkGKK2RiIRuQNBJBKRooneg8PhkCtG8/k8ksmkbCN3g6qbsVOKDnK/UkyZy+WSMWXkriTrncfjkULN4/EgEAhIlyuJxkQigebmZm0502g0Go1mAlG3OOP87W9/w8qVK/Hwww9jr732wjPPPAOfzzfkeapbE0CFMKNVh36/XwobytnF3YZqrjGefwyoFGf8MZXhAo8sZJMnT0YkEpHuw6amJhnfRYsJaMsol8slV3qS0KKtoXK5XMU+n7RAgSx83LpXLpdlXW63G+FwWAb6kzCj2DeynpEFzeFwmH7OWpxpNBqNRjNxGNFqzf333x/t7e149913sXbtWhQKhZrEmRUknMhiFIlE0NjYCJfLJdNjkKAplUpSnFHwPQ/M5/XxFZ9cvJGFi8QeX3GZSCRkrBcAmRoDgAz0py2eGhsbpbWKrIHULtqvs6+vD8ViEQ6HQ7orySJIFi8hBPL5PAKBgPyLRCIGKx3lMBupO1mj0Wg0Gs34ZFji7MUXX8Svf/1rPPjgg5gzZw7OOOMMfP3rXx816wwFxbtcLjQ3N8u9MfP5PFwul4zt8nq9UqRQjjNg0D1JljSKLePWNBJO+XwemUxGCjSq1+FwIBKJoKWlBV6vVwb/Uy41p9OJZDIpg/tjsZi0ZrW0tCAUCklx5fP50NTUhKamJrmPZ7FYhN/vl4LO7/ejqakJbrcbdrtdxrXZbDYUCgW5YpNe11szaTQajUaz81KXOLvxxhtxzz33oLe3F9/4xjfw3HPPYe+99x7VBnGrE6WZUF15wKDljPbJdDgcKJVK0iXq9XqlO5HEEMEtb4VCQQom2juTyoZCIUQiETidgx8RdzXyODgA0pVJlrVcLodsNivb6HQ6EY1GZe60QqEg85XRa83NzXC73dK1SnWn02m5i4EWZhqNRqPR7PzUnUpj+vTp+PKXvwy3221Z7ic/+UnVeqxizujPZrPJAPgpU6agpaUFwWAQDocDoVAIdrtdCh+KuyKLE7lEKadYOp02pM6gsiTESJyR1Y2sbB6PB16vV8asUdA9WbzIFUp5zGixgtPphN/vh9/vR2NjIxobGxEKhdDQ0FCxkpNcmpMmTUJzczNcLpdc1UkiMh6Py4URfr/f8HkNJdR0zJlGo9FoNBOPuixnhxxyCGw2G9555x3LMvVYdsxWUtIxiiHL5XLo7+9HIBCQIoesaNlsVgbKkyvR4/FIMUNuTxJBdJ7D4TBYoUhoORwOaWlzuVyGQH6n04lQKCST1NLqUbLQ8RWkZMWjuDQhBFwul8xFxsWd3W5HKBSSbkyXy2X4PMhSqMaYaQuaRqPRaDQ7J3WJs7/+9a87qBmV0ArKVCoFYDAInzLqc6FF4oz2taSgeWD7ggA6RtYwDlmkKCCfUmE4nU5D/jKHwyHznZGQov0rudCjhLP0ny9EIJel3++Xwf9me4vy69aSCkSj0Wg0Gs3OQ90LAuLxOF5++WXk83nMmzcPLS0tO6JdMvaM3I0UfE+LAih9Bbk/c7mcTDVBYowsZLTAgCxqHJ6Jn/bSJEsXF0UkxLg4465Suha5XHkSWr6bAAX202IAvrUUf+/cxavRaDQajeaTQ13i7M0338SXvvQldHd3AxgMmn/wwQexaNGiYV28luSwJHIoRisWi0lRxJO1er1emW6iqakJwWBQWp3sdrtMIOv3+6XlzePxIBQKyee0gTkAQ94wupbD4TAkniV48thgMCgD+IvFIjKZjNyXk95PuVxGMBiE3W5HoVCoeN9q8D/Vz3O3adGm0Wg0Gs3OSV0LAhYtWoRkMombbroJXq8XP/zhD/HWW29h/fr1dV1U3SEAMN//klJbyMYyQaLGYJF4crlcchUniTPaO5NWYFLeMJ/PJ92HtGk5pfAIh8PSUuZyudDY2ChXjZL7kyxkXCjSrgJc3DmdTrmYgMSkz+eTQs1ms8Hn88nywxFe3MpGj/WCAI1Go9FoJh51Wc5ef/11PPXUU/jc5z4HAPj1r3+NxsZGxOPxUZn8zTY/NysDbLcm8VxmNptNLiIg9yWJs2QyiVgshv7+frn3JIkzvj0UbY1E1i6eX4zSaJC7lYsrvn0TCTGy0qm51mjhgLpnKH9eL+o5Vp+fRqPRaDSa8U1d4qyvrw/Tpk2Tz2kLo23bto1InKmbnFezpplty8QD58vlsswNRiSTSekmdDgc0gJGQszn88mtmILBoKyPyjudTuTzeRmfxvf8JOFF7Y7H43I/zJaWFgQCAbkQgDZJt9lsMhaN2sXf22hsJs83eddoNBqNRjNxqHtBwLvvvitjzoBBIfDee+8hkUjIY/UkprVajagGxJsFyNNjHpyv1k0uR4JynGWzWbkxOMWRtba2IhgMGqxeVGcgEJCuSy6qSLzxpLK0kpTyklFMHF+oQIsUKH0GvZfR2JbJ6vPQaDQajUYz/qk7Ca2VmKLjFPReDTUJLd94XLX2kJgye42LM76Ck7L502MuzuhalOpi0qRJiEajaGxsRFtbmxRlHo9H1kG7DvD6uQDioozOo/aUSiUZU0bt8ng8AGDYMF0VnaMR8B+LxdDQ0KBjzjQajUajmUDUZTnbsGHDqDfALMaMRA8JH7M4M7JaUTmyTNEWT3wVJt8OieK9SKQ1NTUhGo0iGo1i0qRJMs0FiSaydHHhxcUZtYVEl8/nM4g6cnlS2gxqN8+TRuJRx4lpNBqNRqOpS5ztuuuuO6QRqiAJBoPwer3SikXQvpckniio3+fzyZWQlPuMsu4DkGKJBBIJM1qZSbnRmpqaDCksaMUlWe0ikQiamprg9XplPeVy2SDmeEwcuTMpLo3EJsWcUTm6xmi4IkngaZemRqPRaDQTk7pjzgBg/fr1eOyxx9De3g6bzYaZM2fiuOOOw6xZs4bdEO4mDIfDiEajMp0FiSCykNHOAPSY9r0k8UP5y3gqCxJudrsduVxObp9ULBYN9dGqSlpQQAKOBFZfX58sowbeU8JbspbRbgDk4gwGgzIejSfGVRc21JrPTF0wQY9VS6NGo9FoNJqJQ93i7Prrr8f3vvc9lMtltLa2QgiBrVu34oorrsCyZctw6aWX1lyX2b6adrtdrp6MRCJwu90G12AoFJJ5y3gMGIkzSnlBG6UDkFYzKkuZ+wuFglw1SSs3Acg0F5T2ggL4M5kMMpkMcrmcwQXL3aS0dRMwuIiA0nNQXjNge0427m4lqB7+mVT73PgKVxKxZM0zS3Cr0Wg0Go1mfFOXOFuzZg3+67/+C1dffTUuvvhiGdDf19eHW265BVdccQXmzZuHQw45ZNgN4uku1BWTNpsNkUhEJpSlY+RCJPGlrqgki1Y+n5eWKYr54gH9ZG3LZDJyVwIil8tJUcXdk0IIaYnL5/PI5XJypWYkEkFra6vcz5MvplAXFZC44mk8qgk3NX1IsVhEoVCQ/x0OB5LJ5LC/B41Go9FoNGNDXas1v/a1ryEajeKuu+4yff2cc85BIpHAAw88ULUeWq0ZjUYBGEWHzWZDa2urXEEZCAQMG46HQiFp5SJLGf15PB4p0HieM4/HYxBClEBWXYDQ1NSEXC6HfD4vk9rSH6UKISFIgpHEEbk/Q6EQwuEwQqEQotGo3EYqlUpJ9ysdo+vSqk6qi56T4OMxcjy3WqFQQC6XQzablYKSjnm9XmQyGRx55JF6taZGo9FoNBOIuixnr7zyCu6//37L10899VScdtppdTeCx0mVy2Vp8RFCoFAoGPKDFYtFGcNFIomv2CTLGbcq0aICEjjcDckFWjabNWTxJ8saCTqeKoTnJSMx6Pf7EY1GpXWPXKtUngQd1c2tY9TeUqkkN3nPZrPI5XKGGDQ6v1AoyDL5fF66aSmOzuv1asuZRqPRaDQTkLrE2ZYtWzBjxgzL12fOnGlIUDsUqtGOxFQ8HpcChaxAJIBisZh87PV6DW5GyvzvdDoNMVg2m02u9KTrcHcgia7W1lYpyEjU8bxkfJsnOoeseBQj19TUJDdY9/l8cuNz7gY1c13a7XYpzPr6+hCPx5FIJFAoFAxCs1wuS2GWTqelIFPzpKVSKQwMDNT8XWg0Go1Goxkf1CXOstmsIbWFisvlkikihgPPHZbL5VAoFJBOpw3xY3xbJcpJxmPAABhcmrRAgM4vlUrIZDIycJ9coS6XC6lUCoFAQLpBaQN1in8j16rP50M4HEYwGERDQ4Nc6en3+9Hc3Cwtd5QfjURoNpuV7SwUCobPMp/PI5lMoqenB52dnfL9k2Cj18l1SfFtqsWMBFw2m9WWM41Go9FoJiB1r9b85S9/iWAwaPoa38KpFsxWIvLtmshKRJYh1dKmija1TnrMdwgAKmPcSIABQEtLC+x2uxRmJLpCoZBMdBuNRqVFLRwOIxAIyHxrJLhIJPE2m+2E4Ha7kcvlkEqlkEwmMTAwIC2G+XwemUxGijJaLZrP55FOp5FOp6VwI/cmX5jAFzRoNBqNRqOZGNQlzqZPn45f/OIXQ5YZCWYrFAFUiJpq6xjMNvzmyVnJdUlluQijAHxyaVJC20gkgkAggEAggIaGBmkZo7Qe5N6kODlyl3Ky2azBpUkxc+l0GgMDA0gmk1JwZbNZpFIp9Pf3Y2BgQB5Pp9PSpRmPx6UVjQs1Emc6z5lGo9FoNBOPusRZe3v7qF5ctXZxa5ZZglWedgIwTy3BxR2P7+L10EpISjZLZcLhMCKRCCKRCHw+H4BBtyi5L2nlKN870+/3w+FwIJfLSasXCaZSqWRYnNDf3y/jz9ra2uR+m4lEAp2dnSgUCvB4PMjlcti8eTM2bdqEDRs2IJ1OSwtaLBYzrCjlcWj0WKPRaDQazcSlbrdmuVzGPffcg0ceeUTuEDBr1iwcf/zxOPXUU+vasNtMgJk958f5H4eua7VxOm8/F3LBYFDuSNDc3GzYa9PpdCIYDKKxsRHhcFi6RzOZDNLptOG6FKRv5noFILd7Iqudy+WSoquvr09ayxKJBN5++220t7ejvb0dmzZtMqTI4NtPqatc9b6cGo1Go9FMfOoSZ0IILF68GKtXr8ZnP/tZ7LXXXhBC4L333sOSJUvwyCOP4NFHH62rvnrEnNn51Z7TMZ6KgiemdblcUpi1tLTILaPC4TD8fr/M7E+LBiiRLd9Xk4L2KSCfJ6rl1yOLGd+iicTWwMAAUqkUMpkMEokENm7ciPb2dnR0dGDr1q3yGlx4qtZGjUaj0Wg0Owd1ibN77rkHzz33HP7yl7/g0EMPNbz27LPP4rjjjsN9991Xd64zcvuZBf0T1axm9LpaVj0ODK4oJcHl9/vR0tKCpqYmNDY2orW1Fc3NzQiFQtKd6fV6ZW60XC4nt26iRLCJREImoaX0HqorllJuUDoP2gqKVrd2d3cjkUggkUigt7cX69atw+bNm7F161bkcjnLz0Oj0Wg0Gs3OR107BBx55JFYuHAhrrjiCtPXly1bhv/93//Fk08+WbUevkMApbcAzEUV/2/2R1A+M7KUkdWKdg7wer3w+XxoaGhAU1OTzNQfjUZlVn+v1yvjyiiHWrFYlOk8KPlrJpMxWM8ovxqt4OQxaZQ6g/KYUTvoPeVyOXR1daGrqwvd3d1Yv349XnvtNQwMDCCTydT61VRF7xCg0Wg0Gs3EoS7L2T/+8Q/ceOONlq8fffTR+NnPflZzfVapNIZjFeLJXCkHGqXI4ElhKbaMrGcUcxYOh2U8GLkp0+m0THNBiWwLhQKSyaQhhszv98Pr9VaIQu7a5LsEOJ1OuWiA4sn6+vrQ3d2Njo4OJBIJS4uZRqPRaDSanZu6xFlfXx8mTZpk+fqkSZPQ399fVwN44lkuzIYSaWavkzCjtBg+nw+hUEhaynw+H/x+P5qammSiWSpDliWeL4xWX2YyGQghZIqKZDIpXZRer1fGqPE28IUIJNL4dlAAZB6zVCqF7u5ubNq0CZs3b0YqlarrM9RoNBqNRrPzUJc4oz0hrSA34I7GTMw5HA6ZCmPatGnSNUn7XUajUfj9frkHp9/vR0NDA4DBlZaFQgGpVAqxWEymrEgmkzLOLJlMSnFGFjLa6JxyoMXjcTQ3NyObzcrr00btFHdms9mQz+fhdDqRTqfR2dmJ1157DW+//Ta6u7vR29u7wz8/jUaj0Wg045e6V2suWbJEZtNXGa4rjq88tMp5ZmVJo2OBQABNTU1oampCc3OzzEfm8XgQjUYRDAbh8/mk1YrclplMRgb7b9u2Ddu2bcPAwAB6e3sNG4unUilDclmHwyFdmg0NDQiFQjKGjraGIrFK20N5vV75PrZt24auri50dHSgvb0d3d3dGBgY0IH+Go1Go9F8wqlLnJ1++ulDlql3peZoQPnKGhoapFDyeDwyXQYF7JO7kVJTlEolJBIJ6V7s6upCb2+vFGe0vyWJNL4lE4kzig9LpVLI5/PweDxyT02ewoP/LxQK2LZtm4wx6+zsHNUFABqNRqPRaCYudYmzlStX7qh2AKiMI7PaKYBeoyB7t9uNSZMmYdKkSYhEIvB6vQAgNwAn0UMuVwrCp794PI5YLIYNGzYgHo/LfSuz2azMwq+2iXKcpdNpJJNJ+Hw+xGIxGXNGMW+08MBut0sBl0wm8f777+Ptt9/G+vXrsXHjRr3Vkkaj0Wg0GgDD2CHg46IWoUarHykLPx2n1ZAkqmjrI1qFSaKLVl4ODAwgFoshFovJPSrp/KES3ZJIJOsZpdJwOp0yIa3b7Ybf70cikcDAwAC6urqwdu1arF+/Ht3d3XrLJY1Go9FoNJJxK87MqLaCs1gsIpfLIZvNwuVySXFVKpWQyWRkYD+5KUulEvL5PBKJBFKpFFKpFNLptIwrG0owqbsb0GpMspZRMlqn0wmn0yl3Aujp6cHGjRuxceNGbNu2DalUSseZaTQajUajkYy5OKtl+yYrKxqdS7FjXq9XirFyuYxisYh8Pi8D+rnFjBLKUloMikGrRyjxVBmU4DYSiaChoQHhcBiFQgFerxdOpxP9/f3YtGkT1q9fj3fffRft7e0yma1Go9FoNBoNMebirBas3Jv0OJ/PY8uWLRgYGIDb7Ybb7ZZii5K90nOyipltA1WLMDOz3tGK0La2Nvj9fpnPLBwOI5PJoL+/Hx9++CH+/ve/Y+PGjfjggw+QTqe1O1Oj0Wg0Gk0FYy7O+EpGM3Gkptaw2kMzn8/LBQAOh0MKMBJkVHakliqzNoZCIfnncrkADFrzstks0uk0EokEOjs70dnZiZ6eHqRSKS3MNBqNRqPRmDKm4sxKmNWa24xDljEzMWdmJVPLDbf9lPyWcqnRXprlchnpdBoDAwPo6+vD5s2b0dXVhf7+fmSz2WFfU6PRaDQazc7NmIqzkQgjs03S+WPu+qT/w3FjWkE7BITDYUyePBlNTU1yK6fGxkaEQiHEYjF0dnaio6MD77//Prq6upDJZD6WXRQ0Go1Go9FMTMbcrVmN0VjFaGY1G426HQ4HPB4Pmpqa0NjYKBPgBgIBlMtlJBIJbN26Fd3d3eju7kZfX58WZhqNRqPRaIZk3Ikz1cJlZSEzK1sLo5W2gtJmRKNRhEIhBINBBAIBuN1umdZj69at6O3tRX9/PxKJhBZmGo1Go9FohmRcibN6dghQz7NiR+UQCwQCaGxsxOTJkxGNRqUwA4B0Oo2+vj68//772LRpE7Zt24ZEIrFD2qHRaDQajWbnYlwsCLB6TU30aiXczF7nz6ttrD4cHA4HQqEQIpGIFGREPB5HX18ftmzZgo8++gjbtm1DOp0e9rU0Go1Go9F8srCPdQOAQfFUSzJaXl6l3mD/eq6nQpupe71eeDwe+Hw+g9Wsv78fPT09cmWmdmdqNBqNRqOplXHl1gQqrVyqtYxe48es8qONRoyaGV6vV/75/X6Ew2G5n2cymcSWLVvQ0dGB/v5+Lcw0Go1Go9HUxZi7Ne12u2kqjFrcmmr5amVUS9lwXZwOh0Pun+nxeGCz2eS+nel0Gu+//z4++ugj9PT0jJkwGw3XrUaj0Wg0mrFhzMUZ/a/HGlatfDURZnZtq2S31axstD0T3z4qn88jFouho6MDvb29Os5Mo9FoNBrNsBjTmDMea0aPuZCqJqrU51YxZFblaz3fDIfDAbt98KMTQiCbzSIej2PLli3o7u7GwMAAcrnckG0Zbcw+T41Go9FoNBOLMbecVRNPVpYrtYyZC5Sfb1Z+qPOtnnNRRvX39fWhs7MT//znP9Hb22v5fneUm1GLMI1Go9Fodh7G1YIAK/eiSq0ip5Y4s1qEDbdG8Rg52j9zw4YN2LJlC2Kx2KgtOqi1TdXaqmPONBqNRqOZeIwrcaZSi8CoJQ7N7JiVlcxqQQK38pVKJRSLReTzeQwMDKCnpwexWAy5XM5QrlwuD/t9qW0cSRmNRqPRaDQThzGNOUsmk+jr68O2bduwbds2ZLPZijIkdsrlMrLZLNLpNDKZDAqFgqEM/18ul5HP51EoFFAsFlEulw0xbarQoj8SU2p9quDKZrNIJBLYtm0b2tvbsW3bNqRSKQAwLBRQ34NVjJ3ZH9VjRS11aYbHX//6V8vP9KWXXqoo/8ILL+Cggw6C3+/H5MmTcdFFFyGZTFaUy+VyuPzyyzFlyhT4fD7Mnz8fTz/99Ki1e9myZXj00UdHrT7N2PLqq6/iggsuwNy5cxEIBDB9+nScdNJJWLdunWn59957D0cddRSCwSAaGxtx6qmnYuvWrRXlyuUybrzxRsycORNerxd77703HnjggVFr9+2334577rln1OrTjD921Bg5HF544QV8//vfRywWG5X6xgtjajlLp9Ow2+0yRxihCotyuYxMJgMA8Hg8coVkuVyW6SxIDBUKBZRKJRm0T8LLbrfD4XAA2B4vRtek46VSCUIIOJ3OCisbF01CCCQSCaTTaRQKBdkWh8NRYXkbSmQRVilAKMatGmbuWyurnaZ2LrroIuy///6GY7vvvrvh+ZtvvonDDjsMe+yxB37yk5+go6MDN910E9avX4/Vq1cbyi5ZsgSrVq3CJZdcgtmzZ+Oee+7Bl770JaxZswYHHXTQiNu7bNkynHDCCTjuuONGXJdm7Lnhhhvw/PPP48QTT8Tee++N7u5urFixAp/73Ofw0ksv4TOf+Yws29HRgUMOOQSRSATLli1DMpnETTfdhLfeeguvvPKKYSeT7373u/jxj3+Mb33rW9h///3x2GOP4etf/zpsNhtOPvnkEbf79ttvR3NzM5YsWTLiujTjm9EeI4fDCy+8gGuvvRZLlixBNBodcX3jBjEGDAwMCAAiEomIxsZGEYlEBAARCAREU1OTaGxslH8NDQ3C7XYLACIUColwOCxCoZDwer0CgHC73cLv9wufzyePORwO4ff75XG73S5sNpvwer2ynMPhEACEx+MRXq9XeDwe4XQ65flut1u4XC7hcrmE2+0WbrdbeDwe4fP5RENDg2htbRWTJk0SjY2NwufzyTJOp1M4nU5ht9sFAGG324XT6ZR10ev8Mf05HI5h/ZnVQe8ZgBgYGBiLr3nCsmbNGgFAPPTQQ0OWPfroo0VbW5vhM/7FL34hAIgnn3xSHnv55ZcFALF8+XJ5LJPJiN12200ccMABo9LuQCAgTj/99FGpSzP2PP/88yKXyxmOrVu3Tng8HvGNb3zDcPy8884TPp9PbNy4UR57+umnBQBx1113yWMdHR3C5XKJpUuXymPlclkcfPDBYtq0aaJYLI643XPnzhULFiwYcT2a8cuOGCOHy/LlywUAsWHDhhHXNZ4YE7emYFYismzR8XK5LC1bglnDXC6XwZpF1i2e6JXqcTq3GwRtNhucTqfBmiSEMFjXyCJGFjQqZ7fb5evcVVgsFpFIJLB161b09fVJNytdn7tIy+UyisUiCoWCdK/y4/RHVjtqH7WRjqvuV/Vzojg4XobXpxkeiUTCMplwPB7H008/jW9+85sIh8Py+GmnnYZgMIgHH3xQHlu1ahUcDgfOOecceczr9eKss87Ciy++iE2bNlVtx/r163H88cdj8uTJ8Hq9mDZtGk4++WQMDAwAGOznqVQK9957r+yr3HKxefNmnHnmmZg0aRI8Hg/mzp2LX//614ZrkKvi97//Pa666ipMnjwZgUAAX/nKVyraN1R7NCPnwAMPrNi7d/bs2Zg7dy7ee+89w/GHH34YX/7ylzF9+nR57PDDD8ecOXMM/fCxxx5DoVDA+eefL4/ZbDacd9556OjowIsvvli1Td3d3TjjjDMwbdo0eDwetLW14dhjj0V7ezsAYMaMGXjnnXfwv//7v7IffvGLX5Tnx2IxXHLJJdhll13g8Xiw++6744YbbjBY+tvb22Gz2XDTTTfhpz/9KXbddVf4fD4sWLAAb7/9dl3t0ex4RmuMtOK2227D3Llz4ff70dDQgM9//vP47//+bwDA97//fVx22WUAgJkzZ8o+x7//3/zmN9hvv/3g8/nQ2NiIk08+uWI8++IXv4jPfOYzeP3113HggQfC5/Nh5syZuPPOO+tqz2gyJm7NRCIBABUDeTqdtkzeWigUDK5PQghRcY5ZjjEAyOfzhuelUkm6S9U61bJDQQKpGlyImp1vJaJUF2W9oiuRSCASidRUVrOdM844A8lkEg6HAwcffDCWL1+Oz3/+8/L1t956C8Vi0XAMANxuN/bZZx+sXbtWHlu7di3mzJljGKAAYN68eQAGTf+77LKLaTvy+TwWLVqEXC6HCy+8EJMnT8bmzZvx+OOPIxaLIRKJ4P7778fZZ5+NefPmSQG42267AQC2bNmCf/u3f4PNZsMFF1yAlpYWrF69GmeddRbi8TguueQSw/Wuu+462Gw2XH755ejp6cEtt9yCww8/HG+++SZ8Pl9N7dHsGIQQ2LJlC+bOnSuPbd68GT09PRX9EBjsX3/+85/l87Vr1yIQCGCPPfaoKEevV3OxH3/88XjnnXdw4YUXYsaMGejp6cHTTz+Njz76CDNmzMAtt9yCCy+8EMFgEN/97ncBAJMmTQIwOL4vWLAAmzdvxrnnnovp06fjhRdewJVXXomuri7ccssthmvdd999SCQSWLp0KbLZLG699VYsXLgQb731lqxzqPZodiyjOUaa8Ytf/AIXXXQRTjjhBFx88cXIZrP4xz/+gZdffhlf//rX8dWvfhXr1q3DAw88gJ/+9Kdobm4GALS0tAAYHMuuvvpqnHTSSTj77LOxdetW3HbbbTjkkEOwdu1agxu0v78fX/rSl3DSSSfhlFNOwYMPPojzzjsPbrcbZ555Zk3tGVU+Nhsdo1QqiU2bNolYLCYGBgakifT2228XAwMDhj967a677qp47aKLLhIARE9PjxgYGBCLFi0SM2bMqCjX1dUlAIj//M//rLtOs7/zzjtPhMNh0dfXZ1nm3nvvFQDE448/bji+efNmEYlExOmnn244vn79+orjX//61wUAce6558pjsVhMLFq0SLjdbvHhhx9WbU8sFhObNm0SpVJpLL7mCcvzzz8vjj/+ePGrX/1KPPbYY+L6668XTU1Nwuv1ijfeeEOWe+ihhwQA8be//a2ijhNPPFFMnjxZPp87d65YuHBhRbl33nlHABB33nmnZXvWrl1bkwvByq151llniba2NtHb22s4fvLJJ4tIJCLS6bQQYrurYurUqSIej8tyDz74oAAgbr311rraoxl97r//fgFA/OpXv5LHXn31VQFA3HfffRXlL7vsMgFAZLNZIYQQxxxzjJg1a1ZFuVQqJQCIK664wvLa/f39Fa55M6zcmj/84Q9FIBAQ69atMxy/4oorhMPhEB999JEQQogNGzYIAMLn84mOjg5ZjkID/vM//7Ou9mhGnx0xRppx7LHHirlz51YtY+XWbG9vFw6HQ1x33XWG42+99ZZwOp2G4wsWLBAAxM033yyP5XI5sc8++4jW1laRz+drbs9oMSZuTbvdjmnTpiESiSAcDiMYDAIAfD4fwuGw4Y9cjdFotOI1ukN3uVwIh8MoFAqmdbS2tgIYtEDVW6fZX2trK1KpFF5++WXLMn6/HwAQCAQMx19++WUMDAzg9NNPl9s+5fN5RKNRzJ8/H88//7ws63K5AADf/va3De275JJLkM/n5fWt2hOJRDBt2rSaFhVotnPggQdi1apVOPPMM/GVr3wFV1xxBV566SXYbDZceeWVshxfpKLi9XoNVtlMJmNZjtdlBvXJJ598su5twYQQePjhh7F48WIIIdDb2yv/Fi1ahIGBAbzxxhuGc0477TSEQiH5/IQTTkBbW5u0wIykPZrh889//hNLly7FAQccgNNPP10eH6of8jIj6Yc+nw9utxt//etf0d/fX3f7H3roIRx88MFoaGgw9MPDDz8cpVIJf/vb3wzljzvuOEydOlU+nzdvHubPny/74Ujboxk+O2KMNCMajaKjowOvvvpq3W185JFHUC6XcdJJJxn62+TJkzF79mysWbPGUN7pdOLcc8+Vz91uN84991z09PTg9ddfH3F76mXcz9o+nw+AuauSUm9QGZ/PV3O5Wus04/zzz8ecOXNw9NFHY9q0aTjzzDPxxBNP1PR+1q9fDwBYuHAhWlpaDH9PPfUUenp6DOXtdjtmzZplODZnzhwAkH71kbRHUxu77747jj32WKxZs0a6pofqR7wP1do3zZg5cya+/e1v45e//CWam5uxaNEi/PznP68pvmvr1q2IxWK4++67K/rbGWecAQAVfW727NmG5zabDbvvvrvsbyNpj2Z4dHd345hjjkEkEpHxi8SOGCPN8Hg8uOGGG7B69WpMmjQJhxxyCG688UZ0d3fX9B7Wr1+PJ554oqIfHn744QCG7ofA4NhH/XCk7dGMLiMdI824/PLLEQwGMW/ePMyePRtLly7F888/X1N71q9fDyEEZs+eXdHn3nvvvYr+NmXKFAQCAcMxda4dSXvqZVwnoQWAtrY2AEBXV1fFa11dXWhsbJSqvK2tDWvWrKnYeonOnTJlSt11mtHa2oo333wTTz75JFavXo3Vq1dj5cqVOO2003DvvfdWfT8UP3b//fdj8uTJFa/zxQy1MpL2aGpnl112QT6fRyqVQjgcHrIfUX8DBvvc5s2bTcsBMJQ14+abb8aSJUvw2GOP4amnnsJFF12E66+/Hi+99BKmTZtmeR71t29+85sGawtn7733rnrt0WyPpn4GBgZw9NFHIxaL4bnnnqvoKztijLTikksuweLFi/Hoo4/iySefxNVXX43rr78ezz77LPbdd9+q55bLZRxxxBH4zne+Y/o6TYT1MJL2aEafkYyRZuyxxx7417/+hccffxxPPPEEHn74Ydx+++343ve+h2uvvbbqubQAb/Xq1YabGYI8dvUwkvbUzcfiPB0CiplYuXKl6estLS3ixBNPrDg+Z84cQxzPihUrBADxzjvvGMr99re/rfB711pnLZRKJXHuuecKAGL9+vVCCCFWrVolAIg1a9YYylL8Ti1LiE8//XQBQPzrX/8yHF+9erUAIB544IGa26MZOccff7zwer0yhi8Wiwmn0ykuu+wyQ7lcLieCwaA488wz5bFLL71UOByOirQm1113nQAg421q5fnnnxcAxHe/+115LBgMVsScFYtFEQqFxCmnnDJknRRzduWVVxqOl8tl0dbWJhYtWlRXezQjJ5PJiIMPPlj4/X7xwgsvWJbbEWNkLaxbt074/X5Dao/PfOYzpjFne+65Z01pYyjmzKzPzp8/X3zqU5+qqz2aj4+RjJG1kMvlxDHHHCMcDofIZDJCCCFuuukm05izG2+80XT+NGPBggXC6XSKZDJpOH7HHXcIAOLFF1+suT2jxbh3awKDK3Ief/xxw/LXv/zlL1i3bh1OPPFEeezYY4+Fy+XC7bffLo8JIXDnnXdi6tSpOPDAA+uu04xt27YZntvtdml9IPMtmUfVrMWLFi1COBzGsmXLTFefmmX0XrFiheH9rFixAi6XC4cddljN7dHUjtl38Pe//x1//OMfceSRR8oYvkgkgsMPPxy/+c1v5ApkYNAqmkwmDf3ohBNOQKlUwt133y2P5XI5rFy5EvPnz7dcqQkMLkdXl6rvtddesNvthu83EAhU9DeHw4Hjjz8eDz/8cEUaAqv3SqvkiFWrVqGrqwtHH310Xe3RjIxSqYSvfe1rePHFF/HQQw/hgAMOsCy7I8ZIlXQ6XbGLy2677YZQKDRkPwSAk046CS+++CKefPLJitdisVhFn3r00UcN1uZXXnkFL7/8suyHtbZHM/rsiDHSDHVuc7vd2HPPPQ1J5K3m2q9+9atwOBy49tprKzIbCCEq6i4Wi7jrrrvk83w+j7vuugstLS3Yb7/9am7PaDGmbs0VK1YgFouhs7MTAPA///M/6OjoAABceOGFMvD4qquuwkMPPYRDDz0UF198MZLJJJYvX4699tpLxs0AwLRp03DJJZdg+fLlKBQK2H///fHoo4/iueeew29/+1uDabPWOs04++yz0dfXh4ULF2LatGnYuHEjbrvtNuyzzz5yifo+++wDh8OBG264AQMDA/B4PFi4cCFaW1txxx134NRTT8XnPvc5nHzyyWhpacFHH32EP/3pT/jCF75gEGNerxdPPPEETj/9dMyfPx+rV6/Gn/70J1x11VVyuXAt7dHUzte+9jX4fD4ceOCBaG1txbvvvou7774bfr8fP/7xjw1lr7vuOhx44IFYsGABzjnnHHR0dODmm2/GkUceiaOOOkqWmz9/Pk488URceeWV6Onpwe677457770X7e3t+NWvflW1Pc8++ywuuOACnHjiiZgzZw6KxSLuv/9+KbyI/fbbD8888wx+8pOfYMqUKZg5cybmz5+PH//4x1izZg3mz5+Pb33rW9hzzz3R19eHN954A8888wz6+voM12tsbMRBBx2EM844A1u2bMEtt9yC3XffHd/61rfqao9mZPy///f/8Mc//hGLFy9GX18ffvOb3xhe/+Y3vykf74gxUmXdunU47LDDcNJJJ2HPPfeE0+nEH/7wB2zZssWws8B+++2HO+64Az/60Y+w++67o7W1FQsXLsRll12GP/7xj/jyl7+MJUuWYL/99kMqlcJbb72FVatWob29XaZCAAZjmA466CCcd955yOVyuOWWW9DU1CTdorW2RzP67Igx0owjjzwSkydPxhe+8AVMmjQJ7733HlasWIFjjjlGLloi4fTd734XJ598MlwuFxYvXozddtsNP/rRj3DllVeivb0dxx13HEKhEDZs2IA//OEPOOecc3DppZfKa02ZMgU33HAD2tvbMWfOHPz+97/Hm2++ibvvvlsuzqulPaPGqNrh6mTXXXcVAEz/VBPl22+/LY488kjh9/tFNBoV3/jGN0R3d3dFnaVSSSxbtkzsuuuuwu12i7lz54rf/OY3ptevtU6VVatWiSOPPFK0trYKt9stpk+fLs4991zR1dVlKPeLX/xCzJo1S+5GwF2ca9asEYsWLRKRSER4vV6x2267iSVLlojXXntNljn99NNFIBAQH3zwgWznpEmTxDXXXGNIj1FrezS1ceutt4p58+aJxsZG4XQ6RVtbm/jmN79p6SJ+7rnnxIEHHii8Xq9oaWkRS5cuNaSiIDKZjLj00kvF5MmThcfjEfvvv7944oknhmzPhx9+KM4880yx2267Ca/XKxobG8Whhx4qnnnmGUO5f/7zn+KQQw4RPp9PADC4OLds2SKWLl0qdtllF+FyucTkyZPFYYcdJu6++25ZhtyaDzzwgLjyyitFa2ur8Pl84phjjjFknq+1PZqRQcv7rf5UdsQYyent7RVLly4Vn/70p0UgEBCRSETMnz9fPPjgg4Zy3d3d4phjjhGhUEgA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yy4zHM/lciIYDIqzzjpLHrvsssuEw+EQAwMDhrLLli0TAMRHH31UtU3r1q0TX/3qV8WkSZOEx+MRU6dOFV/72tdELBYTQgjT7/3000+X53d0dIgzzjhDtLa2CrfbLfbcc0/xq1/9yvR9/+53vxNXXnmlmDRpkvD7/WLx4sUV7RuqPZodx+c+9znxuc99znCstbVVnHjiiRVl58yZIw477DD5/Oc//7kAIN555x1Duf/+7/8WAMRzzz1X9dpdXV1iyZIlYurUqcLtdovJkyeLr3zlK2LDhg1CCCF23XXXin64YMECeX5/f7+4+OKLxbRp04Tb7Ra77bab+PGPfyxKpZIss2HDBgFALF++XPzkJz8R06dPF16vVxxyyCHirbfeqqs9mh3DjhgjrfjZz34m9txzT+Hz+UQ0GhX77bef+O1vfyuEEOKaa64xHfv493///feLz33uc8Lr9YqGhgbxta99rWI8W7BggZg7d6547bXXxAEHHCC8Xq+YMWOGuOOOO+pqz2gyJpazKVOmYNOmTQiFQrDZbHjjjTdw6KGH4vbbb8c3vvENQ9nOzk7sscceuPbaa3HJJZcYXjvnnHPw1FNPob29HQBw4YUX4uGHH8bmzZsNd1sffvgh9t13X9x4440499xz66rTjGeffRb//u//jgULFmDx4sUAgHXr1qGnpwf33nsvNmzYgDvvvBN33nkn/t//+3/41Kc+BQA49NBD0drait/97nf4j//4Dxx22GFYtGgR0uk0fvWrX2FgYADPPfccdt11VwDAeeedh0ceeQRTp07F/vvvj89//vN45pln8MQTT+A73/kOvvvd7w7Znttuuw1Tpkyp6/vRDHLGGWcgmUzC4XDg4IMPxvLly/H5z39evv7WW2+hWCwajgGDsZP77LMP1q5dK4+tXbsWc+bMQTgcNpSdN28eAODNN9/ELrvsYtqOfD6PRYsWIZfL4cILL8TkyZOxefNmPP7444jFYohEIrj//vtx9tlnY968eTjnnHMADLplAWDLli34t3/7N9hsNlxwwQVoaWnB6tWrcdZZZyEej1f8Bq677jrYbDZcfvnl6OnpwS233ILDDz8cb775Jnw+X03t0ewYhBDYsmUL5s6dK49t3rwZPT09Ff0QGOxff/7zn+XztWvXIhAIYI899qgoR68fdNBBltc//vjj8c477+DCCy/EjBkz0NPTg6effhofffQRZsyYgVtuuQUXXnghgsGgHJ8mTZoEYNCqu2DBAmzevBnnnnsupk+fjhdeeAFXXnklurq6cMsttxiudd999yGRSGDp0qXIZrO49dZbsXDhQrz11luyzqHao9mxjOYYacYvfvELXHTRRTjhhBNw8cUXI5vN4h//+AdefvllfP3rX8dXv/pVrFu3Dg888AB++tOform5GQDQ0tICYHAsu/rqq3HSSSfh7LPPxtatW3HbbbfhkEMOwdq1axGNRuW1+vv78aUvfQknnXQSTjnlFDz44IM477zz4Ha7ceaZZ9bUnlFl1OXeMHj11VcFALFy5UrL1+67776K1y677DIBQGSzWSGEEMccc4yYNWtWRblUKiUAiCuuuKLuOs24+OKLRTgcFsVi0bLMQw89JACINWvWGI4nEgkRjUbFt771LcPx7u5uEYlEDMdPP/10AUBceOGF8li5XBbHHHOMcLvdYuvWrTW3R1M7zz//vDj++OPFr371K/HYY4+J66+/XjQ1NQmv1yveeOMNWY6+47/97W8VdZx44oli8uTJ8vncuXPFwoULK8q98847AoC48847Lduzdu1aeZdajUAgYLCWEWeddZZoa2sTvb29huMnn3yyiEQiIp1OCyG23w1PnTpVxONxWe7BBx8UAMStt95aV3s0o8/9998vABisnjtijDSjv79fWrSqMXfuXIO1jPjhD38oAoGAWLduneH4FVdcIRwOh7RmkOXM5/OJjo4OWe7ll18WAMR//ud/1tUezeizI8ZIM4499lgxd+7cqmWWL19eYS0TQoj29nbhcDjEddddZzj+1ltvCafTaTi+YMECAUDcfPPN8lgulxP77LOPaG1tFfl8vub2jBbjPjskD3JV8Xq9hjKZTKbmcrXWaUY0GkUqlcLTTz9d8/sgnn76acRiMZxyyino7e2Vfw6HA/Pnz8eaNWsqzrngggvkY7J+5PN5PPPMMyNuj6aSAw88EKtWrcKZZ56Jr3zlK7jiiivw0ksvwWaz4corr5TlhupHvA/V2jfNIEvUk08+iXQ6Xdd7EULg4YcfxuLFiyGEMPS5RYsWYWBgAG+88YbhnNNOOw2hUEg+P+GEE9DW1iYtMCNpj2b4/POf/8TSpUtxwAEH4PTTT5fHd8QYaYbP54Pb7cZf//pX9Pf3193+hx56CAcffDAaGhoM/fDwww9HqVTC3/72N0P54447DlOnTpXP582bh/nz58t+ONL2aIbPjhgjzYhGo+jo6MCrr75adxsfeeQRlMtlnHTSSYb+NnnyZMyePbtirnU6nTj33HPlc7fbjXPPPRc9PT14/fXXR9yeehn34szn8wGAaeA/rb6hMj6fr+ZytdZpxvnnn485c+bg6KOPxrRp03DmmWfiiSeeqOn9rF+/HgCwcOFCtLS0GP6eeuop9PT0GMrb7XbMmjXLcGzOnDkAIF2vI2mPpjZ23313HHvssVizZo1cJDBUP+J9qNa+acbMmTPx7W9/G7/85S/R3NyMRYsW4ec//zkGBgaGbPfWrVsRi8Vw9913V/S3M844AwAq+tzs2bMNz202G3bffXfZ30bSHs3w6O7uxjHHHINIJIJVq1YZUgPtiDHSDI/HgxtuuAGrV6/GpEmTcMghh+DGG28cMvCfWL9+PZ544omKfnj44YcDGLofAoNjH/XDkbZHM7qMdIw04/LLL0cwGMS8efMwe/ZsLF26FM8//3xN7Vm/fj2EEJg9e3ZFn3vvvfcq+tuUKVPkymZCnWtH0p56GdNUGrXQ1tYGAOjq6qp4raurC42NjVKVt7W1Yc2aNRVpJ+hcir2qp04zWltb8eabb+LJJ5/E6tWrsXr1aqxcuRKnnXYa7r333qrvh1Y63X///Zg8eXLF67Sqqh5G0h5N7eyyyy7I5/NIpVIIh8ND9iMe69fW1maac07tm1bcfPPNWLJkCR577DE89dRTuOiii3D99dfjpZdewrRp0yzPo/72zW9+02Bt4ey9995Vrz2a7dHUz8DAAI4++mjEYjE899xzFX1lR4yRVlxyySVYvHgxHn30UTz55JO4+uqrcf311+PZZ5/FvvvuW/XccrmMI444At/5zndMX6eJsB5G0h7N6DOSMdKMPfbYA//617/w+OOP44knnsDDDz+M22+/Hd/73vdw7bXXVj2XVvCuXr3aNM9pMBis452NvD1187E4T4egWsyZEEK0tLRYrkTicTwrVqwwXYn029/+tsLvXWudtVAqlcS5554rAIj169cLIYRYtWqVacwZxe88+eSTQ9ZLMWf/+te/DMdXr14tAIgHHnig5vZoRs7xxx8vvF6vXFkWi8WqrkQ688wz5bFLL73UdLXmddddV9NqTZXnn39eABDf/e535bFgMFgRc1YsFkUoFBKnnHLKkHVSzNmVV15pOF4ul0VbW5tYtGhRXe3RjJxMJiMOPvhg4ff7xQsvvGBZbkeMkbWwbt064ff7xTe+8Q157DOf+YxpzNmee+4pDjjggCHrpJgzsz47f/588alPfaqu9mg+PkYyRtZCLpcTxxxzjHA4HCKTyQghhLjppptMY85uvPFG0/nTjAULFgin0ymSyaTh+B133CEAiBdffLHm9owW496tCQyuyHn88cexadMmeewvf/kL1q1bhxNPPFEeO/bYY+FyuXD77bfLY0II3HnnnZg6dSoOPPDAuus0Y9u2bYbndrtdWh/IfEvmUcqZRSxatAjhcBjLli0zzbuzdevWimMrVqwwvJ8VK1bA5XLhsMMOq7k9mtox+w7+/ve/449//COOPPJImV8pEong8MMPx29+8xuZuBYYtIomk0lDPzrhhBNQKpVw9913y2O5XA4rV67E/PnzLVdqAoNJb3l+PwDYa6+9YLfbDd9vIBCo6G8OhwPHH388Hn74Ybz99ts1vVdaJUesWrUKXV1dOProo+tqj2ZklEolfO1rX8OLL76Ihx56CAcccIBl2R0xRqqk0+mKRK677bYbQqHQkP0QAE466SS8+OKLePLJJytei8ViFX3q0UcfNVibX3nlFbz88suyH9baHs3osyPGSDPUuc3tdmPPPfeUuf0A67n2q1/9KhwOB6699lrTrcLUuovFIu666y75PJ/P46677kJLSwv222+/mtszWoypW3PFihWIxWLo7OwEAPzP//wPOjo6AAymxaDA46uuuur/t3fmsZGedx3/zuW5b3t87G4220SlpKWqiJqV0iWQpARECKpEC0FNSSC9UECtRKo2HG2hYWlIixK1kJKWrJoWIUigEKmiSBEBtUQVINSmSbvZw2t7fY7Hc9/Xyx/L99lnXs/Y89oz9tj7+0jWru3xO+N5v/49v+d3PXjuuedw++234yMf+QiKxSIef/xx/MRP/ISqmwGAo0eP4qMf/Sgef/xxNBoNvP3tb8c//dM/4dvf/jb+5m/+piO02e81u/H+978f6XQad9xxB44ePYr5+Xl84QtfwNve9jbVov62t70NDocDjz32GHK5HNxuN+644w4kEgk89dRTeN/73oef/MmfxL333ouJiQksLCzgm9/8Jt7xjnd0OGMejwff+ta3cP/99+PkyZP4l3/5F3zzm9/E7/3e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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Epoch 60: 100%|█████████████████████████████████████████████████████████| 63/63 [00:43<00:00, 1.44it/s, loss=0.0445]\n",
- "Epoch 61: 100%|█████████████████████████████████████████████████████████| 63/63 [00:51<00:00, 1.23it/s, loss=0.0445]\n",
- "Epoch 62: 100%|█████████████████████████████████████████████████████████| 63/63 [00:47<00:00, 1.33it/s, loss=0.0449]\n",
- "Epoch 63: 100%|█████████████████████████████████████████████████████████| 63/63 [00:49<00:00, 1.28it/s, loss=0.0441]\n",
- "Epoch 64: 100%|█████████████████████████████████████████████████████████| 63/63 [00:50<00:00, 1.26it/s, loss=0.0447]\n",
- "Epoch 65: 100%|█████████████████████████████████████████████████████████| 63/63 [00:47<00:00, 1.32it/s, loss=0.0438]\n",
- "Epoch 66: 100%|█████████████████████████████████████████████████████████| 63/63 [00:49<00:00, 1.27it/s, loss=0.0427]\n",
- "Epoch 67: 100%|█████████████████████████████████████████████████████████| 63/63 [00:48<00:00, 1.31it/s, loss=0.0439]\n",
- "Epoch 68: 100%|█████████████████████████████████████████████████████████| 63/63 [00:50<00:00, 1.26it/s, loss=0.0442]\n",
- "Epoch 69: 100%|█████████████████████████████████████████████████████████| 63/63 [00:49<00:00, 1.28it/s, loss=0.0447]\n",
- "Epoch 69 - Validation set: 100%|████████████████████████████████████| 63/63 [00:17<00:00, 3.54it/s, val_loss=0.0458]\n",
- "100%|███████████████████████████████████████████████████████████████████████████| 1000/1000 [00:06<00:00, 152.06it/s]\n",
- "100%|███████████████████████████████████████████████████████████████████████████| 1000/1000 [00:06<00:00, 158.13it/s]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████| 500/500 [00:03<00:00, 159.44it/s]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████| 200/200 [00:01<00:00, 159.63it/s]\n",
- "100%|███████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<00:00, 159.22it/s]\n",
- "100%|███████████████████████████████████████████████████████████████████████████| 1000/1000 [00:06<00:00, 159.70it/s]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████| 500/500 [00:03<00:00, 160.63it/s]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████| 200/200 [00:01<00:00, 160.08it/s]\n",
- "100%|███████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<00:00, 160.78it/s]\n"
- ]
- },
- {
- "data": {
- "image/png": "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hHnz5qGsrAzbtm3D448/DrPZjPvvvz+t7X333Yd58+Zh4cKFuOaaa9DZ2Ymf//znOPXUU3HaaaexdnPmzMG5556LO+64A/39/WhsbMRTTz2F1tZW/M///E/W/rz33nu44YYbcO6556KpqQmJRALPPPMME17ErFmz8O677+IXv/gFqqqq0NDQgDlz5uD+++/HqlWrMGfOHHznO9/B1KlTMTw8jPXr1+Pdd9/F8PBw2v6Kioowf/58XHHFFejr68PDDz+MxsZGfOc73ymoP4L94//9v/+Hv//97zjzzDMxPDyclnQWGHFVEwdjjJSza9cunHTSSTjvvPMwdepUaLVa/O1vf0NfX19aZYFZs2bh0UcfxU9+8hM0NjairKwMixcvxq233oq///3vOOOMM7B8+XLMmjULwWAQmzdvxssvv4zW1laWCgEYiWGaP38+rrvuOkSjUTz88MMoLi5mbtF8+yM48ByMMVKJU089FRUVFTj++ONRXl6O7du345FHHsHpp5/OJi2RcPrBD36ACy64ADqdDmeeeSYmTJiAn/zkJ7jjjjvQ2tqKZcuWwWazoaWlBX/7299wzTXXsITgwIhL/4EHHkBrayuamprw5z//GRs3bsTjjz/OJufl058DxgG1wxWIUsJCeslNlFu2bJFOPfVUyWw2S06nU7r44oul3t7eUdtMJpPSihUrpLq6Okmv10vTpk2T/vSnPynuP99tynn55ZelU089lSX0HDdunHTttddKPT09ae3+8Ic/SOPHj2dJdnkX56pVq6QlS5ZIDodDMhqN0oQJE6Tly5dLa9euZW0uv/xyyWKxSHv27GH9LC8vl+6+++609Bj59keQH7/61a+k2bNnS0VFRZJWq5UqKyulSy65JKOL+MMPP5TmzZsnGY1GqbS0VLr++uvTUlEQ4XBYuuWWW6SKigrJYDBIxx57rPTmm2/m7M/evXulK6+8UpowYYJkNBqloqIiadGiRdK7776b1m7Hjh3SggULJJPJNCoJbV9fn3T99ddLtbW1kk6nkyoqKqSTTjpJevzxx1kbcms+//zz0h133CGVlZVJJpNJOv3006W2traC+yPYP2h6f6aXnIMxRvIMDg5K119/vTR58mSWUHvOnDnSiy++mNaut7dXOv300yWbzTYqCa3f75fuuOMOqbGxUdLr9VJJSYk0b9486Wc/+xlLV8An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q/bjM/75z3++qo1XvvKV1vDwsPp+0kknWZdccsmq/R555BELgPXZz37WsT/33XefslLdkEgkbN4y4k1vepO1YcMGa3Z21rb9Na95jZXJZKxKpWJZ1oo1vGnTJqtQKKj9/u3f/s0CYH3iE5/oqD8+1h9f/epXLQA2r+eRkJEmLCwsKI+WG0466SSbt4z427/9WyuRSFh79uyxbX/f+95nBYNB5c2g5ywWi1mjo6Nqv1/96lcWAOt//+//3VF/fKw/joSMNOElL3mJddJJJ7nuc911163yllmWZR04cMAKBoPWBz7wAdv2hx56yAqFQrbtF110kQXA+tjHPqa21et16/TTT7cGBwetRqPhuT/rhWd8gSwmhOrTp4HlhE+5T7Va9byf1zZNyGazKJfL+M///E/P10H853/+J3K5HF772tdidnZW/QWDQZx77rm4/fbbVx3zx3/8x+ozvR+NRgO33nrrYffHx2qcf/75uOGGG/DGN74Rv/d7v4f3ve99uOuuuxAIBHDttdeq/drxSHLIKzdNoCfqlltuUcveeIVlWfjOd76DK6+8EpZl2Th3+eWXI5/P495777Ud8wd/8AdIpVLq+yte8Qps2LBBeWAOpz8+1o7HH38cb3/723Heeefh6quvVtuPhIw0IRaLIRKJ4Kc//amq0t8Jvv3tb+N5z3ueWuuSf5deeimWlpZshWkB4KUvfSk2bdqkvp9zzjk499xzFQ8Ptz8+1o4jISNNyGazGB0dxd13391xH7/73e+i1WrhVa96lY1vw8PD2LVr16qxNhQK4a1vfav6HolE8Na3vhXT09P4zW9+c9j96RTPeOWMM41MU/I5A4f7xGIxz/t5bdOE//W//heOO+44vOhFL8LmzZvxxje+ETfffLOn63nyyScBAJdccgkGBgZsfz/+8Y9XJc12dXXh2GOPtW077rjjAECFXg+nPz68YefOnXjJS16C22+/XSVkt+OR5JBXbppwzDHH4P/8n/+DL3zhC+jv78fll1+Of/7nf0Y+n2/b75mZGeRyOXzuc59bxbc3vOENALCKc7t27bJ9DwQC2Llzp+Lb4fTHx9owOTmJK664AplMBjfccIOtDMGRkJEmdHd34yMf+QhuuukmDA0N4cILL8RHP/pRVRetHZ588kncfPPNq3h46aWXAmjPQ2BZ9pGHh9sfH+uLw5WRJrz3ve9FMpnEOeecg127duHtb387fvGLX3jqz5NPPgnLsrBr165VnHvsscdW8W3jxo2q5iWhj7WH059O8YxfV4VLbpjqTk1MTKC3t1dp5Rs2bMDtt9++qh4Jj2XuVSdtmjA4OIj7778ft9xyC2666SbcdNNNuP766/EHf/AH+PKXv+x6PZzl8tWvftVWr4hYy1I3h9MfH96xZcsWNXMunU635ZHM9duwYQPGxsaM+wFomxf4sY99DNdccw2+//3v48c//jH+5E/+BB/60Idw1113YfPmzY7HkW+vf/3rbd4WiVNPPdX13OvZHx+dI5/P40UvehFyuRzuuOOOVVw5EjLSCe9617tw5ZVX4nvf+x5uueUW/OVf/iU+9KEP4Sc/+QnOOOMM12NbrRZ+93d/F3/2Z39m/J0DYSc4nP74WH8cjow04cQTT8QTTzyBH/7wh7j55pvxne98B5/+9KfxV3/1V3j/+9/veixnnN50003G1SFMq0i0w+H0p2M8LcHTNnDLObMsyxoYGHCciSTzeD71qU8ZZyJ9/etfXxX39tqmFywtLVlvfetbLQDWk08+aVmWZd1www3GnDPm79xyyy1t22XO2RNPPGHbftNNN1kArG984xue++Pj8HHVVVdZ0WhUzSzL5XKuM5He+MY3qm3vfve7jbM1P/CBD3iaranjF7/4hQXA+ou/+Au1LZlMrso5azabViqVsl772te2bZM5Z9dee61te6vVsjZs2GBdfvnlHfXHx+GjWq1az3ve86x4PG7deeedjvsdCRnpBXv27LHi8bj1ute9Tm07+eSTjTlnu3fvts4777y2bTLnzMTZc8891zr++OM76o+Ppw+HIyO9oF6vW1dccYUVDAatarVqWZZl/f3f/70x5+yjH/2ocfw04aKLLrJCoZBVKpVs2z/zmc9YAKxf/vKXnvuzXnjGhzWB5Rk5P/zhD1VFawC47bbbsGfPHrzyla9U217ykpcgHA7j05/+tNpmWRY++9nPYtOmTTj//PM7btMEWXUbWA490vtA9y3do3rNqcsvvxzpdBof/OAHjfWfTLV4PvWpT9mu51Of+hTC4TBe8IIXeO6PD+8wPYMHHngAP/jBD3DZZZepuj6ZTAaXXnopvva1r9lq6H31q19FqVSy8egVr3gFlpaW8LnPfU5tq9fruP7663Huuec6ztQElgt16gWFTznlFHR1ddmebyKRWMW3YDCIq666Ct/5znfw8MMPe7pWzpIjbrjhBkxMTOBFL3pRR/3xcXhYWlrCq1/9avzyl7/Et7/9bZx33nmO+x4JGamjUqmsKua6Y8cOpFKptjwEgFe96lX45S9/iVtuuWXVb1zRReJ73/uezdv861//Gr/61a8UD732x8f640jISBP0sS0SiWD37t2wLEuNn05j7ctf/nIEg0G8//3vN9ZG09tuNpv4l3/5F/W90WjgX/7lXzAwMICzzjrLc3/WC0c1rPmpT30KuVxOVbz+93//d7X+2Tve8Q6VePznf/7n+Pa3v42LL74Y73znO1EqlXDdddfhlFNOUXkzALB582a8613vwnXXXYfFxUWcffbZ+N73voc77rgDX//6122uTa9tmvDmN78Z8/PzuOSSS7B582YcPHgQn/zkJ3H66aerKeqnn346gsEgPvKRjyCfz6O7uxuXXHIJBgcH8ZnPfAa///u/jzPPPBOvec1rMDAwgEOHDuFHP/oRfud3fsemjEWjUdx88824+uqrce655+Kmm27Cj370I/z5n/+5mi7spT8+vOPVr341YrEYzj//fAwODuLRRx/F5z73OcTjcXz4wx+27fuBD3wA559/Pi666CK85S1vwejoKD72sY/hsssuwwtf+EK137nnnotXvvKVuPbaazE9PY2dO3fiy1/+Mg4cOIAvfvGLrv35yU9+gj/+4z/GK1/5Shx33HFoNpv46le/qhQv4qyzzsKtt96Kf/iHf8DGjRtxzDHH4Nxzz8WHP/xh3H777Tj33HPxh3/4h9i9ezfm5+dx77334tZbb8X8/LztfL29vbjgggvwhje8AVNTU/j4xz+OnTt34g//8A876o+Pw8Of/umf4gc/+AGuvPJKzM/P42tf+5rt99e//vXq85GQkTr27NmDF7zgBXjVq16F3bt3IxQK4cYbb8TU1BRe85rXqP3OOussfOYzn8Hf/d3fYefOnRgcHMQll1yC97znPfjBD36A//E//geuueYanHXWWSiXy3jooYdwww034MCBA6oUArCcw3TBBRfgj/7oj1Cv1/Hxj38cfX19KizqtT8+1h9HQkaacNlll2F4eBi/8zu/g6GhITz22GP41Kc+hSuuuEJNWqLi9Bd/8Rd4zWteg3A4jCuvvBI7duzA3/3d3+Haa6/FgQMH8NKXvhSpVAr79+/H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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Epoch 70: 100%|█████████████████████████████████████████████████████████| 63/63 [00:43<00:00, 1.46it/s, loss=0.0438]\n",
- "Epoch 71: 100%|█████████████████████████████████████████████████████████| 63/63 [00:49<00:00, 1.27it/s, loss=0.0438]\n",
- "Epoch 72: 100%|█████████████████████████████████████████████████████████| 63/63 [00:47<00:00, 1.31it/s, loss=0.0433]\n",
- "Epoch 73: 100%|█████████████████████████████████████████████████████████| 63/63 [00:49<00:00, 1.27it/s, loss=0.0444]\n",
- "Epoch 74: 100%|█████████████████████████████████████████████████████████| 63/63 [00:50<00:00, 1.25it/s, loss=0.0444]\n",
- "Epoch 75: 100%|█████████████████████████████████████████████████████████| 63/63 [00:49<00:00, 1.26it/s, loss=0.0426]\n",
- "Epoch 76: 100%|█████████████████████████████████████████████████████████| 63/63 [00:47<00:00, 1.33it/s, loss=0.0437]\n",
- "Epoch 77: 100%|█████████████████████████████████████████████████████████| 63/63 [00:50<00:00, 1.26it/s, loss=0.0442]\n",
- "Epoch 78: 100%|█████████████████████████████████████████████████████████| 63/63 [00:50<00:00, 1.26it/s, loss=0.0444]\n",
- "Epoch 79: 100%|█████████████████████████████████████████████████████████| 63/63 [00:47<00:00, 1.33it/s, loss=0.0441]\n",
- "Epoch 79 - Validation set: 100%|████████████████████████████████████| 63/63 [00:16<00:00, 3.93it/s, val_loss=0.0446]\n",
- "100%|███████████████████████████████████████████████████████████████████████████| 1000/1000 [00:06<00:00, 149.91it/s]\n",
- "100%|███████████████████████████████████████████████████████████████████████████| 1000/1000 [00:06<00:00, 156.57it/s]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████| 500/500 [00:03<00:00, 158.27it/s]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████| 200/200 [00:01<00:00, 158.86it/s]\n",
- "100%|███████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<00:00, 157.95it/s]\n",
- "100%|███████████████████████████████████████████████████████████████████████████| 1000/1000 [00:06<00:00, 158.99it/s]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████| 500/500 [00:03<00:00, 157.99it/s]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████| 200/200 [00:01<00:00, 155.58it/s]\n",
- "100%|███████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<00:00, 154.60it/s]\n"
- ]
- },
- {
- "data": {
- "image/png": "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64enn346gPz9EBga+0g/PNj2cA4tBztGSnHnnXfCarVi5syZGDduHG666SasWrWqoPbs3r0bgiBg3Lhxw/rc9u3bh/W3yspKWCyWnG3ie+3BtKdYRjwJbT4qKioAAF1dXcP2dXV1we12U1VeUVGBFStWDEsmS46trKwsuk4pysrKsHHjRixbtgxLly7F0qVL8cwzz+CKK67As88+q3g9JPD1+eefh9frHbafTfdRKAfTHk7h1NTUIJlMIhKJwG635+1HpL8BQ31OKqZQ3DflePDBB3HVVVfhjTfewLvvvotbb70Vv/nNb/DZZ5+hurpa9jjS37797W/nWFtYpk2bpnjuQ9keTvEEAgGcddZZ8Pv9+Oijj4b1lcMxRsrx/e9/HwsXLsTrr7+OZcuW4d5778VvfvMbfPDBBzj66KMVj81mszjjjDPwox/9SHI/uREWw8G0h3PoOZgxUoqJEydi586deOutt/DOO+/g1VdfxeOPP46f/vSn+PnPf654LJk4uHTpUskZyMRjVwwH056i+Y84T/NAYiaeeeYZyf2lpaXCxRdfPGx7U1NTThzPY489JgAQtm7dmlPur3/96zC/d6F1FkImkxGuv/56AYCwe/duQRAE4ZVXXhEACCtWrMgpS+J3li1blrfeK6+8UgAg7Ny5M2f70qVLBQDCiy++WHB7OAfPhRdeKBiNRhrD5/f7Ba1WK9xxxx055RKJhGC1WoWrr76abrv99tsFjUYjBAKBnLK//vWvBQA03qZQVq1aJQAQfvzjH9NtVqt1WMxZOp0WbDabcNlll+Wtk8Sc3X333Tnbs9msUFFRISxYsKCo9nAOnlgsJsydO1cwm83CJ598IlvucIyRhbBr1y7BbDYL3/rWt+i2KVOmSMacTZo0STj++OPz1klizqT67KxZs4Tx48cX1R7Of46DGSMLIZFICOecc46g0WiEWCwmCIIg/O53v5OMOXvggQck759SzJs3T9BqtUI4HM7Z/sQTTwgAhE8//bTg9hwqRr1bExiakfPWW2/lTH99//33sWvXLlx88cV02/nnnw+dTofHH3+cbhMEAU8++SSqqqowZ86couuUor+/P+e9Wq2m1gdiviXmUXHW4gULFsBut2PRokV0lQMWqYzeJB8RuZ7HHnsMOp0Op512WsHt4RSO1HewadMmvPnmm5g/fz6N4XM4HDj99NPx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yMiI8apXvcrI5XKGYRjK937LLbeI86enp403vOENRn9/vxEIBIwLLrjA+NznPqe873/+5382brvtNmNgYMCIRCLGzTff3NY+u/a4OH245JJLjEsuucS0r7+/33jFK17RVvacc84xXvSiF4nff/d3f2cAMA4ePGgq9//+3/8zABj33nuv5bXn5uaMW2+91RgZGTECgYAxODho/Nqv/Zpx4sQJwzAMY/v27W08vOaaa8T52WzWeMc73mGMjo4agUDA2L17t/GXf/mXRrPZFGVOnDhhADA+/OEPG3/9139tbNu2zQiFQsbVV19tPPHEEx21x8XpwemQkTr87d/+rXHBBRcY4XDYSKVSxqWXXmp8+ctfNgzDMP70T/9UKfv4+//iF79oXHLJJUYoFDK6u7uNV73qVW3y7JprrjH27dtnPPTQQ8bzn/98IxQKGTt27DA+9alPddSercQZsZwNDw9jamoK8XgcHo8HjzzyCK699lp88pOfxGtf+1pT2dnZWZx//vl43/veh3e+852mY295y1vwn//5nyI+6O1vfzvuuusuzMzMmDTV48eP4znPeQ4+9KEP4a1vfWtHdarwgx/8AL/xG7+Ba665BjfffDMA4PDhw1hcXMTnP/95nDhxAp/+9Kfx6U9/Gn/wB3+Ac889FwBw7bXXor+/H//8z/+M3/md38GLXvQi3HjjjSiXy/jc5z6HfD6Pe++9F9u3bwcA/O7v/i6+/vWvY2RkBM997nNx2WWX4Z577sF3vvMd/J//83/wR3/0R7bt+fjHP25auNiFc7zhDW8Q5vgXvvCF+PCHP4zLLrtMHH/iiSfQaDRM+4B1i8Kzn/1s05JFjz76KM4555y2ZbQuv/xyAMCBAwcwNjambEe9XseNN96IWq2Gt7/97RgcHMTMzAz+/d//HblcDslkEl/84hfx5je/GZdffjne8pa3AAB2794NYN2697znPQ8ejwe/93u/h76+Ptx9991405vehNXV1bZv4P3vfz88Hg/e8573YHFxER/96Edx/fXXi6SfTtrj4vTA+P+HdOzbt0/sm5mZweLiYhsPgXV+/cd//If4/eijjyIajeL8889vK0fHr7rqKu31X/ayl+HgwYN4+9vfjh07dmBxcRHf+973cPLkSezYsQMf/ehH8fa3vx2xWEzIp4GBAQDrExyuueYazMzM4K1vfSu2bduGH//4x7jtttswNzeHj370o6ZrfeELX0ChUMDb3vY2VKtVfOxjH8N1112HJ554QtRp1x4XpxdbKSNV+Pu//3v8/u//Pl7+8pfjHe94h1hj9ac//Sn+x//4H/jN3/xNHD58GF/5ylfwN3/zN8K7RjHm73//+/HHf/zHeOUrX4k3v/nNWFpawsc//nFcffXVePTRR5FKpcS1stksfuVXfgWvfOUr8ZrXvAZf/epX8bu/+7sIBAJ44xvf6Kg9W4otV/c2gAcffNAAYNxxxx3aY1/4whfajr373e82ABjVatUwDMO46aabjF27drWVK5VKBgDjve99b8d1qvCOd7zDSCQSRqPR0Ja58847DQDG/v37TfsLhYKRSqWM3/7t3zbtn5+fN5LJpGn/LbfcYgAw3v72t4t9rVbLuOmmm4xAIGAsLS05bo8L57jvvvuMl73sZcbnPvc545vf/KbxgQ98wOjp6TFCoZDxyCOPiHL0jn/0ox+11fGKV7zCGBwcFL/37dtnXHfddW3lDh48aAAwPv3pT2vb8+ijj4pRqhWi0ajJWkZ405veZAwNDRnLy8um/a9+9auNZDJplMtlwzBOjYZHRkaM1dVVUe6rX/2qAcD42Mc+1lF7XGw9vvjFLxoATFbP0yEjVchms8KiZYV9+/aZrGWEP//zPzei0ahx+PBh0/73vve9htfrFdYMspyFw2FjenpalPvpT39qADD+1//6Xx21x8XW43TISBV+/dd/3di3b59lmQ9/+MNt1jLDMIyJiQnD6/Ua73//+037n3jiCcPn85n2X3PNNQYA4yMf+YjYV6vVjGc/+9lGf3+/Ua/XHbdnq3DWR0hS3JQqgSDF81AZCp51Us5pnSqkUimUSiVT5myn+N73vodcLofXvOY1WF5eFn9erxdXXHEF9u/f33bO7/3e74ltsn7U63Xcc889m26Pi3ZceeWV+NrXvoY3vvGN+LVf+zW8973vxf333w+Px4PbbrtNlLPjEeeQU26qQJao7373ux0H1xuGgbvuugs333wzDMMwce7GG29EPp/HI488Yjrnt37rt0yBui9/+csxNDQkLDCbaY+LjePQoUN429vehuc///m45ZZbxP7TISNVoFxsP/zhD0UsWye488478cIXvlDEC9Pf9ddfj2aziR/96Eem8i996UsxMjIifl9++eW44oorBA832x4XG8fpkJEqpFIpTE9P48EHH+y4jV//+tfRarXwyle+0sQ3mvkr97U+nw9vfetbxe9AIIC3vvWtWFxcxMMPP7zp9nSKs145o0V6+YK6BJqNSGXC4bDjck7rVOF//s//iXPOOQcveclLMDo6ije+8Y1iyRQ70Kyo6667Dn19faa///zP/2xbC66rq8s06w9YnyIOQLheN9MeF86wZ88e/Pqv/zr2798vZnPa8YhzyCk3Vdi5cyf+9//+3/iHf/gH9Pb24sYbb8Tf/d3fOQq0X1paQi6Xw2c/+9k2vr3hDW8AgDbO7d271/Tb4/Fgz549gm+baY+LjWF+fh433XQTkskkvva1r5lmpZ0OGalCMBjEBz/4Qdx9990YGBjA1VdfjQ996EOYn593dA9HjhzBd77znTYeXn/99QDseQisyz7i4Wbb42JrsVkZqcJ73vMexGIxXH755di7dy/e9ra34b777nPUniNHjsAwDOzdu7eNc08//XQb34aHh8XkQoLc126mPZ3irE/dPTQ0BACYm5trOzY3N4d0Oi208qGhIezfv79t1gidS7FXndSpQn9/Pw4cOIDvfve7uPvuu3H33XfjjjvuwG/91m/h85//vOX9UKqCL37xixgcHGw7vpFs6ptpjwvnGBsbExnOE4mELY94rN/Q0JApgzkvB8A2LvAjH/kIbr31Vnzzm9/Ef/7nf+L3f//38YEPfAD3338/RkdHtecR3173uteZrC0cF110keW1t7I9LjpHPp/HS17yEuRyOdx7771tXDkdMlKHd77znbj55pvxjW98A9/97nfxx3/8x/jABz6AH/zgB3jOc55jeW6r1cKLX/xi/J//83+Ux6kj7ASbaY+LrcdmZKQK559/PsbHx/Hv//7v+M53voO77roLn/zkJ/Enf/IneN/73md5LqWYuvvuu5UJYGOxWAd3tvn2dIyfifPUBlYxZ4ZhGH19fdqZSDyO5xOf+IRyJtKXv/zlNr+30zqdoNlsGm9961sNAMaRI0cMwzCMr33ta8qYM4rf+e53v2tbL8WcjY+Pm/bffffdBgDjK1/5iuP2uNg8XvaylxmhUEjMLMvlcpYzkd74xjeKfe9617uUszXf//73O5qtKeO+++4zABh/9Ed/JPbFYrG2mLNGo2HE43HjNa95jW2dFHN22223mfa3Wi1jaGjIuPHGGztqj4vNo1KpGC98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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Epoch 80: 100%|█████████████████████████████████████████████████████████| 63/63 [00:45<00:00, 1.39it/s, loss=0.0446]\n",
- "Epoch 81: 100%|█████████████████████████████████████████████████████████| 63/63 [00:47<00:00, 1.32it/s, loss=0.0442]\n",
- "Epoch 82: 100%|█████████████████████████████████████████████████████████| 63/63 [00:47<00:00, 1.34it/s, loss=0.0437]\n",
- "Epoch 83: 100%|█████████████████████████████████████████████████████████| 63/63 [00:48<00:00, 1.29it/s, loss=0.0434]\n",
- "Epoch 84: 100%|█████████████████████████████████████████████████████████| 63/63 [00:49<00:00, 1.28it/s, loss=0.0423]\n",
- "Epoch 85: 100%|█████████████████████████████████████████████████████████| 63/63 [00:48<00:00, 1.31it/s, loss=0.0429]\n",
- "Epoch 86: 100%|█████████████████████████████████████████████████████████| 63/63 [00:49<00:00, 1.28it/s, loss=0.0417]\n",
- "Epoch 87: 100%|█████████████████████████████████████████████████████████| 63/63 [00:49<00:00, 1.26it/s, loss=0.0428]\n",
- "Epoch 88: 100%|█████████████████████████████████████████████████████████| 63/63 [00:47<00:00, 1.31it/s, loss=0.0432]\n",
- "Epoch 89: 100%|█████████████████████████████████████████████████████████| 63/63 [00:48<00:00, 1.31it/s, loss=0.0443]\n",
- "Epoch 89 - Validation set: 100%|████████████████████████████████████| 63/63 [00:18<00:00, 3.38it/s, val_loss=0.0437]\n",
- "100%|███████████████████████████████████████████████████████████████████████████| 1000/1000 [00:06<00:00, 149.93it/s]\n",
- "100%|███████████████████████████████████████████████████████████████████████████| 1000/1000 [00:06<00:00, 155.50it/s]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████| 500/500 [00:03<00:00, 156.89it/s]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████| 200/200 [00:01<00:00, 156.95it/s]\n",
- "100%|███████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<00:00, 156.95it/s]\n",
- "100%|███████████████████████████████████████████████████████████████████████████| 1000/1000 [00:06<00:00, 157.06it/s]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████| 500/500 [00:03<00:00, 157.51it/s]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████| 200/200 [00:01<00:00, 156.96it/s]\n",
- "100%|███████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<00:00, 158.25it/s]\n"
- ]
- },
- {
- "data": {
- "image/png": "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3t5e/OUvf8F73/veIjFmNBrx9NNP48orr8SKFSuwceNG/OUvf8GXvvQlNl24mvEIquejH/0oTCYTVq5cCZ/Ph7179+JnP/sZzGYzvvOd7xS1/da3voWVK1di9erVuPbaa9Hf34/vfe97OO+883DBBRewditWrMBll12G2267DSMjI5g3bx4eeughdHd345e//GXZ8bzwwgu44YYbcNlll2HBggXI5XJ4+OGHmfAiTj31VDz//PP4/ve/j6amJsyZMwcrVqzAd77zHWzatAkrVqzAv/7rv2LJkiUIBALYtm0bnn/+eQQCgaL9ud1urFq1Cp/5zGcwPDyMe+65B/PmzcO//uu/1jQewdHxn//5n/jTn/6EdevWIRAI4Ne//nXR+k996lPs/fG4Rso5cOAAzj77bFx++eVYsmQJtFot/vCHP2B4eLiossCpp56K++67D9/85jcxb948+Hw+rFmzBl/84hfxpz/9CR/84Aexfv16nHrqqYjH49i1axcef/xxdHd3s1QIwEQM06pVq/DZz34W6XQa99xzDzweD3OLVjsewbHneFwjlTjvvPPQ0NCA9773vaivr8e+fftw77334sILL2STlkg4ffnLX8bHPvYx6HQ6rFu3DnPnzsU3v/lN3Hbbbeju7sYll1wCm82Grq4u/OEPf8C1116Lm2++me2rqakJd955J7q7u7FgwQL87ne/w44dO/Czn/2MTc6rZjzHjGNqh6sRpYSF9JKbKHfv3i2dd955ktlslpxOp/TJT35SGhoamtRnPp+XNmzYILW3t0t6vV5aunSp9Otf/1px/9X2Kefxxx+XzjvvPJbQs62tTbruuuskv99f1O7nP/+51NnZyZLe8i7OTZs2Seeff77kcDgko9EozZ07V1q/fr30xhtvsDZXXnmlZLFYpMOHD7Nx1tfXS7fffntReoxqxyOojh/84AfS8uXLJbfbLWm1WqmxsVH61Kc+VdJF/PLLL0srV66UjEaj5PV6peuvv74oFQWRTCalm2++WWpoaJAMBoN0+umnS08//XTF8Rw5ckS66qqrpLlz50pGo1Fyu93S+9//fun5558vavfWW29JZ511lmQymSYloR0eHpauv/56qbW1VdLpdFJDQ4N09tlnSz/72c9YG3JrPvLII9Jtt90m+Xw+yWQySRdeeGFR5vlqxyM4Omh6f6mXnONxjeQZ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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Epoch 90: 100%|█████████████████████████████████████████████████████████| 63/63 [00:43<00:00, 1.46it/s, loss=0.0441]\n",
- "Epoch 91: 100%|█████████████████████████████████████████████████████████| 63/63 [00:48<00:00, 1.29it/s, loss=0.0438]\n",
- "Epoch 92: 100%|█████████████████████████████████████████████████████████| 63/63 [00:48<00:00, 1.29it/s, loss=0.0434]\n",
- "Epoch 93: 100%|█████████████████████████████████████████████████████████| 63/63 [00:48<00:00, 1.29it/s, loss=0.0427]\n",
- "Epoch 94: 100%|█████████████████████████████████████████████████████████| 63/63 [00:48<00:00, 1.30it/s, loss=0.0429]\n",
- "Epoch 95: 100%|█████████████████████████████████████████████████████████| 63/63 [00:47<00:00, 1.32it/s, loss=0.0433]\n",
- "Epoch 96: 100%|██████████████████████████████████████████████████████████| 63/63 [00:49<00:00, 1.26it/s, loss=0.043]\n",
- "Epoch 97: 100%|█████████████████████████████████████████████████████████| 63/63 [00:47<00:00, 1.34it/s, loss=0.0423]\n",
- "Epoch 98: 100%|█████████████████████████████████████████████████████████| 63/63 [00:49<00:00, 1.28it/s, loss=0.0424]\n",
- "Epoch 99: 100%|█████████████████████████████████████████████████████████| 63/63 [00:49<00:00, 1.28it/s, loss=0.0432]\n",
- "Epoch 99 - Validation set: 100%|████████████████████████████████████| 63/63 [00:15<00:00, 4.17it/s, val_loss=0.0434]\n",
- "100%|███████████████████████████████████████████████████████████████████████████| 1000/1000 [00:06<00:00, 147.33it/s]\n",
- "100%|███████████████████████████████████████████████████████████████████████████| 1000/1000 [00:06<00:00, 154.77it/s]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████| 500/500 [00:03<00:00, 156.15it/s]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████| 200/200 [00:01<00:00, 156.44it/s]\n",
- "100%|███████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<00:00, 157.36it/s]\n",
- "100%|███████████████████████████████████████████████████████████████████████████| 1000/1000 [00:06<00:00, 156.48it/s]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████| 500/500 [00:03<00:00, 157.72it/s]\n",
- "100%|█████████████████████████████████████████████████████████████████████████████| 200/200 [00:01<00:00, 157.55it/s]\n",
- "100%|███████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<00:00, 157.38it/s]\n"
- ]
- },
- {
- "data": {
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmcAAAFwCAYAAAD9idyvAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOydeZhcVZn/v7XvS+9rOp2kE0gCIRBIACEoOyLCiKCiQASEURSd+YGAjuIaRRRRUVwHEB0dQAccMWwSRmQJWwIhW2frTu977XvV/f3Rz3vy3tO3qquSYLrlfJ6nnu66dZdz694693ve7Zg0TdOgUCgUCoVCoZgRmA93AxQKhUKhUCgU+1HiTKFQKBQKhWIGocSZQqFQKBQKxQxCiTOFQqFQKBSKGYQSZwqFQqFQKBQzCCXOFAqFQqFQKGYQSpwpFAqFQqFQzCCUOFMoFAqFQqGYQShxplAoFAqFQjGDUOJMoVDMau677z6YTCa8+uqrh7spCoVCcUhQ4kyhUJSExE+x10svvXS4m3hQDAwM4JZbbsF73vMe+Hw+mEwmPPvss0XXf+GFF3DKKafA7XajsbERN9xwA2Kx2JT10uk0br75ZjQ3N8PlcmHVqlV46qmn3sYzUSgU/yxYD3cDFArF7OBrX/sa5s2bN2V5R0fHYWjNoWPHjh24/fbbsXDhQhx99NF48cUXi667adMmnHHGGVi8eDHuvPNO9Pb24rvf/S527tyJdevW6dZds2YNHn74YXzuc5/DwoULcd999+G9730v1q9fj1NOOeXtPi2FQjGLUeJMoVCUxXnnnYfjjz/+cDfjkLNixQqMjY2huroaDz/8MC655JKi637hC19AVVUVnn32Wfj9fgBAe3s7PvGJT+DJJ5/E2WefDQB4+eWX8fvf/x533HEHbrzxRgDAFVdcgaOOOgqf//zn8cILL7z9J6ZQKGYtyq2pUCgOCV1dXTCZTPjud7+L73//+5g7dy5cLhdOO+00vPXWW1PWf+aZZ3DqqafC4/EgGAziwgsvxLZt26as19fXh6uvvhrNzc1wOByYN28ePvnJTyKTyejWS6fT+Pd//3fU1dXB4/HgX/7lXzAyMjJtu30+H6qrq6ddLxKJ4KmnnsLHPvYxIcyASdHl9Xrx4IMPimUPP/wwLBYLrr32WrHM6XTi6quvxosvvoienp5pj6dQKN65KMuZQqEoi3A4jNHRUd0yk8mEmpoa3bJf//rXiEajuP7665FKpfCDH/wAp59+OjZv3oyGhgYAwNNPP43zzjsP8+fPx1e+8hUkk0n86Ec/wrve9S68/vrraG9vBwD09/dj5cqVCIVCuPbaa3HkkUeir68PDz/8MBKJBOx2uzjuZz7zGVRVVeG2225DV1cX7rrrLnz605/Gf//3fx+S89+8eTNyudwU66Hdbsfy5cuxceNGsWzjxo1YtGiRTsQBwMqVKwFMukfnzJlzSNqlUCj++VDiTKFQlMWZZ545ZZnD4UAqldIt27VrF3bu3ImWlhYAwLnnnotVq1bh9ttvx5133gkAuOmmm1BdXY0XX3xRWK0uuugiHHvssbjttttw//33AwBuvfVWDA4OYsOGDTpR9LWvfQ2apumOW1NTgyeffBImkwkAUCgU8MMf/hDhcBiBQOCgz39gYAAA0NTUNOWzpqYmPPfcc7p1i60HTIpOhUKhKIYSZwqFoix+/OMfY9GiRbplFotlynoXXXSREGbApLVo1apV+Mtf/oI777wTAwMD2LRpEz7/+c/r3InLli3DWWedhb/85S8AJsXVI488ggsuuMAw1o1EGHHttdfqlp166qn4/ve/j+7ubixbtuzATpqRTCYBTApSGafTKT6ndYutx/elUCgURihxplAoymLlypVlJQQsXLhwyrJFixaJmKzu7m4AwBFHHDFlvcWLF+OJJ55APB5HLBZDJBLBUUcdVVb72tradO+rqqoAABMTE2VtPx0ulwvAZGybTCqVEp/TusXW4/tSKBQKI1RCgEKh+KfAyIoHYIr780AhlyS5NzkDAwNobm7WrVtsPQC6dRUKhUJGiTOFQnFI2blz55RlnZ2dIsh/7ty5ACbri8ls374dtbW18Hg8qKurg9/vN8z0PBwcddRRsFqtU2YiyGQy2LRpE5YvXy6WLV++HJ2dnYhEIrp1N2zYID5XKBSKYihxplAoDimPPPII+vr6xPuXX34ZGzZswHnnnQdg0qq0fPly3H///QiFQmK9t956C08++STe+973AgDMZjMuuugi/O///q/h1EyHyiJWLoFAAGeeeSZ+85vfIBqNiuUPPPAAYrGYrj7aBz/4QeTzefz85z8Xy9LpNO69916sWrVKZWoqFIqSqJgzhUJRFuvWrcP27dunLD/55JMxf/588b6jowOnnHIKPvnJTyKdTuOuu+5CTU0NPv/5z4t17rjjDpx33nk46aSTcPXVV4tSGoFAAF/5ylfEemvXrsWTTz6J0047Dddeey0WL16MgYEBPPTQQ/j73/+OYDB4SM7tG9/4BgBgy5YtACYF19///ncAwH/8x3+I9b75zW/i5JNPFu3p7e3F9773PZx99tk499xzxXqrVq3CJZdcgltvvRXDw8Po6OjA/fffj66uLvzqV786JG1WKBT/xGgKhUJRgnvvvVcDUPR17733apqmaXv37tUAaHfccYf2ve99T5szZ47mcDi0U089VXvjjTem7Pfpp5/W3vWud2kul0vz+/3aBRdcoG3dunXKet3d3doVV1yh1dXVaQ6HQ5s/f752/fXXa+l0Wte+V155Rbfd+vXrNQDa+vXrpz3HUucn89xzz2knn3yy5nQ6tbq6Ou3666/XIpHIlPWSyaR24403ao2NjZrD4dBOOOEE7fHHH5+2LQqFQmHStH+wb0ChUPxT0tXVhXnz5ummLFIoFApF5aiYM4VCoVAoFIoZhBJnCoVCoVAoFDMIJc4UCoVCoVAoZhAq5kyhUCgUCoViBnHYLGexWAy33XYbzj33XFRXV8NkMuG+++4ruv62bdtw7rnnwuv1orq6GpdffjlGRkamrFcoFPCd73wH8+bNg9PpxLJly/C73/3uoPZ5IGzduhVf+cpX0NXVdUj2p1AoFAqF4p3BYRNno6Oj+NrXvoZt27bhmGOOKblub28vVq9ejV27dmHt2rW48cYb8dhjj+Gss85CJpPRrfvFL34RN998M8466yz86Ec/QltbGy677DL8/ve/P+B9Hghbt27FV7/6VSXOFAqFQqFQVMRhK0JLc881Njbi1VdfxQknnFB03bVr1yIej+O1114TkxuvXLkSZ511Fu677z5ce+21AIC+vj5873vfw/XXX4+7774bAHDNNdfgtNNOw0033YRLLrlEzL9X7j4VCoVCoVAo/pEcNsuZw+FAY2NjWev+4Q9/wPve9z4hogDgzDPPxKJFi/Dggw+KZY8++iiy2Sw+9alPiWUmkwmf/OQn0dvbixdffLHifRbj97//PVasWAGfzwe/34+jjz4aP/jBDwAA9913n5jK5T3veQ9MJhNMJhOeffZZsf26detw6qmnwuPxwOfz4fzzzxfVyYk1a9bA6/Viz549OOecc+DxeNDc3Iyv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0dGBT3ziExW1R3Fw/L//9//wpz/9CRdccAHGx8fxm9/8Rvf5xz72MfH/29FHynR2duKMM87ApZdeiiVLlsBqteJ//ud/MDQ0pJtZYMWKFbjnnnvwjW98Ax0dHaivr8fpp5+Om266CX/605/wvve9D2vWrMGKFSsQj8exefNmPPzww+jq6hKlEIDJGKZTTjkFn/zkJ5FOp3HXXXehpqZGuEXLbY/i0PN29JFGnH322WhsbMS73vUuNDQ0YNu2bbj77rtx/vnni6QlEk5f/OIX8eEPfxg2mw0XXHABFixYgG984xu49dZb0dXVhYsuugg+nw979+7F//zP/+Daa6/FjTfeKI7V3NyM22+/HV1dXVi0aBH++7//G5s2bcLPf/5zkZxXTnsOGYfUDlchRgUL6SWbKN966y3t7LPP1txutxYMBrWPfvSj2uDg4JR95vN5be3atdrcuXM1u92uLV26VPvNb35jePxy9ynz8MMPa2effbYo6NnW1qZdd9112sDAgG69X/ziF9r8+fM1i8UyxcW5fv167ZxzztECgYDmdDq1BQsWaGvWrNFeffVVsc6VV16peTwebffu3aKdDQ0N2m233aYrj1FuexTl8YMf/EBbuXKlVl1drVmtVq2pqUn72Mc+VtRF/Nxzz2knn3yy5nQ6tbq6Ou3666/XlaIgksmkduONN2qNjY2aw+HQTjjhBO3xxx+ftj179uzRrrrqKm3BggWa0+nUqqurtfe85z3a008/rVtv+/bt2urVqzWXyzWlCO3Q0JB2/fXXa3PmzNFsNpvW2NionXHGGdrPf/5zsQ65NX/3u99pt956q1ZfX6+5XC7t/PPP11WeL7c9ioOD0vuLvWTejj6SMzo6ql1//fXakUceqXk8Hi0QCGirVq3SHnzwQd16g4OD2vnnn6/5fL4pRWij0ah26623ah0dHZrdbtdqa2u1k08+Wfvud78ryhXwIrTf+973tDlz5mgOh0M79dRTtTfeeKPi9igOPW9XHynzs5/9TFu9erVWU1OjORwObcGCBdpNN900JTzk61//utbS0iIKtnP98Ic//EE75ZRTNI/Ho3k8Hu3II4/Urr/+ep2706gI7dy5c7W77777gNpzKDBpmpode6ZCczEeqgliFYpSPPvss3jPe96Dhx56CB/84AcPd3MU71C6urowb9483HHHHTrLhkLxdvHu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24dMJmP2bjx06NDDna5fWGH2YHh42Nwz1RcM8NgM+Gtf+xquvvpqnH/++aZejeUYGuh95jOfwfT0NN72treZMocf//jHuPnmm/Gyl70M27dvd7Fl5XLZlHNoU1xb//D/e++9Fz/+8Y/x4he/2OyaQX3I86g/of/rilQNQJUps1srcXyNRgPlctm0/uBKZD0f6/eCwaApMcjlcq4WOV3FOQVy9OhRB4D/8yj9HD169FRM8+NWbr31VgeAc9NNNzm5XM6p1+uex2WzWSccDjvveMc7XK9Xq1UnlUo5r3/9681r73jHO5xQKORks1nXsTfccIMDwDly5EjPMe3fv9958Ytf7Kxbt86JRqPOpk2bnFe84hXOysqK4ziO57xfc8015vPHjh1zXvva1zpTU1NOJBJxzjrrLOczn/mM53X/4z/+o3P99dc769atcxKJhHP11Vd3jK/feHx55OT88893zj//fNdrU1NTzste9rKOY8844wzniiuuMP//1V/9lQPAuffee13H/cM//IMDwLntttt6fvfMzIxz7bXXOps2bXIikYizfv165wUveIFz6NAhx3Ec57TTTuvA4WWXXWY+v7y87Lz1rW91Nm/e7EQiEWfHjh3On//5nzvNZtMcc+jQIQeA88EPftD5i7/4C2fr1q1OLBZzLr30Uufuu+9e03h8eWTkkdCR3eQv//IvnbPOOsuJx+POyMiIc8EFFzh///d/7ziO47z73e/21H06/1/4whec888/34nFYs7o6Kjzile8okOfXXbZZc7ZZ5/t/OhHP3Ke/vSnO7FYzNm2bZvzyU9+ck3jOZlyStKaGzduxNGjR5FOpxEIBPCTn/wEl19+OT7xiU/g1a9+tevY6elpnHnmmXjPe96Dt73tba733vjGN+I//uM/TNHpW97yFnz5y1/G8ePHXYzDwYMH8Uu/9Ev4wAc+gDe96U1rOqeXfOtb38Kv/dqv4bLLLsPVV18NANi/fz/m5ubwuc99DocOHcKnPvUpfOpTn8Lv/d7vYffu3QCAyy+/HFNTU/jHf/xH/PZv/zauuOIKPPe5z0WpVMJnPvMZZLNZ3HbbbTjttNMAAG9+85vxz//8z9i0aROe9rSn4alPfSpuueUWfP3rX8fv//7v4w//8A/7judjH/sYNm7cuKb58WVVXvva16JQKCAUCuEZz3gGPvjBD+KpT32q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//6f6fT8lre8xRQe/8Ef/AFuuukmXH755XjrW9+KQqGAD37wgzj33HNN3QwAbN68GW9729vwwQ9+EPV6HU972tPwr//6r7jtttvw93//9y5qc9Bzeskb3vAGLC0t4VnPehY2b96MBx98EB/72Mdw3nnnmSXq5513HkKhEN7//vcjm80iGo3iWc96FqampvDJT34Sv/Ebv4Hzzz8fr3zlKzE5OYkjR47ga1/7Gi6++GKXMxaLxfD1r38d11xzDfbs2YObb74ZX/va1/AHf/AHZrnwIOPxZXB5xStegXg8josuughTU1P4+c9/jk9/+tNIJBIdW5a8973vxUUXXYTLLrsMb3zjG3Hs2DF8+MMfxnOe8xz8yq/8ijluz549eNnLXobrr78ec3Nz2LlzJz73uc/h8OHD+MxnPtNzPN/61rfwO7/zO3jZy16GM844A41GA1/4wheM40W54IILcMstt+Av/uIvsHHjRmzfvh179uzBn//5n+PWW2/Fnj178Fu/9Vs466yzsLS0hJ/85Ce45ZZbsLS05Pq+sbExXHLJJXjta1+LEydO4CMf+Qh27tyJ3/qt31rTeHx5ePJ7v/d7+MpXvoKrr74aS0tL+Lu/+zvX+695zWvM34+EjrRl//79uOKKK/Dyl78cZ511FsLhMP7lX/4FJ06cwCtf+Upz3AUXXIBPfvKT+LM/+zPs3LkTU1NTeNaznoV3vOMd+MpXvoJf/dVfxbXXXosLLrgAxWIRd999N770pS/h8OHDphUCsFrDdMkll+DNb34zqtUqPvKRj2B8fNykRQcdjy8nXx4JHeklz3nOc7B+/XpcfPHFWLduHe677z58/OMfx1VXXWUWLdFx+sM//EO88pWvxNDQEK6++mrs2LEDf/Znf4brr78ehw8fxote9CKk02kcOnQI//Iv/4I3vvGNePvb326+a+PGjXj/+9+Pw4cP44wzzsD//b//F3fddRc+/elPmwblg4znpMlJ5eHWKF4NC/ljU5T33HOP85znPMdJJBLOyMiI8+pXv9qZnZ3tOGez2XRuuOEG57TTTnMikYhz9tlnO3/3d3/n+f2DntOWL33pS85znvMc09Bz69atzpve9CZnZmbGddzf/M3fOKeffroTCoU6Upy33nqr89znPtcZHh52YrGYs2PHDufaa691fvSjH5ljrrnmGieZTDoPPPCAGee6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\n",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "use_pretrained = False\n",
- "\n",
- "if use_pretrained:\n",
- " model = torch.hub.load(\"marksgraham/pretrained_generative_models:v0.2\", model=\"ddpm_2d\", verbose=True).to(device)\n",
- "else:\n",
- " n_epochs = 100\n",
- " val_interval = 10\n",
- " epoch_loss_list = []\n",
- " val_epoch_loss_list = []\n",
- " for epoch in range(n_epochs):\n",
- " model.train()\n",
- " epoch_loss = 0\n",
- " progress_bar = tqdm(enumerate(train_loader), total=len(train_loader))\n",
- " progress_bar.set_description(f\"Epoch {epoch}\")\n",
- " for step, batch in progress_bar:\n",
- " images = batch[\"image\"].to(device)\n",
- " optimizer.zero_grad(set_to_none=True)\n",
- "\n",
- " # Randomly select the timesteps to be used for the minibacth\n",
- " timesteps = torch.randint(0, ddpm_scheduler.num_train_timesteps, (images.shape[0],), device=device).long()\n",
- "\n",
- " # Add noise to the minibatch images with intensity defined by the scheduler and timesteps\n",
- " noise = torch.randn_like(images).to(device)\n",
- " noisy_image = ddpm_scheduler.add_noise(original_samples=images, noise=noise, timesteps=timesteps)\n",
- "\n",
- " # In this example, we are parametrising our DDPM to learn the added noise (epsilon).\n",
- " # For this reason, we are using our network to predict the added noise and then using L1 loss to predict\n",
- " # its performance.\n",
- " noise_pred = model(x=noisy_image, timesteps=timesteps)\n",
- " loss = F.l1_loss(noise_pred.float(), noise.float())\n",
- "\n",
- " loss.backward()\n",
- " optimizer.step()\n",
- " epoch_loss += loss.item()\n",
- "\n",
- " progress_bar.set_postfix({\"loss\": epoch_loss / (step + 1)})\n",
- " epoch_loss_list.append(epoch_loss / (step + 1))\n",
- "\n",
- " if (epoch + 1) % val_interval == 0:\n",
- " model.eval()\n",
- " val_epoch_loss = 0\n",
- " progress_bar = tqdm(enumerate(val_loader), total=len(train_loader))\n",
- " progress_bar.set_description(f\"Epoch {epoch} - Validation set\")\n",
- " for step, batch in progress_bar:\n",
- " images = batch[\"image\"].to(device)\n",
- " timesteps = torch.randint(\n",
- " 0, ddpm_scheduler.num_train_timesteps, (images.shape[0],), device=device\n",
- " ).long()\n",
- " noise = torch.randn_like(images).to(device)\n",
- " with torch.no_grad():\n",
- " noisy_image = ddpm_scheduler.add_noise(original_samples=images, noise=noise, timesteps=timesteps)\n",
- " noise_pred = model(x=noisy_image, timesteps=timesteps)\n",
- " val_loss = F.l1_loss(noise_pred.float(), noise.float())\n",
- "\n",
- " val_epoch_loss += val_loss.item()\n",
- " progress_bar.set_postfix({\"val_loss\": val_epoch_loss / (step + 1)})\n",
- " val_epoch_loss_list.append(val_epoch_loss / (step + 1))\n",
- "\n",
- " # Sampling image during training\n",
- " noise = torch.randn((1, 1, 64, 64))\n",
- " noise = noise.to(device)\n",
- " image = inferer.sample(input_noise=noise, diffusion_model=model, scheduler=ddpm_scheduler)\n",
- " plt.figure(figsize=(8, 4))\n",
- " plt.subplot(3, len(sampling_steps), 1)\n",
- " plt.imshow(image[0, 0].cpu(), vmin=0, vmax=1, cmap=\"gray\")\n",
- " plt.tick_params(top=False, bottom=False, left=False, right=False, labelleft=False, labelbottom=False)\n",
- " plt.ylabel(\"DDPM\")\n",
- " plt.title(\"1000 steps\")\n",
- " # DDIM\n",
- " for idx, reduced_sampling_steps in enumerate(sampling_steps):\n",
- " ddim_scheduler.set_timesteps(reduced_sampling_steps)\n",
- " image = inferer.sample(input_noise=noise, diffusion_model=model, scheduler=ddim_scheduler)\n",
- " plt.subplot(3, len(sampling_steps), len(sampling_steps) + idx + 1)\n",
- " plt.imshow(image[0, 0].cpu(), vmin=0, vmax=1, cmap=\"gray\")\n",
- " plt.ylabel(\"DDIM\")\n",
- " if idx == 0:\n",
- " plt.tick_params(\n",
- " top=False, bottom=False, left=False, right=False, labelleft=False, labelbottom=False\n",
- " )\n",
- " else:\n",
- " plt.axis(\"off\")\n",
- " plt.title(f\"{reduced_sampling_steps} steps\")\n",
- " # PNDM\n",
- " for idx, reduced_sampling_steps in enumerate(sampling_steps):\n",
- " pndm_scheduler.set_timesteps(reduced_sampling_steps)\n",
- " image = inferer.sample(input_noise=noise, diffusion_model=model, scheduler=pndm_scheduler)\n",
- " plt.subplot(3, len(sampling_steps), len(sampling_steps) * 2 + idx + 1)\n",
- " plt.imshow(image[0, 0].cpu(), vmin=0, vmax=1, cmap=\"gray\")\n",
- " plt.ylabel(\"PNDM\")\n",
- " if idx == 0:\n",
- " plt.tick_params(\n",
- " top=False, bottom=False, left=False, right=False, labelleft=False, labelbottom=False\n",
- " )\n",
- " else:\n",
- " plt.axis(\"off\")\n",
- " plt.title(f\"{reduced_sampling_steps} steps\")\n",
- " plt.suptitle(f\"Epoch {epoch+1}\")\n",
- " plt.show()"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "f1e55da9",
- "metadata": {},
- "source": [
- "### Learning curves"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 14,
- "id": "af10be41",
- "metadata": {
- "lines_to_next_cell": 2
- },
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "/tmp/ipykernel_12028/3570577212.py:1: MatplotlibDeprecationWarning: The seaborn styles shipped by Matplotlib are deprecated since 3.6, as they no longer correspond to the styles shipped by seaborn. However, they will remain available as 'seaborn-v0_8-