Repository: menpo/itwmm Branch: master Commit: fa9575104565 Files: 31 Total size: 364.1 KB Directory structure: gitextract_75lg_kcj/ ├── .gitignore ├── LICENSE.txt ├── README.md ├── evaluation/ │ ├── __init__.py │ ├── benchmark.py │ ├── demo.ipynb │ ├── eos.py │ ├── eos_landmark_settings.pkl │ ├── fw_on_eos_low_res_settings.pkl │ ├── kfeval.py │ ├── lsfm_lms_indexes.pkl │ └── trilist.pkl ├── itwmm/ │ ├── __init__.py │ ├── base.py │ ├── fitting/ │ │ ├── __init__.py │ │ ├── algorithm.py │ │ ├── base.py │ │ ├── derivatives.py │ │ ├── hessian.py │ │ ├── initialization.py │ │ ├── jacobian.py │ │ └── projectout.py │ ├── model/ │ │ ├── __init__.py │ │ ├── extractimage.py │ │ └── math.py │ └── visualize.py ├── notebooks/ │ ├── 1. Building an "in-the-wild" texture model.ipynb │ ├── 2. Creating an expressive 3DMM.ipynb │ ├── 3. Fitting "in-the-wild" images.ipynb │ └── 4. Fitting "in-the-wild" videos.ipynb └── setup.py ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitignore ================================================ .idea *.egg-info *.ipynb_checkpoints ================================================ FILE: LICENSE.txt ================================================ Copyright (c) 2017, Imperial College London. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * The name of Imperial College London or that of other contributors may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTERS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ================================================ FILE: README.md ================================================ # In The Wild 3D Morphable Models The repository provides the source code of the algorithm of 3D reconstruction of "In-the-Wild" faces in **images** and **videos**, as outlined in the following papers: > [**3D Reconstruction of "In-the-Wild" Faces in Images and Videos** --- > J. Booth, A. Roussos, E. Ververas, E. Antonakos, S. Ploumpis, Y. Panagagakis, S. Zafeiriou. > Transactions on Pattern Analysis and Machine Intelligence (T-PAMI), accepted for publication (2018).](https://doi.org/10.1109/TPAMI.2018.2832138) > [**3D Face Morphable Models “In-the-Wild”** --- J. Booth, E. Antonakos, S. Ploumpis, G. Trigeorgis, Y. Panagagakis, S. Zafeiriou. CVPR 2017.](https://ibug.doc.ic.ac.uk/media/uploads/documents/booth2017itw3dmm.pdf) If you use this code, **please cite the above papers**. The following topics are covered, each one with its own dedicated notebook: 1. Building an "in-the-wild" texture model 2. Creating an expressive 3DMM 3. Fitting "in-the-wild" images 4. Fitting "in-the-wild" videos ### Release Notes (28/06/2018) - There has been a major update in the code and the problems of the previous preliminary version have been addressed. The current version is fully functional. ### Prerequisites To leverage this codebase users need to independently source the following items to construct an "in-the-wild" 3DMM: - A collection of "in-the-wild" images coupled with 3D fits - A parametric facial shape model of identity and expression And then to use this model, users will need to provide data to fit on: - "in-the-wild" images or videos with iBUG 68 annotations Examples are given for working with some common facial models (e.g. LSFM) and it shouldn't be too challenging to adapt these examples for alternative inputs. Just bear in mind that fitting parameters will need to be tuned when working with different models. ### Notes Please note that this public version of our code has some differences compared to what is described in our aforementioned papers (TPAMI and CVPR): - The default parameters provided here work in generally quite well, but in our papers these had been fine-tuned in different sets of experiments. - The "in-the-wild" texture model that can be extracted following Notebook 1 is a simplified version of the texture model used in our papers. This is because Notebook 1 uses a smaller set of images coming only from (Zhu, Xiangyu, et al. CVPR 2016). Also, the video fitting in Notebook 4 is still using this texture model, instead of the video-specific texture model described in our TPAMI paper. - The video fitting in Notebook 4 uses a simpler initialisation than the one described in our TPAMI paper and corresponding supplementary material: this initialisation comes from a per-frame 3D pose estimation using the mean shape of the adopted parametric facial shape model. These differences result to a simplified version of our image and video fitting algorithms. In practice, we have observed that these simplifications do not have a drastic effect on the accuracy of the results and result to acceptable results. ### Installation 1. Follow the instructions to [install the Menpo Project with conda](http://www.menpo.org/installation/conda.html). 2. Whilst in the conda environment containing menpo, run `pip install git+https://github.com/menpo/itwmm`. 3. Download a [copy of the code](https://github.com/menpo/itwmm/archive/master.zip) into your Downloads folder. 4. Run `jupyter notebook` and navigate to the `notebooks` directory in the downloaded folder. 5. Explore the notebooks in order to understand how to use this codebase. # Evaluation Code We are also providing evaluation code under the folder "evaluation". This will help you evaluate and compare 3D face reconstruction methods using our 3dMDLab & 4DMaja benchmarks (available in our [iBug website](https://ibug.doc.ic.ac.uk/resources/itwmm/)) or other similar benchmarks. Please see the demo Notebook evaluation/demo.ipynb ("Reconstruction Evaluation Demo"), where you can also find detailed comments. ================================================ FILE: evaluation/__init__.py ================================================ ================================================ FILE: evaluation/benchmark.py ================================================ import numpy as np from pathlib import Path import matplotlib.pyplot as plt import menpo.io as mio from menpo.landmark import face_ibug_49_to_face_ibug_49 from menpo.shape import TriMesh, PointCloud import menpo3d.io as m3io from menpofit.visualize import (plot_cumulative_error_distribution, statistics_table, print_progress) from eos import load_eos_low_res_lm_index, upsample_eos_low_res_to_fw_no_texture from kfeval import (landmark_and_mask_gt_mesh, mask_align_and_calculate_dense_error) THIS_DIR = Path(__file__).parent # landmarks indexes of the LSFM model lms_indexes = mio.import_pickle(THIS_DIR / 'lsfm_lms_indexes.pkl') def calculate_errors_3dMDLab(path_fits, path_gt, model): r""" Parameters ---------- path_fits: 'string' of the directory that contains your reconstructed meshes. Meshes' filenames should be the same with the corresponding images/ground truth meshes filenames + the suffix of the mesh type (e.g .obj, .ply) path_gt: 'string' of the directory that contains the ground truth meshes. model: 'string' of the model template you are using. Should be one of the following: 'LSFM', 'Basel', 'Surrey' Returns ------- errors: python list that contains the error per vertex for all meshes """ path_fits = Path(path_fits) path_gt = Path(path_gt) # load meshes' filenames filenames = [p.name for p in path_fits.glob('*')] filenames.sort() errors = [0]*len(filenames) for i, filename in enumerate(print_progress(filenames)): # load gt_mesh, fit_3d gt_mesh = m3io.import_mesh(path_gt / filename, texture_resolver=None) gt_mesh.landmarks['ibug49'] = PointCloud( gt_mesh.points[lms_indexes][19:]) fit_3d = m3io.import_mesh(path_fits / filename, texture_resolver=None) if model == 'Surrey': lms = face_ibug_49_to_face_ibug_49(PointCloud( fit_3d.points[load_eos_low_res_lm_index()])) fit_3d = upsample_eos_low_res_to_fw_no_texture(fit_3d) fit_3d.landmarks['ibug49'] = lms elif model == 'LSFM' or model == 'Basel': fit_3d.landmarks['ibug49'] = PointCloud( fit_3d.points[lms_indexes][19:]) else: print('Error: Not supported model template') return # calculate per vertex errors gt_mesh, eval_mask = landmark_and_mask_gt_mesh(gt_mesh, distance=1) errors[i], _, _ = mask_align_and_calculate_dense_error(fit_3d, gt_mesh, eval_mask) return errors def calculate_errors_4DMaja_synthetic(path_fits, path_gt, model): r""" Parameters ---------- path_fits: 'string' of the directory that contains your reconstructed meshes. Meshes' filenames should be the same with the corresponding ground truth meshes filenames + the suffix of the mesh type (e.g .obj) path_gt: 'string' of the directory that contains the ground truth meshes. model: 'string' of the model template you are using. Should be one of the following: 'LSFM', 'Basel', 'Surrey' Returns ------- errors: python list that contains the error per vertex for all meshes """ return calculate_errors_3dMDLab(path_fits, path_gt, model) def calculate_errors_4DMaja_real(path_fits, path_gt, model): r""" Parameters ---------- path_fits: 'string' of the directory that contains your reconstructed meshes Meshes' filenames should be the same with the corresponding ground truth meshes filenames + the suffix of the mesh type (e.g .obj, .ply) path_gt: 'string' of the full path of the ground truth mesh. model: 'string' of the model template you are using. Should be one of the following: 'LSFM', 'Basel', 'Surrey' Returns ------- errors: python list that contains the error per vertex between the ground truth mesh and a mean mesh calculated from your reconstructed meshes """ path_fits = Path(path_fits) path_gt = Path(path_gt) # load meshes' filenames filenames = sorted([p.name for p in path_fits.glob('*')]) # load gt_mesh (it is only one, Maja's neutral face) gt_mesh = m3io.import_mesh(path_gt, texture_resolver=None) gt_mesh.landmarks['ibug49'] = PointCloud(gt_mesh.points[lms_indexes][19:]) errors = [0] # accumulate fits acc_points = np.zeros((gt_mesh.n_points, 3)) for i, filename in enumerate(print_progress(filenames)): fit_3d = m3io.import_mesh(path_fits / filename, texture_resolver=None) if model == 'Surrey': lms = face_ibug_49_to_face_ibug_49(PointCloud( fit_3d.points[load_eos_low_res_lm_index()])) fit_3d = upsample_eos_low_res_to_fw_no_texture(fit_3d) fit_3d.landmarks['ibug49'] = lms elif model == 'LSFM' or model == 'Basel': fit_3d.landmarks['ibug49'] = PointCloud( fit_3d.points[lms_indexes][19:]) else: print('Error: Not supported model template') return acc_points += fit_3d.points # create mean_fit_3d mean_fit_3d = TriMesh(acc_points / len(filenames), gt_mesh.trilist) mean_fit_3d.landmarks['ibug49'] = PointCloud( mean_fit_3d.points[lms_indexes][19:]) # calculate per vertex errors between the neutral gt_mesh and the mean_fit_3d gt_mesh, eval_mask = landmark_and_mask_gt_mesh(gt_mesh, distance=1) errors[0], _, _ = mask_align_and_calculate_dense_error(mean_fit_3d, gt_mesh, eval_mask) return errors def plot_ced_3dMDLab(errors): errs = [[error_vtx for error_mesh in errors[key] for error_vtx in error_mesh] for key in errors.keys()] legs = [method for method in errors.keys()] tab = statistics_table(errs, legs, 0.105, 0.01, precision=4, sort_by='auc') r = plot_cumulative_error_distribution( errs, legend_font_size=20, line_width=5, marker_size=10, axes_font_size=20, error_range=[0, 0.105, 0.01], marker_edge_width=4, y_label='Vertexes proportion', x_label='Normalized dense vertex error', title='', legend_entries=legs, axes_y_ticks=list(np.arange(0., 1.05, 0.1)), figure_size=(7, 5)) plt.gca().set_axisbelow(True) plt.gca().yaxis.grid(color='gray', linestyle='dashed') return tab, r def plot_ced_4DMaja_synthetic(errors): return plot_ced_3dMDLab(errors) def plot_errors_per_frame_4DMaja_synthetic(errors, method_name): errs = [error.mean() for error in errors] axes = plt.gca() axes.set_ylim([0, 0.150]) axes.set_xlim([1, 440]) plt.plot(errs, linewidth=2) plt.title('4DMaja_synthetic - Mean errors per frame - ' + method_name) def plot_ced_4DMaja_real(errors): return plot_ced_3dMDLab(errors) ================================================ FILE: evaluation/demo.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Reconstruction Evaluation Demo \n", "\n", "Demo on how to evaluate your 3D reconstruction method by comparing your reconstructed meshes against the ground truth meshes of the benchmark datasets: \n", " - 3dMDLab-real\n", " - 3dMDLab-synthetic\n", " - 4DMaya-real\n", " - 4DMaya-synthetic\n", "\n", "#### Prerequisites\n", "\n", " 1. Download the datasets from [iBug website](https://ibug.doc.ic.ac.uk/resources/itwmm/).\n", "\n", " 2. Generate and save your reconstructions in the same format as the reconstructions provided in the datasets. The provided reconstructions in the folder `Reconstructions_dummy` of each dataset are just dummy .obj files which all contain the same mesh and exist just to make clear what is the desired format to be used.\n", " \n", "#### Note\n", "\n", "In case you use the Surrey model for your reconstructions, you might need to define a tighter area of the meshes for error calculation.This will produce better compatibility between your reconstructions and the ground trouth data. To do that you must change the distance parameter of the method `landmark_and_mask_gt_mesh()` in the file `benchmark.py`, from 1 to a smaller number (e.g. 0.6)." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from benchmark import *\n", "%matplotlib inline\n", "\n", "# Replace DATA_PATH with the path to your data. It should have subdirectories:\n", "# 3dMDLab_real/\n", "# 3dMDLab_synthetic/\n", "# 4DMaya_real/\n", "# 4DMaya_synthetic/\n", "DATA_PATH = Path('~/Dropbox/itwmm_src_data/datasets').expanduser()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 1. Evaluate on 3dMDLab-real" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[====================] 100% (8/8) - done. \n" ] } ], "source": [ "# Define the path of the reconstructed meshes\n", "path_reconstructions = DATA_PATH / '3dMDLab_real' / 'Reconstructions_dummy'\n", "\n", "# Define the path of the ground truth meshes\n", "path_gt = DATA_PATH / '3dMDLab_real' / 'Ground_Truth'\n", "\n", "# Define the model template you are using.\n", "# You can choose on the three supported models according to the model\n", "# you have used for your reconstructions:\n", "# - 'LSFM'\n", "# - 'Basel'\n", "# - 'Surrey'\n", "model = 'LSFM'\n", "\n", "errors = calculate_errors_3dMDLab(path_reconstructions, path_gt, model)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA8wAAAHpCAYAAABX1rXCAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3Xl8VNX5x/HPE/Z9lx1UEEGJQsIui1arAoq4i1jZtYrV\n/qxdXCpqK261rVXckFUoLohKZalUEVD2gJgoICibgsgaIGwJOb8/7iRMQjKZyUwymfB9v155zc3c\nc895LofAPDnnnmPOOUREREREREQkp7hoByAiIiIiIiJSEilhFhEREREREcmDEmYRERERERGRPChh\nFhEREREREcmDEmYRERERERGRPChhFhEREREREcmDEmYRERERERGRPChhFhEREREREcmDEmYRERER\nERGRPChhFhEREREREclDzCfMZlbPzPqa2eNmNtvMdplZpu9rfBG1OcDM/mtmO8zsiJltNrM3zaxL\nUbQnIiIiIiIixc+cc9GOISxmlpnrLf8bmuScGxrBtioC7wG9c7UDYEAm8IRz7olItSkiIiIiIiLR\nEfMjzD7O97UF+BgveS0KEziZLH8K9Ac6AcOAjXh/nqPMbHgRtS8iIiIiIiLFpDSMMI8CVgArnHO7\nzKw5sAkvqY3YCLOZ/QL4n6/emcB1zu8Pz8zqAElAM2AfcLZzLjUSbYuIiIiIiEjxi/kRZufc4865\n2c65XUXc1O98rxnASJfrNw3OuT3AH33f1gQ0yiwiIiIiIhLDYj5hLg5mVhW4FG90+X/Oue35FJ0B\nHPAdX1scsYmIiIiIiEjRUMIcnI5Aed/xgvwKOefSgaV4z1B3NLMyxRCbiIiIiIiIFAElzME5z+94\nXQFls86XBc4pmnBERERERESkqClhDk4Tv+MfCii7ze+4aRHEIiIiIiIiIsVACXNwqvkdHyqgbJrf\ncdUiiEVERERERESKgRLm4FT0Oz5eQNljfseViiAWERERERERKQZlox1AjDjqd1w+31KeCn7HR/Ir\n5Nu3+Qpgc676RURERCKtInAm8F/fVpgiIhIEJczBOeh3XNA06yp+x4Gmb18BTC10RCIiIiKhGwj8\nO9pBiIjECiXMwfFf6KsJsCpAWf+FvrblW8obWWbKlCm0adOm8JFJsfnlL3/JvHnzoh2GhEB9FlvU\nX7FHfRY71q5dy2233Qa+zx8iIhIcJczB+cbvuDUwM0DZ1r7XDGBDgHJHAdq0aUNCQkJ40UmxKFeu\n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\n7+all14K6/62bNnCWWedBcDEiRO5/fbbmTFjBq+++ipr1qwhLS2Nli1bMnz4cH79619TtuzJ1Orf\n//43r7/+OmvXruXQoUO0bt2aO+64gzvvvLPAdg8cOMCYMWOYNWsW3377LampqdSpU4cOHTowaNAg\nrr/++lOuufjii1m4cGH29xMnTmTixImnlPn000/zbXfevHn861//YuXKlezbt49GjRpx5ZVX8vDD\nD9O4ceOAMaenpzN27FimT59OSkoKqamp1K5dm4SEBG699VZuvfXWAqeK//jjj4wePZq5c+eyfft2\nateuTYcOHbj33nu59NJLA15blJQwi4iIREhhP9QePx65Z5Jr1aqYYxS5QYOqIdcR7AJk/fr1Y+bM\n50KuX6Qkio+vz5IlwwKW6dp1XFQW5CrJsWX54YcfuPTSS9mwYUN2YnT48GHmzJnDxx9/zFtvvcX1\n11/PV199RZ8+fdix4+Q6CUeOHGHmzJn897//Ze7cufTq1Sv73PDhwxk5ciTr1q1j+fLldOrUKd8Y\npkyZQnp6OmbGsGGB/7xCkXU/d999N6+++mqOxO+rr77i3nvvZcGCBbzzzjukp6czcOBA3nvvvRzl\nVq9ezV133cXq1at59dVX823rk08+4eabb2bv3r05rt+5cycfffQRH330EX369OGdd96hcuXKOWLM\nKu+cyzM5DZSwPvjggzzzzDM5ymzZsoVXX32V9957j4ULF3Luuefmee3mzZvp3bs369evz3H9zz//\nzJw5c5gzZw6vvfYaH374IbVq1cqzjkWLFnH11Vdz4MCB7Dp++uknPvroI/7zn//w2GOP5Rt7UVPC\nLCIiEiHR+FBrBh06NOLKK1vSu3dLOnVqTJkyBY8ii0hkLFv2AxUq/DVi9aWnR35Rv+Jw4403sn37\ndh5++GGuuOIKKleuzOeff86oUaNITU1l2LBhJCYmctVVV3Hs2DFGjx5Nz549KVeuHHPnzuXJJ5/k\n+PHjDB48mA0bNmSP1g4cOJAHHniAo0ePMmHChIAJc9aI6gUXXED79u0jen+vvPIKy5Yt46qrrmLY\nsGE0b96cbdu28dRTT7F06VJmzJjB+PHjWbNmDTNmzOC2225jwIABNGzYkA0bNvDYY4+xdu1axo4d\ny3XXXcfll19+ShtffPEFffr0ISMjgwYNGvCb3/yGCy+8kEaNGrF9+3befvttpkyZwpw5cxg0aBDv\nvvtujntPS0vj8ssvZ8eOHVxzzTX89a85/15WqVIlz3t7/fXXWbx4MZdccgl33HEHrVq1Yv/+/Uye\nPJnJkyeze/duhg4dyhdffHHKtWlpaVx66aVs2rQJM+Paa69lyJAhNGrUiE2bNvHSSy+xYMECPv/8\nc/r168fChQtPSdy3bdvG1VdfzcGDBylTpgx33nkn119/PTVq1OCrr77i6aef5rHHHqNDhw6F6bqw\nKWEWERGJMXXqVOKKK7wE+fLLW3DGGXl/CBKRoudcZGeJxCLnHGvWrGHhwoU5kpqEhARatmzJVVdd\nxcGDB+ncuTMAK1as4Mwzz8wu16FDB+rUqcPIkSPZunUrs2bN4pprrgGgevXq3HDDDbz55pu8/fbb\n/POf/6RChQqnxPDll1/y5ZdfYmYMHTo04ve4fPly7r//fv72t79lv9euXTsuu+wyzjvvPLZu3cqf\n/vQn9u3bxwsvvMA999yTo1zPnj1p1aoVhw4d4pVXXjklYc7IyOC2224jIyOD3r17M336dCpWrJij\njj59+tCjRw/uuOMOZsyYwSeffJI9Vbl58+YAlCtXDoCaNWty3nnnBXVvS5Ys4c477+SVV3I+GnTJ\nJZdQrlw53njjDZYuXcqaNWu48MILc5R57LHHspPlP//5zzlGgtu3b891113Hr371K6ZOncrixYt5\n/fXXT5mWfv/992ePLE+dOpWbbrop+1xCQgI33ngj3bt3Z+XKlUHdT6TpV9AiIiIlnBl07tyYxx7r\nxbJlw9m58wGmTr2O2267QMmyiESdmfF///d/eY4A9unTh+bNm+OcY/fu3fz1r3/NkSxnGTJkSHaC\nuGjRohznhg8fDkBqaiozZszIM4asPYfLly/PwIEDw7mdPDVt2pRnnnnmlPcrVarEoEGDcM6xd+9e\nunTpkiNZzlK/fn2uvfZanHOn3B/AW2+9xZYtW6hYsSKTJ0/OkSz7Gz58ePYoe+5nlAurYcOG/Otf\n/8rz3AMPnFxLOXfcx48fZ9y4cZgZ559/PqNGjcqzjpdffpk6deoAnPJc+c6dO/nggw8wM66++uoc\nyXKWKlWq8Prrr4d0T5GkhFlERKQEqlevMr/61QX8+9/XsWvX71m6dDijRl2sKdciUiLdfPPN+Z67\n4IILAC+xzishAqhYsSLnnHMOAN9//32Ocz169KBVq1YATJgw4ZRr09PTmTZtGmZGv379qF27dqHu\nIZDrrruOMmXK5HnOf9Q1v/vzL7dv3z4OHDiQ41zWtoq9evUqMP6ePXvinGPJkiVBxV6QG264IXtk\nOrdWrVpRtaq3FkbufklKSmL/fm/bw8GDB+f7jHS1atW46aabcM7xzTffsHPnzuxz8+fP58SJE9l1\n5Kdjx46cf/75Qd9TJGlKtkiQwl1pUYqf+iy2xEp/OedYuHALGzfujWi9cXFGly5NfPsit6R9+4bE\nxQVeUTTaYqXPRKToZSW0ealZsyYAdevWpUaNGgHLOec4ePDgKeeGDRvGH//4Rz799FO2bdtG06ZN\ns8/NnDmTPXv2YGYMGTIkjLvIXzD3F0q5gwcPUr169ezvV65ciZkxd+5c4uKC+6XoTz/9FFS5grRu\nHXi3g1q1apGWlnZKv6SkpGQfZ023z0/nzp2zp3ynpKRQv763QGZycnJ2mY4dOwaso1OnTgWulF4U\nlDCLBKlZs2bRDkFCpD6LLSW9v7ZtS2XSpDVMmPAl33+/L6J1n3NObZYuHU7t2pUiWm9RK+l9JiLF\nJ78pxEB2Aui/qnOgclkjjv4GDRrEI488QkZGBpMmTeKRRx7JPpc1Hbtx48ZcccUVIccejECx+ye4\nwZbLfY8///wzEHgl69yOHj0adNlACtsve/ee/MXxGWecEbCOBg0a5HldKHVkJdnFTQmziIhIPo4e\nzeDDD9cxYcKXfPzxdzhXNO3UqVM55pJlEfGYQblyeU/VLYz09BNF9m9NLDvjjDO46qqreP/995k4\ncWJ2wrxjxw4+/vhjzIxBgwaFlHCWJFnJaO/evXn22WejHE3oIvHnXlL7TgmziIhILqtX72D8+NVM\nnZrMvn2R+Q2+iJRsyck76dp1XIFlcuvcuUmB28mFIq+t5wobW2kzfPhw3n//fTZt2sTChQvp2bMn\nkyZN4sSJE5hZwGdgS7o6deqwY8cOjh8/HvTq1tHm/6z1zp07admyZb5l/aeP+1/nvy/zzp07ady4\ncb51+D/7XJwikjCbWQ3gFqAHcDZQDSjoV23OORedJ7dFRERy2bPnMFOnJjN+/GrWrCncf8r6UCsS\nu9LS0iO6R3okleTYitOVV15JkyZN+PHHH5kwYQI9e/Zk4sSJmBk9evSgRYsW0Q6x0Nq3b8/27dtZ\nuXIlGRkZ2ftQh6o4R2nbtm2bfbxs2TIuuuiifMsuX748z+vi4+Ozj1esWBEwYV6xYkVhQw1L2Amz\nmV0DjAOyfj0QbC9psomIiETViROZfPzxd4wf/yUzZ64Pey9VfagVESk6WYt6/eUvf2H69Onccsst\nfPvtt5gZw4ZFbpQ/Gvr168esWbNITU1lwoQJjBgxolD1ZD1LfuzYsUiGl6fExERq1qxJamoqkyZN\n4v7778+z3KFDh3jnnXcwM84777wczyJfcskllClThszMTCZNmkT//v3zrGPFihU5FhkrTmHtS2Fm\nicC7eMmyAXuBT3zvvV3A1zvhtC0iIlJYGzbs4aGHPqF583/Sp8+/mT79m7CTZRERKXpDhw7FzDh8\n+HD2itjVqlXjhhtuiHJk4Rk0aBBNmzbFOccDDzyQ517N/r744gsWLlx4yvsNGzbEOcd3331XVKFm\nK1++PMOHD8c5R0pKCn/5y1/yLDdy5Eh2794NwG9+85sc5xo0aMA111yDc46ZM2cyffr0U65PS0vj\nzjvvjNozzuGOMP/JV8cxYCQw0TmXGXZUIiIiEXbo0HGmT/+G8eNXs2jR1rDrq1y5HIcPp0cgMhER\nyVJQUtS8eXMuu+wy5s2bx86dOzEzbr75ZipViu2FE8uXL88777zDJZdcwqFDh/jFL37BLbfcQv/+\n/TnrrLPIzMxkx44dJCUlMWPGDFJSUnjppZfo2bNnjnq6devG/PnzWbFiBc888wy9e/emSpUqAFSq\nVIlGjRpFNO5HH32UGTNm8P333zNq1Ci++uorhgwZQsOGDdm0aRMvvvgiCxYswMzo1q1bniPnzz//\nPPPmzePgwYMMGDCAzz77jBtuuIHq1auzZs0ann76aTZu3EiHDh2iMi073IS5O97U6medc+MjEI9I\niTVt2jQGDBgQ7TAkBOqz2FIU/eWcY/HibYwfv5q33/6atLTwEtzatSsxcGA8Q4a04+67Z5/206/1\nMyaxqm3beiWyrkjXF+nYioMLYonw4cOHM2/ePJxzRbr3cnHr3Lkzn332GTfddBPbtm1j6tSpTJ06\n9ZRyZoaZ5djHOctdd93FK6+8wr59+3jwwQd58MEHs89dfPHFfPrpp4WKLb9+qVq1Kp9++im9e/dm\n3bp1vPfee7z33nunxNu9e3c+/PDDPH8h0rx5c2bOnMk111zDwYMHefnll3n55ZdzXD9q1CicczGZ\nMGc9tzw73EBESjp9MIw96rPYEsn+2r79IJMne3smf/vtnrDqioszLr+8BUOHtqNfv3OpUMH7r/N0\n/1AL+hmT2DV2bL9oh5CvkhxbXrKSt+Is179/f6pWrUpaWhqtW7emS5cuQccbquK+v06dOrFhwwYm\nTpzIf/6LL+2kAAAgAElEQVTzH1avXs3u3buJi4ujXr16tGnThl69enH99ddzzjnnnHJ9o0aNWLFi\nBU899RQLFizghx9+yN6vOXe7wcZcUNlmzZqxZs0axo4dy7vvvktKSgoHDhygdu3atG/fnttuu63A\n/yt69erF119/zVNPPcXs2bPZsWMHtWrVomPHjvzmN7/hsssu4/HHHw8p5kixYH6Lk+/FZpuBpkBn\n59zKSAVVWGbWDLgP6IMX1zHgO7znpcc4545EoI3zgV8DvYDmQEUgFfgamAmMdc4dCqKeBCApKSmJ\nhISEcMOSYtCvXz9mzpwZ7TAkBOqz2BJufx0/foL//Gc948d/ydy5G8nMDG9tyRYtajF0aHtuv/1C\nmjQ59bf4op+xWLJq1SoSExMBEp1zq6IdTyTpM9XpZ+PGjbRq1Qoz49lnn+V3v/tdtEOSGBPKv4nh\njjB/CgwC2gNRTZjN7GrgTaA6J1fgrgQkAh2A4WbW1zlX6CfgzeyPwF/xtszy/yRWBy+B7gX81sz6\nOefWFLYdEZHSZMSImaSk7Cqw3Pr15xa4JVPbtvVOGX356qudTJiwmilTktm9+3BYsVauXI6bbjqf\noUPb0b17s6gtMCIiIvkbN877v6Js2bL86le/inI0UtqFmzA/j7f/8v1mNtU5F94nlUIys/bAW3ij\nvQeB0cBneAnzLcAI4BzgIzPr4JxLK0QbA4Cn8BLlY8BLeCuC7wZaAHfjPdPdFJhjZq2dcwfCuzMR\nkdiXkrIryGd9qwb9TPC+fUeYNi2F8eNXk5S0I7wAgYsuasqQIe246abzqVatQtj1iYhI0UhNTWXs\n2LGYGddeey1nnHFGtEOSUi6shNk597WZDQYmAx+b2WDn3MaIRBaaF/CS43Tgl8655X7nPjOzDcBz\nQCvgd8AThWjjIb/ja51zc/2+Xwm8bWbTgeuA+sBw4O+FaEdERPKRmnqUAQPe4/3313LsWHjbQDVo\nUJVBgy5kyJB2nHtu3QhFKCIikbZr1y4OHDjA9u3bGTVqFHv37iUuLo4//elP0Q5NTgNhJcxmlrV8\n2VdAN2Cdma0E1gEFjTY759zIcNr3xdCRk6t1v5ErWc7yd2Ao0Aa4z8yedM4F/UnLzKoB5/vaWJUr\nWfb3OF7CDNA12PpFRCQ4a9fuZu3a3YW+vmzZOPr1O5ehQ9txxRUtKVs2LoLRiYhIUfj973/P5MmT\ns783M0aOHEm7du0CXrd582bS0kKeWEqtWrUivv2SxK5wp2T/mpPP8jogDujo+wpG2Akz0N/veGJe\nBZxzzswm402prglcAvwvhDbK+x1/H6Cc//PR5fMtJSIixSo+/gyGDm3PwIHx1KtXJdrhiIhICLJW\nRi5fvjwtWrTgjjvu4J577inwusGDB7Nw4cKQ2xs8eDDjx2vHXPGEmzD/TM7Fr6Khu+81DUgKUG6B\n3/FFhJAwO+f2mNlevG20zg5QtIXf8fpg65fY0LRp02iHICFSn5VcVaqUIz6+fsAyyck7w9o3uUaN\nCr49k9uTmNhQC3gVAf2MiUhxmDBhAhMmTAj5usJuQaT/L8RfuM8wN4hUIGFog5e0b3TOZQYoty7X\nNaF6Fe855gQzu8I59988yjzqe80A3ihEG1KCjRkzJtohSIjUZyVXfHx9liwZFrBM167jgl4ELIsZ\nXHrp2Qwd2o7+/VtTqVK5cMKUAuhnTERKsvnz50c7BCkFwh1hjiozqwDUxUuYA36qcs7tN7M0oDLe\nStahGg0kAFcAH5iZ/yrZZwN34W0rlQGMdM59W4g2RESkEM48syZDhrRj0KALad68ZrTDERERkVIi\nphNmoJrf8aEgymclzFVDbcg5d9jMrsLbd/ohvNW2c++S/h7wtHMu0NRwERGJgIoVy3LDDecxdGg7\nevU6k7g4TaETERGRyCqyhNm3sjTOuYNF1QbevstZjgdR/hhgeFtQFUYX4Da8EeW8nt2+HNhtZhu0\nB7OISNHo3LkxQ4e25+abz6dGjYoFXyAiIiJSSBFLmM2sBd6q2ZfhbcFUxvf+CeBrYB7wmnPuu3wr\nCd1Rv+NgVqWugJfoHgm1ITO7AXjT184aYBSwCDiIN8X7ZuDPwJ1ATzO71Dn3U6jtiIiUNmlpwfw+\nMzgXXlifpUuHR6w+ERERkUAisgGlmY0CvgHuBy7AS8TN91XW997vgG/M7NH86ikE/9HrYKZZZ+0l\nEsz07WxmdgYwAS9ZTgEucs79xzm33zl3wjm32Tn3DNAPLyFvDbwYShsiIqXNkiXb6Nv33yQn/xyx\nOrWIl4iIiBSnsEeYzew5vEQ56+GxTcAyIGt0tQHQCW8aczlglJlVdc79Idy2nXPHzGwPUBtoUkCc\nNfESZgdsC7GpW/yuHe2cy3OE2jn3qZl9gjfK3t/MajjnUgNVPHDgQCpXrpzjvW7dutGtWzeqV69O\n3759AwY2a9YsDhzIf/Z327ZtiY+Pz/d8amoqs2fPDthGnz59qFGjRr7nk5OTSUlJyfe87uMk3cdJ\nug9PabsP5xzz52/mr39dyPz5mwO2WRi7d+9m2rRp+Z5Xf3h0HyedjvexePFiFi9enOP84cOHA7Yv\nIiJ5M+cKv42ymXUGluAlkhuAu51zn+ZT9hJgDN7oqwO6OueWF7rxk/UuAHrgjRrXzG9rKTPrAiz2\ntf2Ec+7xENp4BW+qtQPaBFoB28yeAv7oK9vFObcin3IJQFJSUhIJCQnBhiIiUiI555g1awNPPrko\nqK2gunRpUqhtpYK5TkROtWrVKhITEwESnXOroh1PJOkzlYiEKpR/E8MdYb7L97oN6Oac25tfQefc\nfDPrDiQBzXzXhp0wA5/jJcxVgEQgzwQVb8unLF+E2EaG33FBf2b+8wUz8i0lMWfkyJHaczTGqM+K\n3okTmcyYsZbRoz/nyy+DX7YhOXknXbuOK7CMlGz6GRMRkdIu3IS5J95I6lOBkuUszrm9ZvYM8LLv\n2kj4AHjQdzyEPBJmMzPgdt+3+4FQdzHf5HfcHe957fxk3ZcDNofYjpRg27aFOpNfok19VnQyMjKZ\nNi2Z0aM/Z9263SFfn5aWHtRItJRs+hkTEZHSLtxFvxr4XleGcE1W2YZhtg2Ab8rzIrxnqIf5ponn\n9gDQBi+J/adz7oT/STMbZGaZvq+8FiWbxcltpB4xs0Z5xWJmdwAdfN8ucc7tC/2ORERKrmPHMnjt\ntZW0avUit9/+QaGSZREREZFYEe4I83G8rZoqF1TQT9YeyJHbZwTuw5tmXQmYZ2aj8UaRKwEDgBG+\ncuuBvweoJ88Hup1z681sAjAUb3Gx1Wb2T3JuKzXA9wXeVOyHwrkhEZGS5PDhdF5/PYm//W0xP/54\nsOALREREREqBcBPmzUA80BcveQxGH9/rpoClQuCc+9LMbgKmANWB0bmL4CXLfZ1zaYVs5m68Xwzc\nDNQFnswrFCANGOGcC/bPQ0SkxDpw4BhjxiznH/9Yyq5doa+yW61aeapXr6AkW0SK3Nq1a6MdgojE\niFD+vQg3YZ6Dt8fyfWY2q6Ak0cwuwhsNdr5rI8Y5N8vMLvDV3xdvJPg4sBF4BxjjnDsaqIoC6j8O\n3GpmrwGDgS5AY7wR9gN4Cfk8YKxzbnt4dyMiEl179hzmhReW8eKLy9m/P9A/nXmrXbsSv/1tZ+65\npxN/+MM8UlJ2FXjN+vXrOPfc1gHLtG1bL+RYRKTU2x0XF3f0tttuqxjtQEQkdsTFxR3NzMws8Nmy\ncBPmfwIj8VaonmdmLwHjnXM5FsUys/PwpjOPxEswD/qujSjn3Da855UfCPG6ScCkIMsuABaEHp2I\nSMn300+HeP75xbzyykrS0tJDvr5Bg6o88EBX7ryzA1Wrlgdg7Nh+QV3br18/Zs58LuQ2ReT05pzb\nambn4s0AFBEJSmZm5m7n3NaCyoWVMDvndprZrcAMoDzwf8D/mVkasAtv1LYeUNV3ieE93zvAOfdz\nOG2LiEjkbN2ayrPPfsEbb6zi2LETBV+QS7NmNfjjHy9i6ND2VKwY7u9iRURC4/vQW+AHXxGRUIX9\nqcY595Fvf+U3gLa+t6tyMkn2l4z3fG8k9l8WKVYDBgwouJCUKOqzgm3YsIenn/6cyZO/IiMjM+Tr\nzzmnNg8+2J2BAy+gfPkyYcWi/oo96jMRESntzLmAj+6GVplZD+AyvMS5tu/tvUAK8D8thHWSmSUA\nSUlJSSQkJEQ7HBE5zaSk/Mzo0Yt4++2vycwM/f+Btm3P4OGHe3DjjedRpky4OxSKSFFbtWoViYmJ\nAInOuVXRjkdEJFZEdN6cLyFWUiwiUkKtXLmdJ59cxAcfrCvU9R06NOKRR3pw9dXnEhdnEY5ORERE\npGTRg2YiIqeBRYu28OSTi/jvf78r1PU9ejTjkUd68stfno2ZEmURERE5PShhFhEpIUaMmBnU9kvB\naNu2Hq+/fjXz5n3Pk08uYuHCLYWq54orWvDwwz3o0aN5ROISERERiSVBJcxmdkbWsf/q1v7vF4ZW\nyhYROSklZRdLl/4Qkbr27TtC585vsGJF4baF79+/NQ891J2OHRtHJB4RERGRWBTsCPMO36vLdc2O\nPMoGK3ddIiISIevX7wn5mrg44+abz+fBB7sTH1+/CKISERERiS3BJqz5PbCmB9lERGJc2bJx3H77\nBfzpT90555w60Q5HREREpMQINmG+K8T3RUqdrVu30qxZs2iHISFQnwVWoUIZhg9P4Pe/70bz5jWj\nHY76Kwapz0REpLQLKmF2zr0WyvsipdE999zDzJkzox2GhKA09FmVKuUKnB6dnLyTtLT0kOq8664O\n3H9/Vxo2rBZuiBFTGvrrdKM+ExGR0k7PEIuIlGDx8fVZsmRYwDJdu44LarGwGjUqcO+9nbnvvs7U\nqVM5UiGKiIiIlFphJcxmdpPvcI5z7mCQ11QB+gI4594Jp30RESlY3bqVuf/+Ltx9d0dq1KgY7XBE\nREREYka4I8xv4a12HQ98E+Q1DXzXZQJKmEVEikijRtX4/e+7MWJEAlWqlI92OCIiIiIxJ5pTsrXC\ntohIETnrrJqsXTuSChX05I2IiIhIYcVFoc0yvtcTUWhbROS0UL9+VSXLIiIiImGKRsJ8ju91XxTa\nFhEpsY4cCX6laxEREREpeiENP5hZp3xOXWBmVQu4vALQAvgT3nPPX4bSdjDMrBlwH9AHaAocA77D\ne1Z6jHPuSCHr7QXMD/Gyz5xzvyhMeyJyeklLO85f/rKQNWt2RjsUEREREfET6ny9pXjJrj8DpoZQ\nh/nqeCPEtgNXanY18CZQnZMxVgISgQ7AcDPr65z7rpBN5L7vgqwrZDtSQr300kvRDkFCFAt9NnPm\neu69dw5btqRGO5Soi4X+kpzUZyIiUtoV5gG3vBbrCmUBr5+Bp51z7xai7TyZWXu8lbcrAgeB0cBn\neAnzLcAIvKngH5lZB+dcWohNLMdbCbwgY4BeeMn15BDbkBKuWbNm0Q5BQlSS+2zLlv3ce+9cZs5c\nH7BccvJOunYdV2CZ0qAk95fkTX0mIiKlXagJc2+/YwNm4yWHdwFbAlzngKPADmCjcy7U0dqCvICX\nHKcDv3TOLfc795mZbQCeA1oBvwOeCKVy31TugNtmmVkNoAvevW50zi0NpQ0ROT0cP36Cv/99CU88\nsYAjRzIKLJ+Wls7SpT8UQ2QiIiIikltICbNz7r/+35tlDyx/7pwLdh/miDKzjkB3fNO8cyXLWf4O\nDAXaAPeZ2ZPOuUiv0n0L3nPaGl0WkTwtWLCZu++ezTff7Ip2KCIiIiIShHBXyW7j+/o2ArEUVn+/\n44l5FfCNaGclsTWBS4ogjl9lNYf3LLWICAA//5zGoEEfcPHFk5Qsi4iIiMSQcBPm1b6v+yIQS2F1\n972mAUkByi3wO74okgGY2dlAN7xkeZFzbmsk6xeR2JSZ6XjttZW0bv0SkyeviXY4IiIiIhKiwiz6\n5S8OKAcsiUAshdWGk88NZwYo579qdZsIxzDI73hihOsWkRi0evUOfv3rWSxf/mPQ11SoUIbGjatz\nxhmVCW0txVO1bVsvrOtFREREJPyEeQfQDG+xrWJnZhWAungJc8BVcZxz+80sDaiMt0dzJA30vR4B\npke4bhGJIQcOHOPPf/6Ul15aQWZm8OsbDhnSjmef/SV161YuwuhEREREJBThTsn+3PfaLtxACqma\n3/GhIMpnbSdVNVIBmFl34Gy8pH1GIbaskhgxbdq0aIcgISrOPnPO8fbbKbRu/RL/+tfyoJPltm3P\nYNGiIYwff81pnyzrZyz2qM9ERKS0CzdhfgnIBB4wsyoRiCdUFf2OjwdR/hjePMdKEYzhV37HWuyr\nFNMHw9hTXH22YcMerrhiCrfc8h47dgTzuzuoUqUczz33S1atuoPu3bWXLehnLBapz0REpLQLa0q2\nc26Zmf0Ob9um+Wb2a+fcqsiEFpSjfsflgyifte3TkUg07psSfqPv2+3A/yJRr4jEhqNHM3jqqUU8\n/fQXHD8e/E51117bmhdeuJKmTWsUYXQiIiIiEq6wEmYze9l3uBboAKwwsw3AV8A+INAnSOecGxlO\n+8BBv+NgpllnjYIHNwRUsH5421Q5YIpv+6qQDBw4kMqVc07D7NatG926daN69er07ds34PWzZs3i\nwIED+Z5v27Yt8fHx+Z5PTU1l9uzZAdvo06cPNWrk/8E+OTmZlJSUfM+Xlvto2rTgR99j4T5KS38E\ncx9NmzYNOAIWzn2sWZPGxIk/s3Nn8Es41KtXlsGDz6B9+0w+/9yr93Tqj4Luo1atWgGvj5X7KC39\nEcx9tGjRIuDPWKzcR2npj6z7WLx4MYsXL85x/vDhwwHbFxGRvFkhcryTF5tl4iWL2W/l+j4g51yZ\nQjd+MoZdQG1gjXMuIUC5msBeX3zvOuduiUDb/wH6+uqMd859E8K1CUBSUlISCQn5hi0lSL9+/Zg5\nc2a0w5AQFEWf/fjjAX772/8yfXrQP+6UKxfHH/5wEQ891IPKlctFNJ7SRD9jsUd9FjtWrVpFYmIi\nQGIxzwYUEYlp4a6S/TMhJMhF5BugB9DSzOICbC3V2u94bbiNmlk94Aq8+18VSrIsIrEnIyOTF19c\nxqOPfsahQ8EsmeC55JIzefnlvrRuXbfoghMRERGRIhHuM8wNIhVIGD7HS5irAInAinzK9fI7/iIC\n7Q7E+/NzwKQI1CciJdSSJdu4665ZrFmzM+hr6tevwvPPX86tt8ZjFt6eyiIiIiISHeGukl0SfOB3\nPCSvAuZ9Wr3d9+1+YH4E2s1aHTsd0DKhIqXQnj2HGTFiJt26jQ86WTaDkSM7sm7dPQwceIGSZRER\nEZEYFvMJs3NuBbAI7/npYWbWOY9iDwBt8EaD/+mcy7EYmZkNMrNM39ejBbVpZucB7X31zXXO7Qn3\nPqTkC2bRLylZCttnmZmOCRNW07r1GN54Y3XQ1yUmNmT58hG89FIfatasWPAFkoN+xmKP+kxEREq7\ncJ9hzpeZVQNwzh0sqGwE3Ic3zboSMM/MRuONIlcCBgAjfOXW422BlZ9gn8ce5Hes6diniTFjxkQ7\nBAlRYfosJeVn7rprFp9/vjXoa6pXr8Do0b/g17/uQJkyMf97yKjRz1jsUZ+JiEhpF7GE2cxaAL8G\nLgPOB8r43j8BfA3MA15zzn0XqTazOOe+NLObgClAdWB07iJ4yXJf51xaOG35pncP9H27D/hPOPWJ\nSMlw6NBxnnhiAf/4x1IyMvJbO/BUt94az/PPX06DBsHsbCciIiIisSQiCbOZjQIe8qvP/6G9ssAF\nvq/7zOxJ59wTkWjXn3NulpldgDfa3BdoAhwHNgLvAGOcc0cDVRFkU5cCDX3l33LOZRQ+ahGJNucc\nH3ywjvvum8u2bfnvgZrbuefW4eWX+/KLX5xVhNGJiIiISDSFnTCb2XPA/ZxMkjcBy4CffN83ADoB\nZwPlgFFmVtU594dw287NObcN73nlB0K8bhJBTq12zv0P3+i5iETHiBEzSUnZFXY9x45lsHv34ZAS\n5YoVy/LIIz144IFuVKhQZE+1iIiIiEgJENanPd8CW7/DG239FrjbOfdpPmUvAcbg7Yf8OzOb7pxb\nHk77InJ6SknZxdKlPxR7u336nMOLL/bm7LNrFXvbIiIiIlL8wh0eucv3ug3o5pzbm19B59x8M+sO\nJAHNfNcqYRaREq9Jk+r8619X0r9/a20TJSIiInIaCXc51554o8tPBUqWs/jKPIM3fbtnmG2LiBSp\nMmWMBx7oytq1I7n22jZKlkVEREROM+GOMDfwva4M4Zqssg3DbFtEpMhcdFFTXnmlL/Hx9aMdioiI\niIhESbgjzMd9r5VDuKZSrmtFYsLIkSOjHYIEUKVKObp0aRLwq0qVcgXWU6dOJcaP78fChUOULBcz\n/YzFHvWZiIiUduGOMG8G4vG2cVoU5DV9fK+bwmxbpFht27Yt2iFIAPHx9VmyZFjAMl27jgu4WNjw\n4e15+unLqFMnlN8BSqToZyz2qM9ERKS0C3eEeQ7e88j3mVmPggqb2UV4+yQ737UiIlF3wQX1+eKL\noYwd20/JsoiIiIhkCzdh/idwCCgPzDOzv5nZebkLmdl5ZvY34H9ARd81/wyzbRGRsDVvXoOkpDvo\n1q1ptEMRERERkRImrCnZzrmdZnYrMAMvaf4/4P/MLA3YhTeSXA+o6rvEgAxggHPu53DaFhGJhIYN\nq1G2bLi/OxQRERGR0ijsT4nOuY+A7kAKXkJseAnyWcDZQDW/95OB7s652eG2KyIiIiIiIlKUwl30\nCwDn3HLgAt9zzJcBbYHavtN78ZLp/znngl0YTERERERERCSqIpIwZ/ElxEqKRaRIHTmSHu0QRERE\nROQ0oAf3RII0YMCAaIcgwJQpX5GcrCUQSiP9jMUe9ZmIiJR2ER1hzmJmjfGbku2c+7Eo2hEpTvpg\nGF2HD6dzzz2zmTDhyzzPJyfvpGvXcQHrSE7eWRShSYToZyz2qM9ERKS0i1jCbGYXA3cDvwBq5Tq3\nH/gUeNk5Nz9SbYrI6eGbb3Zx443v8s03u/Itk5aWztKlPxRjVCIiIiJS2oU9JdvMKpjZVOAT4Hq8\nkWXL9VULuA74n5lNM7OK4bYrIqWfc44JE1bTocPrAZNlEREREZGiENYIs5kZ8BHeqLIBJ4DPgOVA\n1tzH+kBH4BKgDHATUBf4ZThti0jpdujQce6+exZvvvlVtEMRERERkdNUuFOyhwOXAg4vUR7mnNuU\nV0EzOxN4Ay+5/oWZDXfOvRFm+7nbaAbcB/QBmgLHgO+Ad4AxzrkjEWzrOuAWoAPQADiC90uCJLzR\n9knOORep9kROJ8nJO7nppumsW7c72qGIiIiIyGks3IR5sO91NXC5cy4jv4LOuc1mdiWwFEgAhuIl\n0BFhZlcDbwLV8RJ4gEpAIl5SO9zM+jrnvguznabAv4GL/NoBqADUBFoDtwIzgAPhtCVyunHO8cYb\nq7j33rkcPZrvPyfZypQxWrSoRe3alQvdZtu29Qp9rYiIiIiUbuEmzOfjJY3PB0qWszjnMszsb3gJ\n53lhtp3NzNoDbwEVgYPAaLwR70p4o8AjgHOAj8ysg3MurZDtNAEWAGcCGXgJ+kfAFrznwc8CLgP6\nF/5uRE5PBw4c4847P+Ktt1KCKt+xYyPefvsGzjqrVsGFRUREREQKIdxFv8z3ui6Ea9bnujYSXsBL\njjOAXzrnnnHOLXPOfeac+zXwB197rYDfhdHOVLxkeS9wkXNumHPufefcKufcSufcu865O4GGzjmN\nLpcyW7dujXYIpdbq1TtITHw96GT5t7/tzOefDy0wWVafxRb1V+xRn4mISGkXbsKcNb25bgjXZJX9\nPsy2ATCzjkB3vJHuN5xzy/Mo9ndgLV7SfJ+ZlSlEO7cBPXztjHDOrcivrHMuM9T6peS75557oh1C\nqeOc4+WXV9C16zg2btxbYPlatSry4Ye38I9/XEn58gX/GKvPYov6K/aoz0REpLQLN2F+Gy8JHRjC\nNQPxks53wmw7i//054l5FfAtvjXZ921NvBW7QzXS97reOfd+Ia4XET+pqUe56abpjBw5m2PHThRY\nvkuXJqxefSf9+p1bDNGJiIiIiISfML8AfAX8yszuLaiwmf0GuB1IBv4RZttZuvte0/BWqM7PAr/j\ni0JpwLfQV2e8RP8/fu+XNbPmZtbEzMJ9HlzktLFy5XYSEl5n+vRvgir/+993Y+HCwTRvXrOIIxMR\nEREROSncJK86cBswDviHmd2KN8q7AvgZL8HM2of5drykcwXeCtnVzax6XpU6534OIYY2vnY2FjAV\n2v856zYh1A9e3FmSzaw+8DRwI5C1PO9hM/sYeNw5tybE+kVOC845XnxxOQ888DHp6QU/uVCnTiUm\nTepP376tiiE6EREREZGcwk2Yd/gdG15i3DFAecPb4umrAGVcsHGZWQW8Z6Id8EOgss65/WaWhpfg\nNg2mfj/+K3rXwRshz2rXfwur/kBfMxvqnJsaYhsipdq+fUcYNmwm778f3BqB3bs3Y9q062nSJM/f\nq4mIiIiIFLlIrJKd9ZX7+7y+gikTyurZ1fyODwVRPms7qaohtAFQ2+/4KbykeTIQj7f/chPgQeAY\nUA4Y59vqSkSAZct+oH3714JOlh98sDvz5w9SsiwiIiIiURXuCPNdEYmi8Cr6HR8PovwxvIS8Uojt\nVPE7rgCMc87d4ffeDuBZM9uKt8d0OeCvQN8Q2xEpVZxz/OMfS/njH/9HRkbBU7Dr1avMm29eyxVX\ntCyG6EREREREAgsrYXbOvRapQArpqN9x+SDKV8CbQn2kkO0YkA48nFch59xbZnY/3rTzy82suvZj\nltPVnj2HGTz4Qz766Nugyl988ZlMnXodjRpVK7iwiIiIiEgxiPWVnQ/6HQczzTprpDiY6dt5teOA\nL51zuwKU/S9ewhwHJALzA1U8cOBAKleunOO9bt260a1bN6pXr07fvoEHqWfNmsWBA/nn5G3btiU+\nPkWCGaEAACAASURBVD7f86mpqcyePTtgG3369KFGjRr5nk9OTiYlJSXf86XlPgYOLHj3tFi4j+Lo\nj48/Xsutt85gz56MgO0AmMGf/9yTRx/tRZkyJ58SicR9DBw4kGnTpuV7/nTpj1i5j/vvvz/g9bFy\nH6WlP4K5j/79+wf8GYuV+ygt/ZF1H4sXL2bx4sU5zh8+fDhg+yIikjfztiiOXWa2C+8Z4zXOuYQA\n5WoCe/GS3nedc7eE0MZdwBjfte87524IUPYO4FVf2QHOuTz3mzazBCApKSmJhIR8wxaJKZmZjuee\n+4KHH/6UEycK/relfv0qTJ16HZdeenYxRCcicvpatWoViYmJAInOuVXRjkdEJFZEdITZzGoDPYC2\nnFwoay+QAixyzu2NZHs+3/jabGlmcQG2lmrtd7w2xDa+9jsuU0BZ//MFD6+JlBK7dqUxaNAHzJmz\nMajyl156FlOmXEeDBqGuwSciIiIiUjwikjCbWV3gOeAW8n+W+LiZTQP+WMCU5lB9jpcwV8GbAr0i\nn3K9/I6/CLGNlXjPPVcEChoKa+F3/GOI7YjEpIULtzBgwHts336wwLJxccZjj/XioYd65JiCLSIi\nIiJS0oT9adXMzscbQb4db1Gt/LaKqgAMAr4yszbhtuvnA7/jIfnEaL74APZTwHPFuTnnDgNz8e7j\nfDNrkVc5XzvX+L49DGjKk5RqmZmOJ59cyCWXTAoqWW7YsCqffno7f/5zLyXLIiIiIlLihfWJ1cwq\nAbOBM/CSyUV4SXFroKbv6//Zu/P4qqqr/+OfxRyGACqirWAVtWLBaoID0dYJBEGoljogdWjVVkXF\nAe34OOBTamvFAWnrWBQVZxEFB7TiFHnQoDYoDqgVcMABCRimQNbvj3Pz4xJzT+7NubnJufm+X6+8\n7rnZ+5y1Tvfj62Fln7P37gTF6nOJPj2B2WbWoa5rZsrdX0nENeBUM9uvjm7jgb4E7xVf6+6bat3H\nyWZWnfi5JEWoK2u6A1PMrK7Z+T8QzDA7cJu7V2V+RyLxsHz5Nwwdeid//OOzVFfX/77ykCF9eP31\nMzjooO81fnIiIiIiIlkQdYrnLKAXQYF4jrsf5O7T3P1dd1+V+HnX3e9090OAsxPn9U6cmy3jCB6Z\nbgvMMbPfmtl+Znawmd0I/CXR7x1gUsh1Uv6rP1GYTyEomA8HXjSz48xsbzM73MymARMS3ZcAl0e7\nJZHm69///pC99rqROXM+qLdv69bGn/98GLNnj2HbbTvV219EREREpLmI+g7z0QRF5jR3n1JfZ3f/\nu5ntSzDj/FPCi9e0ufvrZnYscCdQCEys3YWgWB7u7pURQo0j2L7qJGAfoPZeGg68BxzZSAuciTSp\nTZuqueKK55kw4TnSWWB/hx0KmT59FAce2LvxkxMRERERybKoM8w1K0/flcE5NX13D+2VIXefBewJ\nXENQHFcCXxMsAnYxUOTuH4ZdIo0Y1e7+C+AI4EFgGbAe+Ap4nqCg3tPd01smWGIlbK/RluDTT1cz\nePA0Lr88vWJ5+PBdee21XzdpsdzSxyxuNF7xozETEZF8F7VgrtkP5ssMzqnpm/W9ZNx9qbuPd/e+\n7t7F3bd29/3c/Wp3Xxdy3u3u3jrxMyFVv6T+T7n7se7e290L3L2Hux/s7je4+4bs3pU0Fy35H4Zz\n5rzPXnvdyLPP/rfevm3atOKqqwYzc+ZottmmY+MnF6Ilj1kcabziR2MmIiL5Luoj2V8C2xPMFr+W\n5jnfTzpXRJqxjRurueyyuUyc+EJas8q9e3fl3nt/xv7779D4yYmIiIiINLKoBfN84CjgPDO7192r\nwzqbWSvgfILHn+dHjC0iIU4/fSYLFzZ8y/MNGzbx3ntfsXp1eg9N/OQn3+e2237CVlsVNDimiIiI\niEhzErVgvoOgYB4APGJmp7r753V1NLMewC0Ei2U5cHvE2CISYuHCL5g3b1mjx2nbNngE+9xz9yPY\nilxEREREJD9EKpjdfYaZzQaGJX4+NLNZwP8BnxMUxj2B/RLtNVNPs9z9kSixRaTp7bRTN+6992fs\ns893mzoVEREREZGsizrDDHAMcA8wgqAgHpX4qa1m6mkmMDoLcUWkCY0a1ZdbbhlJt24dmjoVERER\nEZFGEXWVbNx9rbv/hKBwfhbYSFAcJ/9sTLT9zN2Pcve1UeOKSNNo1641N9xwBPfff4yKZRERERHJ\na9mYYQbA3R8EHjSz9sBuwFaJphXAu+6+PluxRJpCr169mjqFyDp1akv//j1D+5SXL6eysqrOtj59\nunPffcdQVLR9Y6SXdfkwZi2Jxit+NGYiIpLvzNPZKybVyWbbJg7Xuvvq7KTUMphZEVBWVlZGUVFR\nU6cjeWjgwFu/tejX/vvvwMsvn5rxeQDHHfcDbrppBIWF7bOap4iINL4FCxZQXFwMUOzuC5o6HxGR\nuIj6SPZnwKfAKdFTEZHmaqedujF9+igVyyIiIiLSokQtmGveRf6/qImISPPVs2dnbRklIiIiIi1O\n1IL5kyxdR0RERERERKRZiVroPp34HBg1EREREREREZHmJGrBfD2wHrjIzMKX3hURERERERGJkUgF\ns7svAk4CugIvm9lPzax1VjITERERERERaUKR9mE2s9mJw4+BXYD7gTVmtgj4GtgUcrq7+/Ao8UUk\ntY0bw/7zExERERGR+kQqmIGhQPJGzgZ0AgbU+n1tVk+7SLMzduxYpkyZ0tRppGXJkgrefPOLb/2+\nvHw5AwfeGnpuefnyxkor5+I0ZqLxiiONmYiI5LuoBfN8VPhKC7F06dKmTiEtCxd+ztChd7J27cZv\ntVVWVjFv3rImyKppxGXMJKDxih+NmYiI5LtIBbO775+tRLLBzHoD44BhQC+CBcneB+4Dprj72pDT\n67v2pcClaXY/2N2fb2gskYZ6/vmPGDlyOhUV65s6FRERERGR2Is6w9xsmNkIYBpQyOZZ7wKgmOAR\n8dPMbLi7vx8xVH0z6ppxlybx8MOLGD36Qdav17vLIiIiIiLZkBcFs5ntDdwDdABWAxOBuQQF8/HA\n6cCuwGNmNsDdKyOG7EfwHnYqH0a8vkhG/vnPVxk7djbV1fp7jYiIiIhItjRKwWxm3wW2Snxd4e4f\nN0acJNcRFMdVwGB3n5/UNtfM3gOuAnYDLgQmRAmW2E5LpMm5O5deOpcrrqj/DYBOndqy++7b0LZt\n5ju/9evXoyHpiYiIiIjEWtYKZjM7GDgLOBToXqttJfBv4O/u/my2YiauvQ9wIMGj0LfUKpZrTAJ+\nCfQFxpnZn9xdz61KrG3cWM1ZZ83i5psX1Nt3yJA+PPDAsXTu3C4HmYmIiIiI5IdWUS9gZu3N7C7g\nGWAUwcyy1frpDvwUeNrMpptZh6hxkxyVdDy1rg7u7sAdia/dgEOyGF8k59asqWLUqPvSKpZPPHFP\nHn10tIplEREREZEMRZphNjMDHiOYVTZgE8G7w/OBms1cewL7EBSprYFjgW2AwVFiJzkw8VkJlIX0\ney7p+ADg6SzFlxZi9OjRTZ0CACtWrGXEiOmUlta/nctFF5Vw5ZWDaNUq7JX7/NVcxkzSo/GKH42Z\niIjku6iPZJ8GHEbwOPRc4FR3r3PBKzP7HnALQXF9qJmd5u63RIwPwWPWDix29+qQfm/XOqfBzOxJ\nYC+C2eqVwFvAE8CN7r4yyrWl+WoO/zBcurSCIUPuZNGiL+vtO2nS4Zx//sAcZNV8NYcxk/RpvOJH\nYyYiIvku6iPZpyQ+XwMOT1UsA7j7f4GhwAKC2ehfRoyNmbUnmK0GWBbWN1HI1qyO3Sti6EGJuG0S\nnz8G/gx8YGYjI15bpE5vvvk5AwfeWm+x3LZtK6ZPH9Xii2URERERkaiiFsw/IJjdvdrdN9bXOdHn\nb4mve0SMDdAl6fibNPrXFMydGxjvP8AVwAiC/Z33B04GniL436Eb8ICZDWng9UXq9MILH3Hggf/i\n449Xh/br3Lkds2eP4fjj++UoMxERERGR/BX1keyaFyPfDu21pXdqnRtF8uJhG9Lovz4Rt6ABsa5x\n98vr+P0rwJ1m9ivgnwTvad9iZn3cPZ2cRELNmPE2xx//AOvXhy/svu22nXj88TEUFW2fo8xERERE\nRPJb1Bnm9xOf24T22lJN3w8ixgZYl3SczhLA7QlmgtdmGsjdV9XTfhNwK0FB/h2CFcNFIrnxxlcZ\nNeq+eovlXXbZitLSX6pYFhERERHJoqgzzPcSLH41BpiT5jljCIrW+yLGBkh+PjWdx6w7JT7TeXy7\nIW4ETk0cHwRMr++EMWPG0LFjxy1+V1JSQklJCYWFhQwfPjz0/FmzZrFqVepavl+/fvTv3z9le0VF\nBbNnzw6NMWzYMLp27Zqyvby8nIULF6Zs131slu59uDsPPvgVDz20IjQeQHHx9syePYZttw3+z7s5\n3UeYOI1HGN1HQPexme5jM91HINf3UVpaSmlp6Rbta9asCY0vIiJ1s2CL4gaeHOynPA/oD5zv7tfX\n0/8c4DqCd4H3d/d1Yf3TzOELgr2f33D3opB+3YAVBMX6/e5+fNTYdcToSFCMOzDb3UeE9C0CysrK\nyigqSpm2tEAbN1Yzduwsbrqp/j2WDz+8Dw8+eKz2WBYRkVALFiyguLgYoNjd6/9/MCIiAkR/JLsQ\n+DnwKnCNmc0zszPMrNjMepnZDonjM8ysFLiW4J3fMUChmW1b10+GObxF8Bj0LmYWdj+7Jx0vyjBG\nuhr+1wdp9pYsWdLoMdaureJnP7svrWJ5zJj+PProaBXLIXIxZpI9Gq/40ZiJiEi+i1owfwq8AQwg\nKFr3AaYA84H/Ah8ljqcA+yX6DCCYYf40xc8nGebwYuKzE8HK1akclHT8UoYx0pW88nem9yHN3Nln\nn92o11+xYi2DB0/jkUfeqbfv+PEDueOOo2nXrnWj5hR3jT1mkl0ar/jRmImISL6LWjBb0k/t73X9\npNMn09WzZyQd/6LOJM0MOCnxdSXwbIYx0nVG0vFzjRRD8tDSpRX86Ef/4qWXltbb9+qrD+eqqw6n\nVatsLDQvIiIiIiKpRF3068ysZBGBu79iZi8APwJONbPb3f3/anUbD/QleGT6WnffYslhMzsZ+Ffi\n62XuPqFWez9grbu/TwqJbaVqFvz6DHi4ofckLcubb37O0KF3sWxZ6ELstG3biqlTj+KEE1Iv+iIi\nIiIiItkTqWB29xuzlUhE4wgesy4A5pjZRIJZ5AJgNHB6ot87wKSQ66R6B7mYYG/lZ4HHgXLgK4L/\n/XYneI97cKLvRuB0d8946yppeV56aQlHHjmdlSvD17/r3LkdDz10LIMH98lRZiIiIiIiEnWGuVlw\n99fN7FjgToKFyCbW7kJQLA9398oGhmkFHAYMSpUGQRH9S3cP359CBJgx421Gj36Qdes2hvbbdttO\nzJ59AsXF38lRZiIiIiIiAnlSMAO4+ywz25Ngtnk4sAOwAVhMsOfzlHq2sQpb4XoWwePWA4G9gZ7A\n1gTvW68gWPjsCWCquzfWHs+SR266qYwzz5xFdXX4wup9+nTnySd/Tp8+W+UoMxERERERqZE3BTOA\nuy8leF95fIbn3Q7cHtL+JTA18SPSYO7OhAnPcdll9a8JV1S0PbNnn0DPnp1zkJmIiIiIiNSWVwWz\nSHO2aVM1Y8fO5sYby+rtO3jwzjz44LF06dI+B5mJiIiIiEhdVDCLpOmGG25o8Llr11ZxwgkPMWPG\n2/X2PeGE/vzrXz/RHstZEGXMJPc0XvGjMRMRkXynglkkTb17927QeV9/vZaRI+/hxReX1Nv3ggv2\n1x7LWdTQMZOmofGKH42ZiIjkOxXMIo1o6dIKjjjiLt5884t6+/7tb4O58MKSHGQlIiIiIiLpUMEs\n0kjeeusLhgy5k2XLVoX2a9OmFVOn/oQxY/bMUWYiIiIiIpIOFcwijeCll5YwYsR0vv46bCcz6NSp\nLQ89dByHH94nR5mJiIiIiEi6VDCLZNnMme9w3HEPsG7dxtB+PXp0ZPbsMQwY8J0cZSYiIiIiIplQ\nwSySRTffXMYZZ8yiutpD++28c3eefPLn7LLLVjnKTEREREREMtUq6gXMrJWZpbyOmZ1uZnPM7DUz\ne8jMDo8aU6S5cXcmTHiOX/3qsXqL5b333o6XXvqlimURERERkWYuUsFsZsOBKmClmXWto/0fwD+B\nQ4EfAj8BHjezC6LEFWkK06dPr/P3mzZVc9ZZs7j00rn1XmPQoJ157rlT2G67zlnOTuqSasykedJ4\nxY/GTERE8l3UGeYhgAGPuXtFcoOZDQR+nWjfACwCNia+X2lmfSPGFsmpuv5huHZtFccccz///GdZ\nveePHt2PWbNOoEuX9o2RntRB/5iPF41X/GjMREQk30V9h3kg4MC/62j7deLzU+AAd/+vme0EvABs\nn2g/L2J8kchOP30mCxfWv0/yO+98n4EDb/3/3zdurOadd75k9eoN9Z573nn7cfXVQ2jVyiLlKiIi\nIiIiuRO1YO6Z+Hy7jrahBMX0De7+XwB3/9DMJgN/Bg6OGFskKxYu/IJ585al0bNzmv22dNVVg7nw\nwoGYqVgWEREREYmTqAVzj8TnquRfJh633pagYJ5R65z5ic+dIsYWadbatGnFbbeN5MQTf9jUqYiI\niIiISANELZirE5/da/3+wMTnl+6+qFbbisRnh4ixRZqtTp3a8sADxzJ06C5NnYqIiIiIiDRQ1EW/\nPk587lnr98MSny/WcU5h4vPLiLFFmqUePTry7LMnq1gWEREREYm5qDPMLwG7AGeb2Z3u/rWZ7UVQ\nMDvwVB3n1KyOvTxi7G8xs97AuET8XsB64H3gPmCKu69thJjbEawAXrOt1lx3PzTbcSS3OnVqS//+\nPUP7lJcvp7KyaovftW/fmpde+iW77rp1Y6YnIiIiIiI5ELVg/gdwEkHRvNjMFgF7AW2BlUBd+00c\nQlBMvxUx9hbMbAQwjWAG2xO/LgCKgQHAaWY23N3fz2Zc4AaCYtnr6yjx0b9/T15++dTQPgMH3vqt\nRcD69dtWxXIz0qtXr6ZOQTKg8YofjZmIiOS7SI9ku/t84A+Jr92BEqAjsAk4w91rLwbWBTgy8fW5\nKLFrXXdv4B6gC7Aa+H0il8OAmwmK2V2Bx8ysUxbjjgB+SjBbriWQhbZtWzd1CpJkypQpTZ2CZEDj\nFT8aMxERyXdRZ5hx9yvN7GngGGA7gn2X73L38jq6DwIWJo4fixo7yXUEs8lVwOBEIV9jrpm9B1wF\n7AZcCEyIGjBReE8hKMbHE8xui4iIiIiISJ6IXDADuPurwKtp9HsYeDgbMWuY2T4Eq3I7cEutYrnG\nJOCXBO9PjzOzP7n7poih/wzsADzj7neZmQpmERERERGRPBJ1lezm4Kik46l1dXB3B+5IfO1G8B51\ng5nZvsBZBIuKnRnlWiIiIiIiItI8Zb1gNrNtzKyfme1rZu2zff061Oz5XAmUhfRLfmf6gIYGM7PW\nBO9FG3Cluy9u6LVERERERESk+crKI9lm1hE4HzgF2DmpqT9Jq2Gb2THACKDC3c/JRmyCx6wdWOzu\n1SH93q51TkNdRHBf7xI8li0iIiIiIiJ5KHLBbGY7AbMJFtRKXim6rm2WFhBsNWVmdre7vxwxdntg\nm0SsZWF93X2lmVUSrOLdoH0wzKwP8D+JeGPdfUNDriMiIiIiIiLNX6SC2czaAbOA7wNrCR5Vfh54\noK7+7v6+mT0PHASMBCIVzATbSNX4Jo3+NQVz5wbG+yfQAbjH3Z9p4DWkmVm1av23fldevpyBA28N\nPa+8fHljpSQiIiIiIs1A1BnmXwO7ExTLh9SsUG0WuiXxLOBgIrxHnKRD0nE6s73rCWbBCzINZGYn\nEezrXAFckOn50jy98srHvP32l9/6fWVlFfPmhT60IDEwduxY7RMbIxqv+NGYiYhIvou66NfPCB5P\nvj7Fdk51eSPxuWvE2ADrko7bpdG/PUG+azMJYmZbA39LnPt7d9fUYh4oL1/OkCF3Ul1d19sDkg+W\nLl3a1ClIBjRe8aMxExGRfBe1YN4j8flEBud8lfjsHjE2wOqk43Qes+6U+Ezn8e1k1xC8K/2Ku/8j\nw3OlGXr33a8YPHgaX3+9rv7OIiIiIiLSIkV9JLvmHeLVob22VDMTXBUxNu6+3sy+ArYCdgjra2bd\nCApmB9L+k7iZbQ/8PHHes2Z2XF3dko63TerzYX0z72PGjKFjx45b/K6kpISSkhIKCwsZPnx4aH6z\nZs1i1apVKdv79etH//79U7ZXVFQwe/bs0BjDhg2ja9euKdvLy8tZuHBhyvbmdh8ffbSSQYPuYPny\nytD+DfH1118zffr0lO0aj81ycR+9evXSeBCf++jePfzvqHG5j3wZj3Tuo0+fPqH/jcXlPvJlPGru\no7S0lNLS0i3a16xZExpfRETqZu4NfxzVzD4GtgN+5u4PJ/2+mqDA7O/ub9U65xTgNuADd9+lwcE3\nX+854EcEs8bdUm0tZWb7A6WJvCa4++VpXn9H4MMGpjfV3X+Z4rpFQFlZWRlFRUUNvLxk6tNPV/Pj\nH09l8eIVof169OhInz7dSf5byDvvvM33v7976Hn9+vXg5ptHZiNVyYKRI0cyc+bMpk5D0qTxih+N\nWXwsWLCA4uJigGJ3X9DU+YiIxEXUGebXgaHAgcDD9fStUTNbOy9i7BovEhTMnYBi4JUU/Q5KOn4p\nwxjp/FWhprJK7quXY5uRL79cw+DB0+otlkeN6ss99/yMNm22fGMh+IfhVY2ZooiIiIiINCNR32F+\nkKBQ/LWZfae+zmZ2BnBo4uu9EWPXmJF0/IsUcQ04KfF1JfBsuhd394/cvXV9PzXdgeeSfn9qQ25I\nsq+iYh1Dh97Jm29+EdrviCN24e67R32rWBYRERERkZYnalVwO/AWwd7Gc83skFrtDmBm/c3sVmBK\n4nfz3P3RiLGDAO6vAC8QFO6nmtl+dXQbD/RNxL7W3TclN5rZyWZWnfi5JBt5SfNRWbmBI4+cTlnZ\np6H9DjpoRx588FjatWsd2k9ERERERFqGSI9ku/smMxtJ8Fj0LsDTZrYyqcuTZlbI5sXBDFgCHBMl\nbh3GETxmXQDMMbOJBLPIBcBo4PREv3eASSHX0SPUeWb9+o0cffS9vPjiktB+++33XR59dDQFBW1T\n9hk9enS205NGpjGLF41X/GjMREQk30V9hxl3/8DM9gL+ARzF5u2ijG+vXD0TON3dw5+LzTyH183s\nWOBOoBCYWLsLQbE83N2zvzTyZlZ/F8mVqqpNHH/8g8yZ80Fovz337Mnjj4+hS5f2of30D8P40ZjF\ni8YrfjRmIiKS7yIXzADu/jkwysx2BUYAA4BtgdYE+y6/Bsx09/JsxEuRwywz25Ngtnk4QbG+AVgM\n3AdMcfewTXejzi57rU9pQtXVzi9+8QgzZrwd2m+33bbmqad+TvfuBTnKTERERERE4iIrBXMNd3+P\n8EeeG5W7LyV4X3l8hufdTvA+dpTYevG1mXB3zjzzMe66K/zvMzvu2JWnnz6Rnj075ygzERERERGJ\nEy0FLHnF3Rk//iluuil8i8ntt+/MM8+cRK9eXXOUmYiIiIiIxE2kgtnMShp4XiszuyxKbJG6XH75\nc0yaFL7F99ZbF/D00yfRp89WOcpKRERERETiKOoM83NmNsHM0n4c2cz6AKXA/0SMLbKFq68u5fLL\nnwvtU1jYnqeeOpE99uiRo6xERERERCSuohbMrYE/AC8lCuFQZnY6wQJg+0aMK7KFG298lfHj54T2\n6dixLY8/Poaiou1zlJWIiIiIiMRZ1IL5cYKtlPYBXjez0+rqZGbbmNkM4J9AZ2AdcF7E2CIA3Hnn\nfzjzzFmhfdq1a80jjxxPSUmvBsdZsiR8L2dpfjRm8aLxih+NmYiI5LtIBbO7DwfOISiAOwE3mtnD\nZrZ1TR8zGwaUE2w3ZcAbwAB3nxwltgjAww8v4pRTZuAhm3m1bm3cf/8xDBq0c6RYZ599dqTzJfc0\nZvGi8YofjZmIiOS7yKtku/sUgn2XXycoiEcC/zGzo8zs78CjQE+C/Yn/Buzr7m9FjSvy5JOLOe64\nB9i0KXW1bAbTph3NyJHfz2FmIiIiIiKSD7KyD7O7LzKz/YA/ARcA2wMPJpoNWAac5O5zsxFP5Pnn\nP+Loo++lqqo6tN/NN49g9Oj+OcpKRERERETySdb2YXb3KuA3wP1JvzagAviRimXJllde+Zgjj7yb\ntWs3hva79tohnHpqUY6yEhERERGRfJO1gtnMvgs8DRxb86vEZyEw18x+lK1Y0nItXPg5Q4fexerV\nG0L7XXHFIYwbt3+OshIRERERkXyUlYLZzI4B/gMcTFAoPw/0JVgV24AdgX+b2Z/NLCuPgUvL8957\nXzFo0B2sWLE2tN/FF5fwhz/o7zMiIiIiIhJNpILZzDqb2VTgHqA7sBH4PXCIu7/j7mcBRwLLCfZs\nvhiYZ2ZagUkysmRJBYcddgfLl1eG9jvrrAFceeUgzCy0n4iIiIiISH2izjD/BziRYBb5HWCgu1/p\nvnmTH3efDfQnWC3bgL2BBWY2NmJsaSE+/XQ1hx12B0uXrgrtd9JJP2Ty5GEqlkVEREREJCuiFszf\nIyiCbwSK3H1BXZ3c/Ut3/wlwBrAGKACujxhbWoCvvlrD4MHTWLx4RWi/UaP6cuutI2nVqvGK5Rtu\nuKHRri2NQ2MWLxqv+NGYiYhIvotaMH8BjHT3M909/MVSwN1vAoqAVyLGlRZg1ar1DB16F2+++UVo\nvyOO2IW77x5FmzZZW8OuTr17927U60v2acziReMVPxozERHJd1EX4Orv7p9ncoK7v2dmJcAlEWNL\nHluzpoojj7ybV1/9JLTfQQftyIMPHku7dq1zlJmIiIiIiLQUkQrmTIvlpPM2AZdGiS35a/36jRx9\n9L288MKS0H777vtdHn10NAUFbXOUmYiIiIiItCR5tcWTmfUGxgHDgF7AeuB94D5gSjqPjYdcyuPA\n1gAAIABJREFUuxg4CNgH2APoAWwFbAA+AeYBU919boRbaPE2bqxm9OgHeeqp90P77blnTx5/fAxd\nurTPUWYiIiIiItLSZK1gThSrJwIDge0IFvYa6e7vJ/XZHfgOUOnu/5et2IlrjwCmAYVAzSrdBUAx\nMAA4zcyGJ+eToeuAkqRr12gL7ArsBpxkZvcDJ7r7hgbGabGqq51TTpnBww+/Hdpvt9225qmnfs5W\nWxXkKDMREREREWmJIhfMFuzhcwVwUeJ6NcsUO1B7+m83YAZQZWY7uvtnUeMnctibYC/oDsBqYCIw\nl6BgPh44naCofczMBrh7+Ga+dVubuGYpsAj4FFhBMNP8Q4IVwHcCfgZsAk5o8A21QO7OWWfN4q67\nykP77bhjV55++kR69uyco8xERERERKSlysYM8w0ExaIRrJr9f8CRdXV095lm9hHQm6CwzNZ+FNcR\nFMdVwGB3n5/UNtfM3gOuIijYLwQmNCDGEHevTtE2x8wmA88C+wPHmdlEd1/YgDgtjrtz0UVzuPHG\nstB+22/fmWeeOYlevbrmKDMREREREWnJIu3DY2Y/Bs5MfJ0E7ODuI+s57QGC4vqwKLGTctgHOJBg\nRvuWWsVyjUkEs8IGjDOzjJdUDimWa9rXExTuNX6UaYyWasKE57j66pdD+2y9dQFPP30SffpslaOs\nvm369OlNFlsaRmMWLxqv+NGYiYhIvou6cW1NsfyUu49396o0zpmX+OwXMXaNo5KOp9bVwd0duCPx\ntRtwSJZi17Y66bhDI8XIK5Mmvcxllz0X2qewsD1PPXUie+zRI0dZ1U3/MIwfjVm8aLziR2MmIiL5\nLmrBXLMI1s0ZnLM08bldxNg1Dkx8VgJhz/QmV2UHZCl2baOTjsNXrhJuuqmMCy98KrRPx45tmT37\nBIqKts9RViIiIiIiIoGo7zBvm/j8IINzalaPztbmuX0JivbF9Tw2nVzA9s1G4MSCZz2AHwDnAj9J\nNC0CnsxGjHx1113/4YwzHgvt065dax555HgOOKB3jrISERERERHZLGrBvBZoB2yTwTnfTXx+HTE2\nZtY+EduBZWF93X2lmVUCHQn2aI4S978EC5d9KwzBvs+j6nvnuSWbMeNtTj55Bl57g64krVsb999/\nDIMG7Zy7xERERERERJJEfST7w8Tn7hmcMzTx+VbE2ABdko6/SaN/zXZSUfck8jp+qoA/Anu7+zsR\nr5+3nnrqfY477gE2bUpdLZvBtGlHM3Lk93OYmYiIiIiIyJaiFsxPEaw8PTbxeHIoM9sN+AVBgfl4\nxNiw5cJaG1L22mw9Qb4FEeMOBvoT7L98KPA/wOfApcDfzaxTxOvnpRde+IijjrqHDRs2hfa76aYR\njB7dP0dZiYiIiIiI1C1qwTyZ4LHs3YDrw7ZrMrMDCQrsjkAFcFPE2ADrko7bpdG/PUGxvjZKUHdf\n7O5vuftCd3/O3ScSrPr9BnAi8KKZdYwSI9+8+uonDB9+N2vXbgztd801QzjttKIcZSUiIiIiIpJa\npHeY3f0TMzsbuBU4CzjCzGYmdTnTzJxgVeq9CGZ3q4FfuvuqKLETkrdxSucx65qZ33Qe386Iu1eY\n2ckEj5rvCfye4BHtUGPGjKFjxy1r65KSEkpKSigsLGT48OGh58+aNYtVq1L/T9mvXz/69089W1tR\nUcHs2bNDYwwbNoyuXbumbC8vL2fhwoUp21esaMsll3zA6tXhDwEcc8zW9Oz5IdOnf/ittuZwH337\n1r9WXBzGI1/+7yqd++jbt2/otjdxuY98GY/67mOXXXYJPT8u95Ev45HOffTr1y/0v7G43Ee+jEfN\nfZSWllJaWrpF+5o1a0Lji4hI3czDVl5K9yJmJwJTCIrWVBc0YA1wmrvfEzno5thfAFsBb7h7yqlJ\nM+sGrEjkd7+7H5+tHGrFeQfYFXjX3VO+221mRUBZWVkZRUXxmFE9/fSZLFz4RUbnrFtXxZtvfkFV\nVfgaaBdfXMKVVw4ijSf7RUREJEMLFiyguLgYoNjdFzR1PiIicRF1lWwA3H2amc0BzgFGEGyzlFz5\nvA/MBCa5+8fZiJnkLeBHwC5m1ipkderk4nVRlnNI9gVBwbxjI8ZoEgsXfsG8eaGLkTfIWWcNULEs\nIiIiIiLNTlYKZgB3/wz4A/AHM+tAsN1Ta+Ard8/6I9BJXiQomDsBxcArKfodlHT8UiPmU7NtVmPe\nc9446aQfMnnyMBXLIiIiIiLS7ERd9KtO7r7O3Ze5+0eNXCwDzEg6/kVdHRIreJ+U+LoSeLYxEjGz\nfQhmlh0ob4wY+WTUqL7ceutIWrVSsSwiIiIiIs1PpILZzGab2Swz65XBOdvVnBcldg13fwV4geAR\n8FPNbL86uo0H+hIUste6+xb7GpnZyWZWnfi5pI6c9zGzvcPyMLPvAlOTfnV7ZnfSsnTr1p677x5F\nmzaN8jcbERERERGRyKI+kj2UoAjtksE5nZLOy5ZxBI9ZFwBzzGwiwSxyATAaOD3R7x1gUsh1UuW0\nB/AvMysFHgVeJ3hXGYJHsA8FTgG6Jq4xx91bRMHcqVNb+vfvGdqnvHw5lZVVW/xut922oV27lLuQ\niYiIiIiINLmsvcPclNz9dTM7FrgTKAQm1u5CUCwPd/fKhoYBBgIlIe0O/As4u4ExYqd//568/PKp\noX0GDrz1W4uF6TFsERERERFp7pqiYK7ZdHhdNi/q7rPMbE+C2ebhwA7ABmAxcB8wxd3DYobNeN8D\nfEwwk1xCMKvcE2gLVCRivARMc/fUGzGKiIiIiIhIbDTFC6SDE5+fZPvC7r7U3ce7e1937+LuW7v7\nfu5+dVix7O63u3vrxM+EOtrXu/vT7v57dz/Y3Xd190J3L3D37dz9QHf/jYrl/DZ27NimTkEypDGL\nF41X/GjMREQk32U0w2xmf0/R9D9m9nU9p7cH+gAHEszmPpdJbJGmtnTp0qZOQTKkMYsXjVf8aMxE\nRCTfZfpI9hl8+9FlA45N8/yaF1dXAX/JMLaIiIiIiIhIzmRaMH/OlgVzz8T3FcDGkPOc4J3lT4FS\n4AZ3/yjD2CIiIiIiIiI5k1HB7O7bJX83s+rE4UHu/lbWshIRERERERFpYlFXyZ4PVANrspCLiIiI\niIiISLMRtWC+huBx662B/0bORmKnvHw5AwfeWm8fERERERGRuIlaME8nKJh/DpRFT0fiprKyinnz\nljV1GiIiIiIiIlkXdR/misTn21ETEWnuRo8e3dQpSIY0ZvGi8YofjZmIiOS7qAVzzUrXXaMmItLc\n6R+G8aMxixeNV/xozEREJN9FLZhnEOytPDwLuUgzV1GxrqlTEBERERERyZmo7zBfC/wSGGtmj7j7\ni1nISZqhqqpNfPrpN6F9+vXrQefO7dO6Xr9+PbKRloiIiIiISKOJVDC7+0ozOxx4CHjGzG4E7gb+\n4+7aaiqP/P3vr7ByZeoZ5pNP/iFTpx6Vw4xEREREREQaV6SC2cxqiuJWQFtgbOIHM9sIbAo53d29\nU5T4khuff17JpZfOTdnepUs7rrxyUO4SEhERERERyYGoj2R3qPXdko7bJn5S8YixJUd+97unqahY\nn7L90ksPYrvtOucwIxERERERkcYXtWD+S1aykGZr/vyPue2211O27777Npxzzn45zEhERERERCQ3\nor7D/LtsJSLNT3W1c845j4f2uf76obRr1zpHGTWtJUuW0Lt376ZOQzKgMYsXjVf8aMxERCTfRd1W\nSvLY7be/zvz5H6dsP+qo3Rk8uE8OM2paZ599dlOnIBnSmMWLxit+NGYiIpLv8qpgNrPeZna1mS0y\ns2/M7Cszm29m482sIOK1C83sBDO7zcxeN7OVZrbBzD43s3+b2QVm1jVb99LUKirW8dvfPpOyvUOH\nNkyadHgOMxIREREREcmtqO8wb8HMdgD2B7YDOgK3uPuKbMYIiT0CmAYUsnlBsQKgGBgAnGZmw939\n/QZceygwA2iX+FXygmVbAwcBBwPjzewEd5/bkHtoTi67bC6ff16Zsv3ii0vYaafuOcxIREREREQk\nt7Iyw2xm/cxsDvARcC9wHfBngsI5ud+ZZrbEzMrNLGvFupntDdwDdAFWA78HSoDDgJsJCtxdgcfM\nrCFbWW1NUCxvAp4AzgcOBYqAkQT37AT3+6iZ7RnlfpraW299weTJ81O29+7dld/85sAcZiQiIiIi\nIpJ7kYtWMzsceJhgi6nkbaXq2jbqbuBvwHeB4cAjUeMnXEcwm1wFDHb35Gpvrpm9B1wF7AZcCEzI\n8PpVwD+BP7l77Zd63wBmmdlLwGSCmfVJQCw3JnZ3zj33cTZtSr3r19VXH07HjmE7homIiIiIiMRf\npBlmM9sWuI+gWH0POBrokaq/u1cAMxNfj4gSOymHfYADCQr0W2oVyzUmAYsICvpxZpbRss7ufp+7\nn1VHsZzcZwrwaiLGQWa2VSYxmouHHlrEM898mLL90EN3YtSovjnMSEREREREpGlEfST7fIJ3hpcB\nB7j7I+7+VT3nPEtQVA6IGLvGUUnHU+vq4O4O3JH42g04JEuxa5ub+GwF7NRIMRrNmjVVXHDBUynb\nW7c2rr9+KGaWso+IiIiIiEi+iFowH0Ews3t1GoVyjbcTn9kqKGtepq0EykL6PZd0fECWYtfWPul4\nUyPFaDR//etLLFlSkbL9nHP25Qc/2DaHGYmIiIiIiDSdqAVzTdE7L4NzaiqyzhFj1+hLULQvdvfq\nkH5vJx031jPFByU+q4DFjRSjUfz3vyv5y19eStneo0dHLr304Nwl1AzdcMMNTZ2CZEhjFi8ar/jR\nmImISL6LWjA3ZOWnwsRn6j2L0mRm7YFtEl+XhfV195VJMXtFjV1HLsOBPQmK9yfc/Ztsx2hMF1zw\nJOvWbUzZfuWVg+jWrUMOM2p+evfu3dQpSIY0ZvGi8YofjZmIiOS7qAXzZ4nPnTM4p+bd5dACN01d\nko7TKVBrCuZszW4DYGbdgZo/s28CLsnm9RvbnDnv8/DDb6ds33ff73LKKXvlMCMREREREZGmF7Vg\nfolgAa+fptM5sffyrwlmYZ+rp3s6kqc8N6TRfz1BvgVZiA2AmbUi2C5rR4L7usLd/5Ot6ze2qqpN\nnHvuE6F9Jk8+glattNCXiIiIiIi0LFEL5tsTn0eb2UFhHRPF8m0EeyED3BIxNsC6pON2afRvT1DU\nrs1C7Br/AIYkrvso8L9ZvHajmzx5Pm+//WXK9l/8Yi/23fe7OcxIRERERESkeWgT5WR3f9rMHiKY\nYZ5tZn8DHkzqsp2ZdSBYlfpM4PsEheWt7v5GlNgJq5OO03nMulPiMyvvF5vZn4HTCe7peeC4xBZW\naRszZgwdO3bc4nclJSWUlJRQWFjI8OHDQ8+fNWsWq1atStner18/+vfvX2fbZ599w2WXzU15bkFB\nK/bddxUVFRV07do1Zb/y8nIWLlyYsr2x7wOgoqKC2bNnh8YYNmyY7gPdRzLdx2a6j4DuYzPdx2Zx\nu4/S0lJKS0u3aF+zZk1ofBERqZtlWN99+wJmBcBM4DCCwjFl18TnLOCn7l4VKfDm+F8AWwFvuHtR\nSL9uwIpEjve7+/ER4/4G+HPiemXAoZks9GVmRUBZWVkZRUUp025Up5wyg9tvT/13i2uuGcJ55+2f\nw4xERESkMSxYsIDi4mKAYndf0NT5iIjERdRHsnH3tcDhwDiChbwsxc9y4AJgZLaK5YS3EtffJfE+\ncSq7Jx0vihLQzM5ic7H8FjA0bqtiz5u3LLRY3mOPHowdu08OMxIREREREWleIhfMAB6YTLAv8wDg\nDIKVoi8HzgV+BPRy92szfWQ5DS8mPjsBxSH9kt+xTr3hcD3M7ERgMkGx/D4w2N1XNPR6TaG62jnn\nnMdD+1x//VDatm2do4ziYfr06U2dgmRIYxYvGq/40ZiJiEi+y0rBXMPdq919gbvf5O7/6+6Xu/sN\n7v6Su6fe5DeaGUnHv6irg5kZcFLi60rg2YYEMrOfEixcBrAUOMzdPws5pVm67bbXePXVT1K2jxrV\nl8MOy2SnsJZB/zCMH41ZvGi84kdjJiIi+S7tgtnMrjGzZrcZr7u/ArxA8Fj2qWa2Xx3dxgN9CWaF\nr3X3TcmNZnaymVUnfurcQ9nMDifYPqoVwePlg9x9aRZvJSe+/notv/vdMynbCwracPXVh+cwIxER\nERERkeYpk1WyxwHnmtmbwB3AXe7+aeOklbFxBI9ZFwBzzGwiwSxyATCaYCVrgHeASSHXqfNx8UQR\n/hDQFqgieBe7vZn9IORay9y9IpObyIXLLpvLl1+mXinzt789kB137JbDjERERERERJqnTLeVMuAH\nwF+AP5vZvwn2Yn44sfhXk3D3183sWOBOoBCYWLsLQbE83N0rGxBiKFCz91M7gpnm+pxC8IeFZmPh\nws+ZMuWVlO3f+143LrqoJIcZiYiIiIiINF+ZvMM8hKAgXUNQOLcGBgHTgM/M7DYzOyT7KabH3WcB\newLXEBTHlcDXwCvAxUCRu38Ydon6QmTwU93gG2kk7sFCX5s2pb7NSZMOp6CgbQ6zEhERERERab7S\nnmF29zkEjzt3BH4KnEiw93IroAtwMnCymS0jKKynufvb2U85NMelBO8rj8/wvNsJZspTtV9OsOJ3\nbN1//1vMnfvflO2DB+/MUUftnrJdRERERESkpcl4lWx3X+Pud7r7EKAXweztf9i833Iv4LfAm2Y2\n38zGmtnW2UxaMlNZuYHx459K2d6mTSuuu24owWLiIiIiIiIiAhG3lXL3T939b+6+F/BD4GrgEzYX\nz8XA9cDHZjbDzH5qZnrmN8euvPJFli5dlbL93HP3pW/fHjnMKJ569erV1ClIhjRm8aLxih+NmYiI\n5Dtzr+/V3QwvGExTHkbwyPZPgU6JpppAXwP3EjyyPS+rwWPEzIqAsrKyMoqKihotzgcffM0ee0xh\n/fpNdbb37NmJd989h8LC9o2Wg4iIiDStBQsWUFxcDFDs7guaOh8RkbiINMNcFw887e4nAz2Bk4A5\nBAthGbAVcCbwYrZjy7edf/6TKYtlgL/8ZZCKZRERERERkTpkvWBOVut9572AN9k806wXZhvZE08s\nZubMd1K277//Dpx44g9zmJGIiIiIiEh8ZLoPc0YS7yuPAH4ODAP0/nKObNiwiXHjnkjZbgaTJx9B\nq1b6u4WIiIiIiEhdGqVgNrMDCN5hPgboVvPrxOdq4AFCtnGS6K67bh7vvvtVyvZTT92bAQO+k8OM\nRERERERE4iVrBbOZ7UpQJI8Bvlfz68TnJuBp4A7gYXdfl6248m2ffLKaCROeT9netWt7Jk48LIcZ\niYiIiIiIxE+kgtnMtgGOJyiUB9T8OqlLOUGRfJe7fxYllqTvt799mm++2ZCyfcKEQ+jRo1PKdhER\nEREREWlAwWxm7YGfELyXPCTpGjWF8nLgbuAOd38jG0lK+kpLlzJt2n9Stvfrty1nnbVPDjMSERER\nERGJp7RXyTazg83sFuAzYDownGARLwPWA/cBRwI7uPuFKpZzb9Omas4+e3Zon8mTj6BNm0ZdHD1v\njR07tqlTkAxpzOJF4xU/GjMREcl3mcww/5tgS6iamWQn2Ev5DuA+d1+V5dwkQ7fcsoDXXkv95Pux\nx/6Agw/+Xu4SyjNLly5t6hQkQxqzeNF4xY/GTERE8l2mj2Qb8D4wDZjm7h9mPyVpiBUr1vKHP/w7\nZXtBQRuuumpwDjMSERERERGJt0wK5psI3ksubaxkpOEuueRZvvpqbcr23//+R/Tu3TWHGYmIiIiI\niMRb2gWzu5/RmIlIw73xxmf84x+vpmzfeefujB9fksOMRERERERE4k+rP8Wcu3POOY9TXe0p+1xz\nzRA6dMjaltsiIiIiIiItggrmmLv33jd54YUlKduHDOnDiBG75TAjERERERGR/JBXBbOZ9Tazq81s\nkZl9Y2Zfmdl8MxtvZgURr93azPYys1+Z2c1m9oaZVZlZdeKnd7buI13ffLOB8eOfStnetm0rrrtu\nKGaWso+IiIiIiIjULW+e0zWzEQSrdxcSbHkFUAAUAwOA08xsuLu/38AQfwAuS/ruKY5zZuLEF/j4\n49Up2887b3++//1tcphRfhs9enRTpyAZ0pjFi8YrfjRmIiKS78y9SWq9rDKzvQn2hO4AfANMBOYS\nFMzHA6cnur4LDHD3ygbEuBS4JPF1HfA60APYhaBg3sndUz8b/e3rFQFlZWVlFBUVZZoOixev4Ac/\n+DsbNmyqs3277Trz7rtn06VL+4yvLSIiIvllwYIFFBcXAxS7+4KmzkdEJC7yZYb5OoLiuAoY7O7z\nk9rmmtl7wFXAbsCFwIQGxCgFzgDmA+XuXm1m/yIomHPu/POfTFksA/z1r4NULIuIiIiIiEQQ+3eY\nzWwf4ECCWd5bahXLNSYBiwADxplZ60zjuPscd7/Z3d9w9+pISUc0e/Z7PPbYuynbS0p68fOf75nD\njERERERERPJP7Atm4Kik46l1dfDgufM7El+7AYc0ck6NZv36jYwb90TKdjOYPPkILfQlIiIiIiIS\nUT4UzAcmPiuBspB+zyUdH9B46TSua6+dx+LFK1K2/+pXxRQVbZ/DjERERERERPJTPhTMfQkex15c\nz6PSb9c6J3Y+/ngVV1zxfMr27t078L//e2gOMxIREREREclfsS6Yzaw9ULNv0rKwvu6+kmAWGqBX\nY+bVWC6++GkqK6tStl9xxSFss03HHGYkIiIiIiKSv2JdMANdko6/SaN/TcHcuRFyaVQvvPARd99d\nnrJ9zz178utfD8hhRi3PkiVp7xomzYTGLF40XvGjMRMRkXwX94K5Q9LxhjT6rydYKbugcdJpHJs2\nVXPOOY+H9pk8+QjatIn7cDZvZ599dlOnIBnSmMWLxit+NGYiIpLv4l5hrUs6bpdG//YE7zuvbZx0\nGsdNN5XxxhvLU7Yff3w/fvzjHXOYkYiIiIiISP5r09QJRLQ66Tidx6w7JT7TeXw7J8aMGUPHjlu+\nd1xSUkJJSQmFhYXsv/8h/PGPz6Y8v337VhxwQCXTp0+vs71fv370798/5fkVFRXMnj07NMdhw4bR\ntWvXlO3l5eUsXLgwZXthYSHDhw8PjTFr1ixWrVqVsr053EevXvW/+h6H+8iX8UjnPnr16pXyvw2I\nz33ky3jUdx/du3cPPT8u95Ev45HOffTp0yf0v7G43Ee+jEfNfZSWllJaWrpF+5o1a0Lji4hI3SzY\noji+zOwLYCvgDXcvCunXDVhBMMN8v7sfn4XY/wJOTlxzJ3dP+2UuMysCysrKyigqSpk2Z575GP/8\nZ+rdsiZOPJTf/e5H6SctDTZy5EhmzpzZ1GlIBjRm8aLxih+NWXwsWLCA4uJigGJ3X9DU+YiIxEXc\nH8kGeIvgveRdzCzsfnZPOl7UuCllx2uvfcqNN6Yulvv06c4FFwzMYUYiIiIiIiItRz4UzC8mPjsB\nxSH9Dko6fqnx0skOd+fcc58g7AGAa68dSvv2cX+qXkREREREpHnKh4J5RtLxL+rqYGYGnJT4uhJI\n/VJwM3H33eW8+GLqJ7yHDduVI4/cLYcZiYiIiIiItCyxL5jd/RXgBYLHsk81s/3q6DYe6EvwrvG1\n7r4pudHMTjaz6sTPJY2edD1Wr17PRRfNSdnetm0rrr12SA4zEhERERERaXny5XnecQSPWRcAc8xs\nIsEscgEwGjg90e8dYFLIdVI+AG1mnYCf1fr1LknHx5jZl0nfX3f3N9JLf0t/+tMLfPpp6oW8L7hg\nILvuunVDLi0R3HDDDU2dgmRIYxYvGq/40ZiJiEi+y4uC2d1fN7NjgTuBQmBi7S4ExfJwd69sYJht\ngH+laDPgqlq/uwzIuGB+992vmDTp5ZTt3/lOF/74xx9nelnJgt69ezd1CpIhjVm8aLziR2MmIiL5\nLvaPZNdw91nAnsA1BMVxJfA18ApwMVDk7h+GXSKdMBn8NOQeOO+8J6iqqk7Z56qrBtO5c7uGXF5E\nREREREQykBczzDXcfSnB+8rjMzzvduD2evp8BLRueHb1e+yxd3n88cUp2w88sDejR/drzBRERERE\nREQkIW9mmONu3bqNnHfekynbW7UyJk8+gmDBbxEREREREWlsKpibiUmTXuaDD75O2f7rXxez117b\n5TAjERERERGRlk0FczOwdGkFf/rTCynbt9qqgCuuOCSHGYmIiIiIiIgK5mbgoovmsGZNVcr2P/3p\nULbeumMOMxIREREREREVzE2srOwT7r33zZTte+21HaefXpTDjCSV6dOnN3UKkiGNWbxovOJHYyYi\nIvlOBXMTO+ecx0Pbd9ihkNatNUzNgf5hGD8as3jReMWPxkxERPKdKrEmtn79xtD2L79ck6NMRERE\nREREJJkKZhEREREREZE6qGAWERERERERqYMKZhEREREREZE6tGnqBFq6/v170qnTDgCUly+nsjL1\n9lIiIiIiIiKSOyqYm9jUqUdRVBRsGzVw4K3Mm7esiTMSERERERER0CPZImnr1atXU6cgGdKYxYvG\nK340ZiIiku9UMIukacqUKU2dgmRIYxYvGq/40ZiJiEi+U8EsIiIiIiIiUgcVzCIiIiIiIiJ1yKuC\n2cx6m9nVZrbIzL4xs6/MbL6ZjTezgizGGW1mT5rZp2a21sz+a2bTzGz/bMUQERERERGRppU3BbOZ\njQD+A5wP7AYUAN2AYuCvwGtm1idijA5mNgu4CxgEbAu0A3oBY4AXzeySKDFERERERESkeciLgtnM\n9gbuAboAq4HfAyXAYcDNgAO7Ao+ZWacIof4FHJG43r+Bo4B9gVOBxQT/e15qZqdFiCEiIiIiIiLN\nQL7sw3wdwYxyFTDY3ecntc01s/eAqwhmni8EJmQawMwOBY4jKJZnAj91d080l5nZo0AZ0Bv4i5nd\n7+4V9V33lFNm0KnTawCUly/PNC0RERERERFpJLGfYTazfYADCQrZW2oVyzUmAYsAA8Z05XfBAAAg\nAElEQVSZWesGhLow8bkRGJtULAPg7l8Bv0l87QakNctcXr6cefOWMW/eMiorqxqQloiIiIiIiDSG\n2BfMBI9F15haV4dEcXtH4ms34JBMAphZZ4LHux142t0/SdH1IWBV4vjoTGJI8zd27NimTkEypDGL\nF41X/GjMREQk3+VDwXxg4rOS4JHoVJ5LOj4gwxj7ECzuVfs6W3D3KmAewUz2Pg2cyZZmaunSpU2d\ngmRIYxYvGq/40ZiJiEi+y4eCuS/BzO9id68O6fd2rXMysUeK64TFaUOw0JjkiY8//ripU5AMaczi\nReMVPxozERHJd7Fe9MvM2gPbEBTMy8L6uvtKM6sEOhJsA5WJHZKOQ+MAyX9u70U9BXb//j3p1GmH\nlO39+vWoNznJDf3DMH40ZvGi8YofjZmIiOS7WBfMBNtI1fgmjf41BXPnRoxTmXRcb5ypU4+iqKgo\nw3RERERERESkscX9kewOSccb0ui/nuD94oJGjLM+6TjTOCIiIiIiItJMxL1gXpd03C5lr83aEzy+\nvbYR47RPOs40joiIiIiIiDQTcX8ke3XScTqPWXdKfKbz+HZD43RKOg6L0wFg0aJFGaYiTaWqqooF\nCxY0dRqSAY1ZvGi84kdjFh//r70zj5akqPL/50s3i+wCojDYKOKIIgPSIDOCLII/FcRBnUZFBJHF\nBWZERXRGhaOoKKjoMM6IC6gjIoODHpZhEIRhcwNFVtkEZBdtaYSmaeC9+/sjIq3s6sysqvded718\n9f2cE+dlvbxx42bcqKy4GZERpf7GKk1yxhhjlqTVAXNELJY0H1iHJRfmWgpJa5OC2WDJhbn6obzQ\n10ZAU++gvKBYUznPAdh3330HNMUMk7lz5w7bBDMg9lm7sL/ah33WOp4D/GTYRhhjTFtodcCcuRF4\nObCppBUatpbarHQ86LDujV16zmqQLcp5Cri1Qe584K3AnSw55dsYY4wxZqpZhRQsnz9kO4wxplXM\nhID5clLAvBowF7iyRm6n0vEVA5ZxJWmxrxWznuOqhCStCPwtaRT7yogYq1MYEfOB7w5ohzHGGGPM\nRPHIsjHGDEjbF/0C+GHp+IAqAUkC9ssfFwAXD1JARDwK/Ji0wvZukjasEX0jsGY+PnOQMowxxhhj\njDHGTC9aHzBHxJXAZaRg9kBJ21WIHQG8kDTy+8XukV9J+0saz+momqI+l//OBr4saYm6k7Qe8Jn8\ncQHwjQldkDHGGGOMMcaYaUHrA+bMe0lbOK0IXCDpw5K2k7SzpJOAz2a5m4EvNOiJ2hMRFwPfIwXm\nf5/L2VPSXEkHAD8F5mQdR0bEw5O+KmOMMcYYY4wxQ2MmvMNMRPxa0t7Ad0hToj/dLUIKlveIiIWT\nKOodwBrA7sDOwC5dZYwBn4gIjy4bY4wxxhhjTMuZKSPMRMS5wN8AJ5CC44XAQ6QFu44Eto6IO5pU\nlD9ImiPp85J+I+nRvH3VpcAlwNuBC4DfA4uBu4BTgR0i4phB7Jb0FknnS7pf0iJJd0r6T0l/O4CO\ndSV9QtI1kh7O6RpJH5e0ziD2tJUqf0n6haQjJD1tCsuZsL8kvTDbc7akO3L+hZJul3SapNdMlZ1t\noA0+a9D57tJrHOOS9uudq920zV/5vnikpMuzrscl3SvpZ5KOm4z/20JbfKbEmyT9QNJdXffG70l6\n9VTZOp1Zlv6SNEvSVpIOkfS13Ed4snQPmzOgvpHvdxhjRoiIcOpKwJ6k95DHSaPG5TQO3AQ8b5Jl\nrAKc21DGU8BRfejZDrivQc+9wLbDrtNR9xfwrSxXlX+sdO48YK1h16l91qh3g2x7Wd9+w65T+2sJ\nXfOAP/T4vp057Hq1zwJgbdLD6Lr7Y/H/M4AVh12vbfUXcFSpLse7dI8BcwbQNfL9Dicnp9FKQzdg\nuiXgJaTR6THgYeBD+cdhZ+ArpR+F3wCrTaKc00o/NhfkH8u5pNHrW0rnDmrQsRFplHuMNNL9aWD7\nnI7N/xsH7gc2HHbdjrK/cp4xUif+P4A3ZTvnAgeR9vouOhuXDLte7bNGvWeWvleFjhkbMLfNX6Qd\nEZ7KsncD/0J6feZvSFsQvoe0D+3pw65b+yzIvijkbgMOAV5G2sLx/XR+48aAfx923bbVX8DRJT0L\nSdtrln3UV8CM+x1OTk4jmIZuwHRLdJ50LwZeWnH+A6UfmIFHp7KOV5R0/ABQ1/l1gTuzzHxqRhyB\nb5f0vKHi/LzS+ZOHXbej7C/SqukHUjNCQhqpubRUzr7DrttR91mN3r/PeR4ADmc0AubW+Iu0G8Ki\nrOc8YNWGMmcPu25H3Wek4LrQcWuVv4BnA3/Kck8C6w27flvqr1cCBwNbAivk/53C4AHzyPc7nJyc\nRi8N3YDplIBtSzf6L9fICLih1AmYNYFyiilsi6l5AksagSxs+UDF+WfSGUU5t6Gs80odjfWHXcej\n6q8+y9m8pOOHw65f+2wp+dVJI5ZjwFuB/ZnhAXPb/AVcmGXuBlYfdv3ZZz1/x/6xdP7QhrI+X5Lb\nY9h13EZ/1egdKGDG/Q4nJ6cRTTNm0a8pYq/S8TerBCIiSE9YIb17tUuVXB2SVgd2JS0ydmFE3Fcj\neibw53z8+orzr6OzaFulrV3nVsh5ZhJt8ldPIuIG4I/54/MmoqMFtNlnnwH+Crg4Ik4dxKYW0xp/\nSXoBadQzgBMj4tFB7JhBtMZnwEql49sbivxtTZ6ZwDL31xTifocxZiRxwLwkO+S/C4FfNshdUjre\nfsAytqXzg39JnVBEPAn8jPRkeVtJs7pEdigd1+phcrZOd9rkr34pyhqbYP7pTit9llf7fRdpNO3d\nA9rTZtrkr3ml47OLA0lrSNpU0noD2tVW2uSzm0vHmzSUV36AeHOtVDtZHv6aKtzvMMaMJA6Yl+SF\npCfmt0XEeIPcTV15BuFFNXqaypkNPL9Gz8MR8WCdgoh4gM4T/kFtne60yV89kbQVaR9xSIu7zERa\n5zNJs4Gvkjr9x0XErQPa02ba5K9iC6MngZskvUrST0iLKN0CPCjpd5I+KWmNAW1sE23y2fnAHaTv\n1nslrdqdWdJGpEXEArgsIm4c0NbpzvLw11ThfocxZiRxwJyRtDJQjEDc0yQbEQtIT4MhLUgyCBuV\njhvLIb2HV9BdzkakH9leOgo9qtDRWlror374SOn49Ankn9a02GdHAi8mTQv91IC2tJYW+qvozC8g\nLch2Hmml4SiljUirZv8iB2Izirb5LI9A70PaPeB5wDV5n+CXSdpJ0vuBq0jTkH9LWjhxxrAc/TVV\njHS/wxgzujhg7lAecejn3bfih2v1ZVjOwtJxdzmFnmVp63Smbf5qRNIbgTeSOiNXRcQPB8nfElrn\nM0mbAh8l+eXQiHhiQFvaTNv8tQ7JT2sDnyONLB9KWqhoFWAb0kJVAfw18H1JGtDW6U7bfEZE/Jy0\nrdLngTmkbZQuBy4m+fFpwMdIq0f/tjt/y1le/poqRr3fYYwZURwwd1ildNxPp3gx6enp05ZhOYtL\nx93lFHr6tbVKR5tpm79qkfRC4OT8cRHwtn7ztow2+uwkYGXgvyLiggHtaDtt89dq+e9KpBV694yI\nr0TEHyPiyYi4mrQt2P9mO7cF/mFAW6c7bfNZwT7A3qRp29GVVgf2ZYKLKU5zlpe/popR73cYY0YU\nB8wdHi8d97MK58qkH/NFy7CclUvH3eUUevq1tUpHm2mbvyqRtCFp1GsNUif/gIi4ZSAL20OrfCbp\n7aTVaP8MvG9AG2YCrfJXSU8A50TE5d2Z82rDHyz96039GtkSWuUzJf4LOI40dffrwNakIGt10iJT\nZwGbAd+Q9IUB7ZzuLC9/TRWj3u8wxowoDpg7PFI67mcKUTGaMejWJYOUs1rpuLucQs+ytHU60zZ/\nLYWkpwM/Ap5D6gQdFhFnDGhfm2iNz/KKyseT/PLRvIjNqNEaf5X0FFOsf1SnIC8adS+dUeaZRNt8\n9h7SKH8AR0fEOyPimoh4IiIWRcRPI+L1wH9m+fdK2mNAW6czy8tfU8Wo9zuMMSOKA+ZMRCwG5ueP\njYvBSFqbzo/B3U2yFZQXy+i16Ex5sYzucu4hdfj6Wbjm2aQOyaC2Tlta6K9um1YnrRD7IjpB2VcG\ntK1VtMxnBwHrkhaQekjSm7oTaUGpgu1K52bE9kUt81f35142FOef0UOuVbTQZ8UiXo8An23Q8S+l\n43f0KK81LEd/TRUj3e8wxowuDpiX5EbSj8GmkprqZrPS8aDb/5S3xNisVmrJ808B3VvZFHrWkrR+\nnQJJz2LmblXUJn/9BUmrAOeQFiEK0lZFxw5oV1tpi8+K6YRPB74DnFaR3pVlRNqbufh/ecudttMW\nfwHcUDrutQ96cf6pHnJtpE0+K7ZUujGvmF1JRNwL/L7P8trG8vDXVOF+hzFmJHHAvCTFO2+rAXMb\n5HYqHV8xYBlX0lkwY6c6IUkrkvYVDeDKiBjrEim/n1erh8nZOt1pk78KudnAmcCOWfY/IuKfB7Sp\nzbTJZ92LD1WlbtmmfVTbSJv8dWnpeJMeZW6S9dw7mKmtoE0+Kx5YzO6jzBW78swUloe/pgr3O4wx\nI4kD5iUpb+VzQJVA3oZkv/xxAWnri76JiEeBH5OeKO+WF32q4o10ntCeWXH+LDqd80pbM2/Pf8dz\nnplEm/xFHj04DXg1qQP57Yg4bBB7ZgCt8FlEfDwiZjUlOlNDg7RY26yImB0R5cCt7bTCX5mzgGKU\nsnZFZUk7kabbA1w2iK0toU0+uyPreLGkNSvOF/a+mLRtWJFnJrHM/TWFuN9hjBlNIsKplIBLSDf5\nxcB2Fec/mM+PAR+rOL9/Pj8OHFVTxi4lHT8AVug6vx5wZ5aZD6xVo+dbJT1vqDg/r3T+G8OuW/uL\nk0t6Tgc07Pqzz5p91uM69i+Vsd+w69X+CoAvN/mENIr3q5LM1sOu31H2GfCpko6v15SzMnBRSe7A\nYddvG/1VU+4pJb1z+swz8v0OJyen0UtDN2C6JWArYGG+4f8Z+DBpcZ+dSXuyFj9KNwKrVeQvd6Jr\nf7iA75Z0/RjYkzQd6wDSe149OwekhTd+n2WfAI4Fts/pM/l/48D9wIbDrttR9hfw+ZLMNdnuzZvS\nsOt21H3Wx3WMSsDcGn+xZJD2JCmA3oW0VdF+pPecCz0nDrtuR91npJH+B0o6LiXtybw1aQXzQ4Dr\nS+evA2YPu37b6C/Sw6L9u9JlpXwf6Dq3ZY2eke93ODk5jV4augHTMQF7AA/lH5HxrjSWf7SeW5O3\n347GKsDZWa67nLHc2VvqSXKFnpeS3sOrs/UeYJth1+mo+4s0jbDbtsY07HoddZ/1cQ0jETC3zV/A\nC4BbGmwdA74KzBp2vdpnAfA3wG01Oso+uwp49rDrta3+Ajau0NuUmvw+8v0OJyen0Up+h7mCiDiX\n9CN+AnAz6cnvQ6SFTo4kTeNreo8q+ijj8YjYE3grcAHpie1i4C7gVGCHiDimDz2/ALYAPkl6+v5I\nTtcCxwBbRMRVvfS0mRb5KwZI471sajMt8lnPYvqxpe20yV8RcTOwJWka689I04EXk7a3OR14RUQc\nEjUL880U2uKziLiW9Bt2KGn/7PuzjseznrOAfUlTlWfsFkXLw18M9hvUZOvI9zuMMaOFImZ8X88Y\nY4wxxhhjjBkYjzAbY4wxxhhjjDEVOGA2xhhjjDHGGGMqcMBsjDHGGGOMMcZU4IDZGGOMMcYYY4yp\nwAGzMcYYY4wxxhhTgQNmY4wxxhhjjDGmAgfMxhhjjDHGGGNMBQ6YjTHGGGOMMcaYChwwG2OMMcYY\nY4wxFThgNsYYY4wxxhhjKnDAbIwxxhhjjDHGVOCA2RhjjDHGGGOMqcABszEzGEkbSxrPab+K8/vn\nc2OS5gzDxqlA0p35Ok5exuXMiPoyxhhjjDH94YDZLDck7VQK3sYlndZHnlOKAGV52DiDiWEbsIwJ\nZv41GmOMMcaY5YwDZjMMisBmnqTNh2qJAQebxvTF8prJYIwxxpjpgwNmM0wEfHzYRowyEfGtiJgV\nEbMj4q5h22PMNMcPl4wxxpgRwwGzGRZ/IAXMr5e05bCNMcYYY4wxxphuHDCbYfGvwOJ8/IlhGmKM\nMcYYY4wxVThgNsPibuAk0ijzayVtMxllktaT9ElJv5L0kKRFku6Q9G1J2/fIu8R7iZLmSvqmpNsl\nPS5pvCS7f2nRsjmSVpT0fklXSlogab6kiyXt3lXG6pKOzPY9nG38kaRX9LDtWZLeLekMSbdIejTb\ndI+kH0raW5ImUW+1qz7nOhgfIO1YU8aakv5Z0uWSHpS0WNJ9ks6S9MY+7XyNpHNz/oWSbpb0eUkb\nTvTaa8pZW9JnJP1G0mOSfi/pAkn/MKCelSUdJulCSffnay50vUPSrIa83e3xBZK+ltvz45IekHSm\npO36sOGfcnt8UNITuX3eJOl/JL1P0sYN+VfI7eNsSffmsv8o6bKcd5VB6qSk922lNrNrH/InZdlF\nktaqkdk5t9ff5vbxsKRrJR0naYMG3UertKhgbqsfU+c+Mp7r4P+U7gMbk+5Zb69o/xfVlPFMSZ9S\nukfMz/V4l6TT665f0jq5zscl3V133Vn2zCz3lKRdGqqykSlus4PcQ1eSdLikn0r6Q/7/URVlbCzp\nBEnXS/pz9vMtkr4i6cU9rm28rFfSK5TuqXfl78XtE603Y4wxI0BEODktlwTsBIwDY8B+wLOAhfnz\neTV5TinyNOj9f8CCku5yGs/pxIb8d2TZk4F3Ak906XiqJLt/qZwtgJ9VlFuU+d6cZw5wfY3cGPCW\nGrtW6JKru7bzgVVrdGxcrvOK8+XrmVNR91Xl1qUdK/TvCvyxh2/OqbM/6/hCSbY7/++BuWUfTqJ9\nvhC4t8HWbzTVV0nPlsCdPfz2c2D9PtrjXnS+I906ngTm1eh4FnBDgw2FjuNq8s8Bft3jGm4Bnj+B\nel69dE3f6CE7O7efMeD7FedXBk6raR+FnY8Ar63Rf3Qp36a57rv17Adc1KWzqk5+XKH/rbn8pvb/\nNWCFiry7lWS/V2P/gSXdlb7s0ydT2WYHuYfOBa6uKPeoLv37AYsa6vFJ4MMN11fkOwr4VIWe2yda\nd05OTk5OMz8N3QCn0Ul0Bcz5f58r/e9lFXkaA2ZgK+DxnP9x4Hhgx9wROwi4rdQpOrZGR9HZuz53\nvG4D3gVsC/wdcGRJttzZ+ylpWvm/Aq8AXgIcQBo9LzpxmwNXAY8CnwReDmwN/CPwpyy3AFivwq5Z\nWcePgPcDr8zX+/Jsx+Wlazul5tomEzBvALyoIW0D/C7nf5yu4AnYPtfPGHAf8M/A7vkadge+VbL/\njBr7Dy/Zdzfw7lzuDsCxpE707aTAecIBM7AGcFfJnlOBV2WfvokULIzlv7UBMynoeiiffwg4Bnhd\n1rMbnVcRxoGfALMa2uNVwGNd7fGlwMfoBJwPAetW6Ph+yc5vAn+f828N7EEKFH9FRZAFrJPrYjyX\n/0XgDTnvjqR2XASBtwJrTKC+iyD3IWClBrk9S9fxhorz55TO/wDYB/jbXE+H0QmAFwFbV+QvB8y/\nzu34BDrf572B7UjfoxcB92TZM1n6+7Bxl+69S+3pFuC9dL7DewFnl85/rub6TyjZ97aKtvbnfO5X\nwIoTbPtT2WYHvYf+GniKFGi/OtfN64BXleT3KNXTw6T2/7Ls48NJ3/1C3ztrrrE4f00+vpoUhM8l\n3UsOm0jdOTk5OTmNRhq6AU6jk6gOmJ9B6nyPARdW5OkVMP8in38C2LXi/Fp0RnefBF5YIVN09oqO\n1JoN11B09sZzR2/PCpkt8rmx3Jl7DNimQu41pfp4b015m/So06NLtjyv4vyEA+Y+/Hl6Ke87us7N\nLtXrOcAqNToOKunYtevcM0gPGsZIQfEzKvLvkn1f6JhowHx8SceRFednAf9b8n1dwHxFPn8l8PSa\nsl5Vah8H9miPPwdWr5DZp67tkEZdiwcVn+1x3WtX/O/UrPv2ujZBCmyK7+0xE6jv19IQCJfkagNr\n4GA6D2teWXd9wHW5nEsbvj/F/WGpe0iNbxrbGbAunSD0q1SMIGe5T5bKXmq0PvvyWjoP1jYutcdi\ndstCKu5rA/hiqtvsIPfQMeDtDbKz6TykeBjYokJmDp2ZIY8A61TIjJfsO58JPlxwcnJychrN5HeY\nzVCJiD8A/0Z6L3AXSTv1m1fStqTRxgC+GhE/rtD/MHBI/rgC8J46dVnPoRHx535MB06PiLMryryO\nNPorYD3ghIi4qkLuPNIILaRR46ULibi9hx3HkKasijQys1yQdDQwj1QPX4qIk7tE3kwK1h8nBeqP\nV+mJiK+THnoAvL3r9P7Aqvn4/bmtdOe/mDSldcJIWhF4B+laro2I4yrKGSNNf32yQc8OpNG0APaP\niIeq5CLifNIIsFj6mv+iLut5R0Q8WqHju6RRe1i67awDrJiPL6uzN+tZ0HUNG5NGRovvQuVWYxHx\na+DLPa6hif8F5ufjt1YJSFqN1KaDNB37iS6RI+m0vwtq7FwAHJHt3F7S82rsCdIsjaXuIRPkPaSH\ndfcA74mI8Rq5o0nB3gqkEc8ljYpYTKqfxaRZEN+RtELO99Js94ci4jcTMXIZtdlB7qE/johvNsi8\nHijWKTgm31u7bbsL+GD+uCpplk+dfWPAQRFR+z02xhhjunHAbKYDx5NGBiAFgP2yW+m4O2D7CxHx\nE+A3pA7TbnVywN1Ztl9Obzh3TZ9y12a7NulVmBIbSPprSZtL2pzONFFI7yEucyTNI70LGKTRmg9U\niBXB+yUR8aceKi8l1cHfdf2/8NVDwFkN+Wt93ydzgafn42/VCUXEvaTp8XUU13xzRNzYo8xL899t\ncwC0VHHAdRFxQ4OOq6luO/NJo+4Ab2tarKmCPUijl4+RgtomimvYUNJGA5RBRDwFnEGy/zWS1qwQ\nez3wtHz83fIJSS8CiuD3v3sUd3npuLuNlfluw7lB2ZPkw3PztVaSH8T8lOr2X8hcR3qdQaSpyN/N\nnwM4PyL+bRJ2TmWbhcHvob3qvLgHBGm2UR1nkEagy3m6CeCKiLi7f/OMMcYYB8xmGpADqi/SGQV6\nZZ9Zi5VRnyC9C9fEz/Pf50uaXWUGKXgdhFsazpVH7vqRW6NOQNK+eQXeR0mjUTeRppleR7J5qyy6\nXi+DJ4ukrel0XG8C3hwRUSFajPy/umI14SUSaQQQ0kJVZbbIOq5uGKGD5Pvu0cdB2KJ0fGUP2V80\nnCtWet+sj2sugpwVSSPCVdzUw5biQcQSbSePxJ5O+j7NA26T9FmllcZrV1vuuoZVgbEe13BOKV+3\n7/rh1Px3ZaBqFfJ98t/78kyCKjsBftbDzkdKsk12Dvr9ryQHk8V38l19tIXi2mtti4gvAheSfLo3\n6aHGfNLMiMkwlW12IvfQXvLFPf6OiJhfJ5RHjIsHSE0rZk+Jj40xxowWDpjNdOELdILHj/eZp+i0\n/alHQAXwQP4rOqOJ3VROR2zgsYZzf7Gnbjpyl9xSo4B5m5f/Ab5Nev97FVKntCpBZzRumaC0Pc8P\nScHUAuB1DVMv189/6+ytSt3bFBX+fbDJrjxK12sUu4ly57+xLNI76XWsz2DXW6RVq5TR3L6goe2Q\nFrw6K+ufQ5qyei4wX9IvJB1RM6q7fum4X/tpuIZaIuIKOq8kLDEtW9IzSCOFQXqPeXnYOej3v451\nSO/eDmJb0Pv7e0iX/D9FxAPNWXoy1W120DrsJb9OLq/X9xI69/i6B1D9lGeMMcYsRdVImzHLnYh4\nWNIXgE8A20naPSL+p9/sU2TG2BTpmSo+Slo5NoD/A/6dtBruAxGxqBCSdAnpPdYJ78fcC0krk4Ll\njUiL/8yLiN82ZCmCuPNI75pOhqny77Iuq7jma4B9B8h37yTKrCQiHgH2UtrffG9gZ9Ko5yzSFPRt\ngCMk7RURPytlLa7hjzlPv23qjgmaWkwv3lHSBhFxf/7/3qTfp6B62m75IcGepC2R+qE28KqZKTER\nyrZ9HfhSn/l6zZL4Jzr+CNJ2et8bzLSlmOo2O+g9tF/5mXqPN8YY0wIcMJvpxBdJW6+sQxpl7hUw\nF6OK60paoccoczHdMWjPKMOBJHsvi4hdG+SKUZhlySmkLWICODwiLuohP5+0LdVKfbwbWcdDwDNz\nqiW/o9s0qtRPOQXPJG2JU0eTLfNJAc3qk7jmKSUvNncV/GURrZ1Jiza9gbQK+fclPS8vLgWdhbjW\nAG6awiCyjlNJAfMKwFtIM02gMx37przAWDfl6bkLpkt9Z8qzHTQVtknalXRvDNJWUmsB+0s6OyJ+\nMAnV067NdvEnkn2N94BMcY+fzGwTY4wxZik8JdtMG/JqwMeTOkhbS9qrR5br89+V6LwzWMdL899b\nmxbhmS5IWodOB/CMBrnVgBcsY1s+Qlr1OoCTIuLf+8hWvE+4Tc074/1wXdaxVcMiQ5AWO1tpgmUU\n5RRs20O26fzV+e8mktZvkBsKEbEwIs6NiHnAiaS63YC0D21BcQ0rs+R7wsvKphtJo5siB8mSnkNn\n5ebv1GS9unS8/bKzcCl6PkDI79PeQF6TYbIFSlqbtJe2SCujb0Ua0RfwVUkTeX+8YFq3WTr3+OdK\nWrdOKN9jXkLyz/V1csYYY8xEcMBsphv/Rmfa5MdpnhJ6Yem4dvEbSX9HWk06gMrtZ6Yh5SBztQa5\ng1mGM0UkvZ40TT6Ai4F/7DNrsar1WtRv89KLwr/rkKbd1nHgBPUX/JLOKPPb6oQk/RVpGmwdxTWL\nNBo4nSlvn1ReLO5sOkHh4cvJlmLxr5dIegGd0WWofn8Z0qsJ95Dq+hBJk3lgMgjFegQr95Ar2sJm\nAyxiWMdJwF+R3lk/ICJ+R2qnY6TvxjcnoXu6t9niHiCa7yPzSPeach5jjDFmSnDAbKYVEfEY8Fk6\nq53u3iB7JWm6qYCDJe3SLZNXBf5K/jheOp7u/IHOImhvyXsFL0Heh7oIZqccSSbGidkAAAXwSURB\nVFuRFhwD+C3pveV+3wH8FnA3yTefk1S5z3SprO0l7VihY1HW8YWqETClfbsPZhJ1kFeVPoXOaPYR\n3TJ52vfX6OxvXKXnAtIq2gI+KKlq5eeyzhdLeu1E7W7Q+9yKuuzmVaXjv7x/HBG30Nnu6c2SGoNm\nSc+R9OYJG5s4jY7/9iVNzQb4aUTcWZUhTxX/dP64CfDtpqBZ0hqSDp2knQD3k+qmbj/ngi+RVrUX\ncEreBqsWSbtLWmp1Z0n70dnv/MSIuBAotso7Nut/paR+H2QtwXRpsw38kDSqLuAjNXX0bNLMJEgL\n5TVtP2WMMcYMjN9hNtOR/yBtNfQsoHYaXuZg0pZRKwHnSTqRNEq2ENga+BCpQx3A8dP0Pb2liIiQ\ndCpwKGnK8RV5UbRbSSMpewDvJm2Zcy/LZlr2WeTthYCPkPbb3bBB/o78wIOIeELS3qRR6dWBiyR9\nj9QBvoP0sG4D0gJUbyA9HDmMzl6vRMSDkj4GfA54LvBLSceSOvirkOrgcNJI42pMblutT5AWmtoI\nOE7SS0gPCx4E/pq01/Rc0gOapmnZ+5Da4zrAf0k6m7TF062kelyfNHX0dcB2+drOqVY1YeYAF0u6\nEfhBtrlYpOnZpOn18/LnqyOie6usd5OudRPSg4q9SHVxA7CY9J3cEngNsAtwJpNYfCoi7s0L1+1E\nau9r0zwdu8j3FUm7kfZr3huYK+kkUvt4GFgT2Iz03vbrSA9fvjxROzM/IV3ztpI+RFrUbmE+tygi\n7su2PShpf9LDhw2BqyR9M8vfQ3rwshHpVZF5pPb9WkrTiSVtDPwrqS5uIN3Lynyc9OBjW+Azki6I\niF5bkVUxHdpsJRHxpKRDSPf0tUj3weNJMyTGSFPeP0Rnte8P9LHvuzHGGDMYEeHktFwSqUM8Turo\n7NdD9tAsW6SxBtndSFNqx7ryFGWNAV9qyH9Hlj25j2vYv6R3ToPc0b3sznKnZLnbK86tSZouXHVd\n46RgbgdSUDoOXFShY+OmOm+6npoym9KOFfpfSlrBuO4ayj7at6aOTijJdOd9gBTc9e3DBl+8iBRY\n1rWjr/fjf2BT0nu5dTaXr/kjE22PdW2H9D1rKrso/3pg4xrd65NWZu/nGr42BfeGA7t0LwbW7SPf\nLNJrHE/1YeetE/2eluQ3JK0gXlVW1fdvD9JskV6+eALYqZRPwGX5/CJgixp7nk8ayR4nTVOfPcH6\nXy5tttc9pyHP20ijx3XfzSeAIxvyF3JHTbatOjk5OTmNXvKUbLO8Ke+J2sTXgLtK8rV5Ik1T3JQ0\nRfNq0ujS46Q9Xk8FXh4Rvd7P69euQWQnJRdpj+PtgY8B15I6zo8ANwLHAVtFxOV9lNXLjrrzg+zL\nWrlCeaTRy+cD7yKNSt1LCoYWkfx7Pmn0erOIqBxRjIj3kQKP80mr+i4ijX59EXhJRPyyz+tsJNLs\ng81JdXsLqQ39AbgIeEtEHNRPORFxG2lhpn2A/ya1w8dI130f6QHHJ4G5EfGpOjV9XkuV3KWkUdVj\ns+23klZWfoL0gOF84J2kuvsdFUTEgxGxM2nU81TSlPyFWceDwBXA50lB3sF92NmL75Pqu7ie8yNi\nfnMWiIixiDiMNOJ9Iul7soAUQC8g3Q++AfwD6YFIpRr6bDeRRpC3zTpvJbXF2ntURJxLGj0+gjQq\n+gCpDh8DbieNnL4feG5EXFLK+mHgZVnnRyOivDBdWf+twPuy3JakdjUwy7nNDipLRPwnabbAl0j3\nv0ezfbcBXyW15eP61WeMMcYMgiKWyeuPxhhjjDHGGGNMq/EIszHGGGOMMcYYU4EDZmOMMcYYY4wx\npgIHzMYYY4wxxhhjTAUOmI0xxhhjjDHGmAocMBtjjDHGGGOMMRU4YDbGGGOMMcYYYypwwGyMMcYY\nY4wxxlTggNkYY4wxxhhjjKnAAbMxxhhjjDHGGFOBA2ZjjDHGGGOMMaYCB8zGGGOMMcYYY0wFDpiN\nMcYYY4wxxpgKHDAbY4wxxhhjjDEVOGA2xhhjjDHGGGMq+P/WPi4QxNXQVAAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Define the name of your method. This is just used for visualization\n", "method_name = 'my_method'\n", "\n", "table, renderer = plot_ced_3dMDLab({method_name: errors})" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
meanstdmedianmadmaxaucfr
my_method0.03470.03290.02610.02030.19570.72160.0367
\n", "
" ], "text/plain": [ " mean std median mad max auc fr\n", "my_method 0.0347 0.0329 0.0261 0.0203 0.1957 0.7216 0.0367" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# statistics of the distribution of the per vertex errors\n", "table" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 2. Evaluate on 3dMDLab-synthetic" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[====================] 100% (6/6) - done. \n" ] } ], "source": [ "# Define the path of the reconstructed meshes\n", "path_reconstructions = DATA_PATH / '3dMDLab_synthetic' / 'Reconstructions_dummy'\n", "\n", "# Define the path of the ground truth meshes\n", "path_gt = DATA_PATH / '3dMDLab_synthetic' / 'Ground_Truth'\n", "\n", "# Define the model template you are using.\n", "# You can choose on the three supported models according to the model\n", "# you have used for your reconstructions:\n", "# - 'LSFM'\n", "# - 'Basel'\n", "# - 'Surrey'\n", "model = 'LSFM'\n", "\n", "errors = calculate_errors_3dMDLab(path_reconstructions, path_gt, model)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n69ZkZGSQnZ3NI488ElW7W7Zs4e6776Zfv360atWK+vXrc+ihhzJ48GCmTZtW5jWnnHIKaWlprFy5\nEndnypQpJbEXf5122mkR2501axbnnnsubdu2pUGDBhx55JFcd911fP311xXGvGvXLh566CFOO+20\nkpjbtm3LoEGDePrppylj3eT9fP3114wdO5aOHTvSsGFDDjvsMM477zzeeOONCq+tSrVqhFlERCSZ\nMjNbM2/eqIhl+vSZVKXTnevXr0Pv3ofTv38HBgzoEPpBul5MdXTr1jKqckuXfsoxx3ROSF0iyVYT\nPr/lqcmxFfvqq684/fTTWbZsWckztNu2bePll1/mtdde49lnn2Xo0KF89NFHDBw4kLVr15Zc++OP\nP5KTk8Orr77KK6+8woABA0rOjR49mrFjx/Lpp5+yYMECTjjhhHJjeOqpp9i1axdmxqhRkf+8YlF8\nP9dddx1///vfSz0j/NFHH/Ff//VfzJ49m+eee45du3YxfPhwpk2bVqrcokWLuPbaa1m0aBF///vf\ny23rjTfe4Oc//zkbN24sdf26det46aWXeOmllxg4cCDPPfccjRo1KhVjcXl3L/M55kjPNv/617/m\n3nvvLVVm5cqV/P3vf2fatGnMmTOHY445psxrv/zyS84++2yWLl1a6vpvv/2Wl19+mZdffplHHnmE\n//znPzRv3rzMOt555x3OPfdctmzZUlLHN998w0svvcSLL77IuHHjyo29qilhFhERSWEZGemcdFL7\nkmeQe/U6lPr14/vvPdptaAYPHkxOzn1xtSWS6t5//yvq1/9Dwurbtav69pdNpIsuuog1a9bw29/+\nlrPOOotGjRrx7rvvcscdd7B582ZGjRpFdnY255xzDjt27OCuu+6if//+pKen88orr/DHP/6RnTt3\ncvnll7Ns2TLq1g3+HRs+fDi33nor27dvZ/LkyRET5ilTpgDQvXt3evTokdD7e/jhh3n//fc555xz\nGDVqFB06dGD16tXcfffdzJ8/n+nTp/P444/z4YcfMn36dEaMGMGwYcNo27Yty5YtY9y4cSxZsoSJ\nEycyZMgQzjzzzP3aeO+99xg4cCC7d++mTZs23HDDDRx33HEceuihrFmzhn/+85889dRTvPzyy4wc\nOZLnn3++1L0XFhZy5plnsnbtWs477zz+8IfSfy8zMsqeUfToo48yd+5cTj31VK666io6derEpk2b\nePLJJ3nyySfZsGEDV155Je+9995+1xYWFnL66aezYsUKzIwLLriAK664gkMPPZQVK1bw4IMPMnv2\nbN59910GDx7MnDlz9kvcV69ezbnnnsvWrVupU6cOV199NUOHDqVZs2Z89NFH3HPPPYwbN46ePXtW\npuvipoRZREQkhTRv3oCTT+5A//7t6d+/Az16tKVuXT1hJZIs7rBzZ2omuYni7nz44YfMmTOnVFKT\nlZXFUUcdxTnnnMPWrVs58cQTAVi4cCE/+clPSsr17NmTQw45hLFjx7Jq1SpmzJjBeeedB0DTpk25\n8MIL+cc//sE///lPHnjgAerXr79fDIsXL2bx4sWYGVdeeWXC73HBggXcfPPN3H///SXvHX/88Zxx\nxhkce+yxrFq1ittvv53vv/+ev/71r6WmhB9//PH079+fTp068cMPP/Dwww/vlzDv3r2bESNGsHv3\nbs4++2z+9a9/0aBBg1J1DBw4kJNPPpmrrrqK6dOn88Ybb3D66acD0KFDBwDS04Op+QcddBDHHnts\nVPc2b948rr76ah5++OFS75966qmkp6fz2GOPMX/+fD788EOOO+64UmXGjRtXkiz/93//d6mR4B49\nejBkyBB+8Ytf8PTTTzN37lweffRRrr766lJ13HzzzSUjy08//TQXX3xxybmsrCwuuugi+vXrxwcf\nfBDV/SSa/ocVERGJkbtTWLizWtpq3TqDiy46lv/7v7P58MNr2LDhNv7zn0u45Za+9Op1mJJlEUk6\nM+Omm24qcwRw4MCBdOjQAXdnw4YN/OEPfyiVLBe74oorShLEd955p9S50aNHA7B582amT59eZgzF\new7Xq1eP4cOHx3M7ZWrXrh333nvvfu83bNiQkSNH4u5s3LiR3r17l/n8dOvWrbngggtw9/3uD+DZ\nZ59l5cqVNGjQgCeffLJUshxu9OjRJaPsxSPq8Wrbti1/+9vfyjx3661711LeN+6dO3cyadIkzIyu\nXbtyxx13lFnHQw89xCGHHALAgw8+WOrcunXr+Pe//42Zce6555ZKlotlZGTw6KOPxnRPiaT/ZUVE\nRKJQVOS8994qbr75VY444q/k539bJe20a9eUESO68+ij5/Dpp2NZu/YWnnvuIq6//gS6d29NWpr2\n1xSRmufnP/95uee6d+8OBIl1WQkRQIMGDTj66KMB+OKLL0qdO/nkk+nUqRMAkydP3u/aXbt2MXXq\nVMyMwYMHc/DBB1fqHiIZMmRIyeJm+wofdS3v/sLLff/992zZsqXUueJtFQcMGFBh/P3798fd91tM\nrbIuvPDCkpHpfXXq1InGjRsD+/dLbm4umzZtAuDyyy8v9xnpJk2acPHFF+PufPLJJ6xbt67k3Ftv\nvcWePXtK6ihPr169olr4rSpoSrZIlPb9jZjUfOqz1FIT+2v37iLmzFnJtGmf8MILn7J27Q9V0k7L\nlo24//4zGTCgAx06HFQlbVSFmthnIpIcxQltWQ46KPh3rUWLFjRr1ixiOXdn69at+50bNWoUv/rV\nr3jzzTdZvXo17dq1KzmXk5PDd999h5lxxRVXxHEX5Yvm/mIpt3XrVpo2bVry/QcffICZ8corr5CW\nFt2Y5jfffBNVuYp07hx58cbmzZtTWFi4X78UFBSUHBdPty/PiSeeWDLlu6CggNatWwOQn59fUqZX\nr14R6zjhhBP4+OOPI5apChphFolS+/btkx2CxEh9llpqSn/t3LmHl19exujRObRt+2dOP/1JHnro\ngypLlgE6djyYyy47LqWSZag5fSYiyVfeFGKgJAEMX9U5UrniEcdwI0eOJD09HXfniSeeKHWueDr2\nYYcdxllnnRVT3NGKFHt4ghttuX3v8dtvg1lLxatdR/O1ffv2yt5OKZXtl40bN5Yct2rVKmIdbdq0\nKfO6WOooTrKrm0aYRUTkgPfjj7t45ZXlTJ/+KS++uJTNm3ckOyQRSRFmkJ5e9lTdyti1aw9RbFl7\nwGnVqhXnnHMOL7zwAlOmTOF3v/sdAGvXruW1117DzBg5cmTErZNqsuJk9Oyzz+ZPf/pTkqOJXSL+\n3Gtq3ylhFhGRA9LWrTuYMWMZ06YtYebMZWzbtivuOvPz19Gnz6QKy4hIzVPZz++JJx5e4R7JsShr\nP2X92xIYPXo0L7zwAitWrGDOnDn079+fJ554gj179mBmEZ+BrekOOeQQ1q5dy86dO6Ne3TrZwp+1\nXrduHUcddVS5ZcOnj4dfF74v87p16zjssMPKrSP82efqlJCE2cyaAZcAJwNHAk2Ain7V5u6enCe3\nRUTkgPT99z+Sk7OUadOW8Nprn7NjR2K3giks3LXfD7oikhpq8ue3JsdWnX72s59x+OGH8/XXXzN5\n8mT69+/PlClTMDNOPvlkOnbsmOwQK61Hjx6sWbOGDz74gN27d5fsQx2r6hyl7datW8nx+++/z0kn\nnVRu2QULFpR5XWZmZsnxwoULIybMCxcurGyocYn7GWYzOw/4HHgIGAb0BroCnaP4EhERqVLfflvI\no4/mctZZT9Gq1f1cfvl/ePHFzxKeLIuISNUqXtTL3fnXv/7Fq6++ymeffQYEi4KlssGDBwPB1lll\nrQQereJnyXfsqPpHi7Kzs0sWMtv3ufJwP/zwA8899xxmxrHHHlvqWeRTTz21ZPXxSHUsXLiw1CJj\n1SmuhNnMsoHngeaAARuBN0Lv/bOCr+fiaVtERKQ8X321hb/97X1OOWUKbdv+mauvfonXXvuc3buL\n4qo3Lc0YMKADf/vbz8jKapugaEVEJFpXXnklZsa2bdtKVsRu0qQJF154YZIji8/IkSNp164d7s6t\nt95a5l7N4d577z3mzJmz3/tt27bF3fn888+rKtQS9erVY/To0bg7BQUF/M///E+Z5caOHcuGDRsA\nuOGGG0qda9OmDeeddx7uTk5ODv/617/2u76wsJCrr746ac84xzsl+/ZQHTuAscAUd4/vpxEREalV\nxozJoaBgfULq6tatJRMnDi7z3BdffM+0aZ8wbdoS3n//64S0B1C3bhqnnXYEQ4d24fzzO9OqVQYA\nzzyTnN90i4jUZhUlRR06dOCMM85g1qxZrFu3DjPj5z//OQ0bNqymCKtGvXr1eO655zj11FP54Ycf\nOO2007jkkks4//zzOeKIIygqKmLt2rXk5uYyffp0CgoKePDBB+nfv3+pevr27ctbb73FwoULuffe\nezn77LPJyAj+32rYsCGHHnpoQuP+/e9/z/Tp0/niiy+44447+Oijj7jiiito27YtK1as4P/+7/+Y\nPXs2Zkbfvn0ZM2bMfnX8+c9/ZtasWWzdupVhw4bx9ttvc+GFF9K0aVM+/PBD7rnnHpYvX07Pnj2T\nMi073oS5H+DAn9z98QTEI1JjTZ06lWHDhiU7DImB+qxmKChYX2XP3i1Zsp5p05YwbdoSFi9OzH6U\nAPXr1+Gss45i6NAunHtuJ5o33/8HsW7dWiasvUTWVZ30GZNUVZM/vzU5turgUSwRPnr0aGbNmoW7\nV+ney9XtxBNP5O233+biiy9m9erVPP300zz99NP7lSveVip8H+di1157LQ8//DDff/89v/71r/n1\nr39dcu6UU07hzTffrFRs5fVL48aNefPNNzn77LP59NNPmTZtGtOmTdsv3n79+vGf//ynzF+IdOjQ\n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\nwukyAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Define the name of your method. This is just used for visualization\n", "method_name = 'my_method'\n", "\n", "table, renderer = plot_ced_3dMDLab({method_name: errors})" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
meanstdmedianmadmaxaucfr
my_method0.03280.03420.02280.01960.19570.73980.0441
\n", "
" ], "text/plain": [ " mean std median mad max auc fr\n", "my_method 0.0328 0.0342 0.0228 0.0196 0.1957 0.7398 0.0441" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# statistics of the distribution of the per vertex errors\n", "table" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 3. Evaluate on 4DMaja-real" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[====================] 100% (387/387) - done. \n" ] } ], "source": [ "# Define the path of the reconstructed meshes\n", "path_reconstructions = DATA_PATH / '4DMaja_real' / 'Reconstructions_dummy'\n", "\n", "# Define the full path of the ground truth mesh\n", "path_gt = DATA_PATH / '4DMaja_real' / 'Ground_Truth' / 'neutral.obj'\n", "\n", "# Define the model template you are using.\n", "# You can choose on the three supported models according to the model\n", "# you have used for your reconstructions:\n", "# - 'LSFM'\n", "# - 'Basel'\n", "# - 'Surrey'\n", "model = 'LSFM'\n", "\n", "errors = calculate_errors_4DMaja_real(path_reconstructions, path_gt, model)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nVryFvhzwsnNuQslvRUREpOJYs2Y7bduOYeXKraXaTpUqlejW7WRfgtySrl1PomrVivIxRyItGo8d\nBKs8xyblX4sWLVi/fj033ngjr732WrTDqRAqxG8S59y3ZnYt8AZQC3j06CJ4yXI/51x2GE01B+4t\nLAQgB3jSOXdfGPVLObZ+/XqaNWsW7TAkBOqz2KL+Kt8SE+NJTm4YsExGRhbZ2TkF3svKyiYrK5xf\nvYWLj4+ja9eT80eQzz77ZKpVi494OyIiscTMNGocYRUiYQZwzs00s/Z4o839gJOBg8APwBRgjHNu\nf6AqimliGlAVOA9vNLkBcAD4CXgfeM05tzKsm5By7fbbbyctLS3aYUgI1GexRf1VviUnNyzR9kuR\nUrlyHF26NMkfQe7W7WQSE6uEVEdSUv2IxRPJukREpPyqMAkzgHNuA97zyveEeN14YHwxZdbijVwf\nPXotIiIiERYXZ3Tu3CR/BPmcc5pRo0ZoCfLR9CyniIiEKi7aAYiIiIiYQUpKY+65pxszZqSyffuf\n+Oqr4Tz22AVcfPGpYSfLIsVJTIzn7LNPDviVmBidaf/lNbYHH3yQuLg4KlWqBMDu3bt54IEHaN++\nPTVr1qRhw4b069ePL7/8ssB1W7Zs4b777iMpKYkaNWpQr149BgwYwLfffntMGykpKcTFxXHGGWcU\nG8+2bduoWrUqcXFx3H777WHf37p164iLiyMuLo4JE7wliqZPn85FF11Ew4YNqVGjBmeeeSbPPfcc\nhw4dKnDtf//7X84991waNmxIYmIiKSkpvPTSS0G1u2vXLkaPHk2PHj1o0KABVatWpUmTJvTv359p\n06YVes25555LXFwc69atwznHuHHj8mPP+zrvvPMCtjt79mwuu+wyGjduTEJCAqeccgq33XYbP//8\nc7Ex5+Tk8Pzzz3Peeeflx9y4cWP69evHxIkTKWTd5GP8/PPPjBw5klatWlGtWjVOOukkLr/8cj7+\n+ONiry1NFWqEWURERMJ3+HBuqbdhBh06NOLcc5vTp09LevVqTp06CaXerkhRov3YQSDlObY8P/30\nE+effz6rVq3Kf4Z27969vPfee3z44YdMnjyZq666iqVLl9K3b182bdqUf+2+fftIS0vjgw8+4P33\n36d3797554YPH87IkSNZuXIlX3/9NWeddVaRMbzxxhvk5ORgZgwbFvjfKxR593Pbbbfx4osvFnhG\neOnSpfzhD39g3rx5TJkyhZycHAYNGsS0adMKlPvmm2+49dZb+eabb3jxxReLbOvjjz/muuuuY9u2\nbQWuz8rKYsaMGcyYMYO+ffsyZcoUqlevXiDGvPLOuUKfYw70bPOf//xnHn/88QJl1q1bx4svvsi0\nadP49NNPOf300wu9du3atVxyySV89913Ba7/5ZdfeO+993jvvfd46aWXePfdd6lbt26hdXz22Wdc\ndtll7Nq1K7+OzZs3M2PGDP73v//xwAMPFBl7aVPCLCIiIuzbl8OsWauYNCmTRYs2lkobyckNOPdc\nb4p1794tOOGEaqXSjkhZ+uqrn6ha9ZGI1ZeTU3b7y0bSNddcw8aNG/nrX//KxRdfTPXq1fn8888Z\nNWoUO3fuZNiwYaSkpHDppZdy4MABHn30UXr16kV8fDzvv/8+f//73zl48CA33ngjq1atonJlL00Z\nNGgQ99xzD/v372fs2LEBE+Zx48YB0L59ezp27BjR+3vhhRf46quvuPTSSxk2bBjNmzdnw4YNjB49\nmgULFjB9+nRee+01lixZwvTp0xk8eDCpqak0btyYVatW8cADD7BixQpefvllrrzySi666KJj2vji\niy/o27cvhw4dolGjRvz+97+nQ4cONGnShI0bN/Lmm2/yxhtv8N577zFkyBCmTp1a4N6zs7O56KKL\n2LRpE5dffjmPPFLwv8vExMRC7+0///kP8+fPp0+fPtx88820bt2aHTt2MGHCBCZMmMDWrVu56aab\n+OKLL465Njs7m/PPP581a9ZgZlxxxRUMHTqUJk2asGbNGp577jnmzZvH559/Tv/+/fn000+PSdw3\nbNjAZZddxu7du6lUqRK33HILV111FbVr12bp0qU89thjPPDAA3Tu3LkkXRc2JcwiIiLHqZycw3z0\n0Y9MmpTJO++sZPfugxFvo2HDRJ57ri+9ezenfv3CP6yJxDLn4ODB2ExyI8U5x5IlS/j0008LJDWd\nOnXi1FNP5dJLL2X37t107doVgIULF9KiRYv8cp07d+bEE09k5MiRrF+/npkzZ3L55ZcDUKtWLa6+\n+mpef/113nzzTZ555hmqVq16TAzffvst3377LWbGTTfdFPF7/Prrr7nrrrt46qmn8t8788wzueCC\nC2jXrh3r16/n3nvvZfv27Tz77LMFpoSfeeaZ9OrVi9atW7Nnzx5eeOGFYxLmQ4cOMXjwYA4dOsQl\n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\nGGOMMcZU8P8By8gQ6E1wHbwAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Define the name of your method. This is just used for visualization\n", "method_name = 'my_method'\n", "\n", "table, renderer = plot_ced_4DMaja_real({method_name: errors})" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
meanstdmedianmadmaxaucfr
my_method0.04340.0340.03440.01730.17860.64950.0548
\n", "
" ], "text/plain": [ " mean std median mad max auc fr\n", "my_method 0.0434 0.034 0.0344 0.0173 0.1786 0.6495 0.0548" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "table" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 4. Evaluate on 4DMaja-synthetic" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Note that\n", "this calculation can take several minutes depending on your machine, because it measures the per vertex errors for each one of the 440 pairs \"ground truth mesh - reconstructred mesh\". \n", "\n", "For example, it takes about 11 minutes in an Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz. " ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[====================] 100% (440/440) - done. \n" ] } ], "source": [ "# Define the path of the reconstructed meshes\n", "path_reconstructions = DATA_PATH / '4DMaja_synthetic' / 'Reconstructions_dummy'\n", "\n", "# Define the path of the ground truth meshes\n", "path_gt = DATA_PATH / '4DMaja_synthetic' / 'Ground_Truth'\n", "\n", "# Define the model template you are using.\n", "# You can choose on the three supported models according to the model\n", "# you have used for your reconstructions:\n", "# - 'LSFM'\n", "# - 'Basel'\n", "# - 'Surrey'\n", "model = 'LSFM'\n", "\n", "errors = calculate_errors_4DMaja_synthetic(path_reconstructions, path_gt, model)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nvlqg3Oeff86gQYP4/PPPefLJJ4ts67333uPyyy9nzZo1BeqvXLmSSZMmMWnSJLp06cL48eOpVq1a\ngRjzy7t7xOeYoz3bfMcdd/DQQw8VKPPDDz/w5JNP8uqrrzJjxgyOPfbYiHW///57OnfuzLffflug\n/s8//8zUqVOZOnUqTz31FG+88QZ169aNeI2PPvqI888/n/Xr1+++xv/+9z8mTZrEm2++yd13311k\n7KVNCbOIiIhIOVO9ekVatmyw++e8vJ3k5KQwoHLs009/pHLl+5J2ve3bdxZfqAy69NJLWb58OXfe\neSfnnnsu1apV4+OPP2bIkCGsW7eO/v37k5WVxXnnncfWrVu5//77ad++PRUrVuStt97ir3/9K9u2\nbaNPnz4sXLiQAw4I0pRevXpx6623smXLFkaOHBk1YX7++ecBOOGEE2jVqlVS7++JJ57g008/5bzz\nzqN///4cccQRLFu2jAceeIDZs2czYcIEnnvuOebPn8+ECRO48sor6dmzJw0bNmThwoXcfffdLFiw\ngGeeeYaLLrqIc845Z682PvnkE7p06cKOHTs45JBDuOGGG/jtb3/LoYceyvLly3nppZd48cUXmTp1\nKr179+bll18ucO95eXmcc845rFixggsuuID77iv432X16tUj3tvTTz/NzJkz6dixI9dccw1Nmzbl\n119/ZfTo0YwePZrVq1fTr18/Pvnkk73q5uXlceaZZ7JkyRLMjAsvvJC+ffty6KGHsmTJEh5//HGm\nT5/Oxx9/TLdu3ZgxY8ZeifuyZcs4//zz2bBhAxUqVODaa6/l4osvpnbt2nz55Zc8+OCD3H333bRu\n3bokXZcwJcwiIiIi5UzhEcl58+aRlXVvCiMqv9xh27b0THKTxd2ZP38+M2bMKJDUZGZmcvTRR3Pe\neeexYcMGTjnlFADmzp3Lb37zm93lWrduzYEHHsjgwYNZunQpkydP5oILLgCgVq1aXHLJJbzwwgu8\n9NJLPProo1SuXHmvGL744gu++OILzIx+/fol/R7nzJnDzTffzCOPPLL7sxNPPJGzzjqL5s2bs3Tp\nUm6//XbWrl3Lv/71rwJTwk888UTat29P06ZN2bhxI0888cReCfOOHTu48sor2bFjB507d+aVV16h\nSpUqBa7RpUsXTj/9dK655homTJjAe++9x5lnngnAEUccAUDFisHU/Dp16tC8efOY7m3WrFlce+21\n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\ncyT+4GMy8F1JV5pZq63IihgJbbYQM3tF0r74PX1Z/D54HD5Dog+f8v5VGqt9f3zHoo4AAANuSURB\nVLmNfd+DIAiCoDPMLFKkYUl4h7gf7+js1kJ2/ySbpb4K2a3wKbV9TXmysvqAH1TkfzTJntnGNUzN\n6Z1QIXdEK7uT3FlJ7pGCc8vg04WLrqsfD+Y2wYPSfuDqAh0Tq+q86npKyqxKmxbo3xBfwbjsGvI+\n2qWkjk7KyTTnfQYP7tr2YYUv1sQDy7J29LN2/A+sjr+XW2Zz/pq/MdD2WNZ28O9ZVdlZ+XcDE0t0\nr4ivzN7ONZw+BPeGvZp0zwWWbyPfGPw1jlfbsPPBgX5Pc/Ir4yuIF5VV9P3bBp8t0soX84DNcvkE\nXJ/OzwbWLrHn7fhIdj8+TX3sAOt/WNpsq3tORZ5d8dHjsu/mPODQivyZ3OGDbauRIkWKFKn3UkzJ\nDoab/J6oVZwOPJ6TL81jPk1xdXyK5u346NIcfI/Xc4H3m1mr9/PatasT2UHJme9xvDFwGHAn3nF+\nEbgXOBZY18xuaKOsVnaUne9kX9bCFcrNRy/fDnwOH5WahgdDs3H/XoGPXq9hZoUjimb2JTzwuAJf\n1Xc2Pvr1fWA9M/trm9dZifnsg7Xwun0Ab0PPAVcDnzazvdspx8wewhdm2hn4X7wdvoxf91P4A46j\ngUlm9u0yNW1eS5Hcdfio6jHJ9gfxlZXn4Q8YrgA+i9fdPynAzJ41s83xUc9z8Sn5s5KOZ4EbgRPw\nIG+fNuxsxW/x+s6u5wozm16dBcysz8wOwEe8T8a/JzPxAHomfj84A/gE/kCkUA1tthvzEeTJSeeD\neFssvUeZ2WX46PEh+KjoM3gdvgw8go+cHgy8zcyuzWX9GvC+pPObZpZfmC6v/0HgS0luHbxddcww\nt9lOZTGzX+CzBX6A3/9eSvY9BJyGt+Vj29UXBEEQBJ0gs4Xy+mMQBEEQBEEQBEEQ1JoYYQ6CIAiC\nIAiCIAiCAiJgDoIgCIIgCIIgCIICImAOgiAIgiAIgiAIggIiYA6CIAiCIAiCIAiCAiJgDoIgCIIg\nCIIgCIICImAOgiAIgiAIgiAIggIiYA6CIAiCIAiCIAiCAiJgDoIgCIIgCIIgCIICImAOgiAIgiAI\ngiAIggIiYA6CIAiCIAiCIAiCAiJgDoIgCIIgCIIgCIICImAOgiAIgiAIgiAIggIiYA6CIAiCIAiC\nIAiCAiJgDoIgCIIgCIIgCIIC/h9sKP1lqJLnEgAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Define the name of your method. This is just used for visualization\n", "method_name = 'my_method'\n", "\n", "table, renderer = plot_ced_4DMaja_synthetic({method_name: errors})" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nd5+YzD8ZOAtoAN40s1yNxWfu/nktGyYiIiKLr+pAwd1vTcZMOJtocphA1ALMSJL0BwYULfYs4Mn/\nhwL7AW8A6yTTjiaecritaLmzkvWIiIhIJ6ipM6O7XwlcmTFvRIlpZZs43H3tWsohIiIi7UvvehAR\nEZFMChREREQkkwIFERERyaRAQURERDIpUBAREZFMChREREQkkwIFERERyaRAQURERDIpUBAREZFM\nChREREQkkwIFERERyaRAQURERDIpUBAREZFMChREREQkkwIFERERyaRAQURERDIpUBAREZFMChRE\nREQkkwIFERERyaRAQURERDIpUBAREZFMChREREQkkwIFERERyaRAQURERDIpUBAREZFMChREREQk\nkwIFERERyaRAQURERDIpUBAREZFMChREREQkU02Bgpkda2ZTzGyOmT1lZpuVSdvfzG42s8lmtsjM\nRmak29vMJiZ5PmdmO9dSNhEREamfqgMFMxsOXAycCWwKPAfcZ2Z9MxbpCbwPnANMyMjzm8AY4Brg\nf4G/A3eY2YbVlk9ERETqp5YahUbgancf7e6TgKOB2cChpRK7+xvu3ujuNwGzMvI8HviHu49098nu\nfgYwHjiuhvKJiIhInVQVKJhZD2AY8GBumrs7MBbYcjHKsWWSR9p9i5mniIiILKZqaxT6At2B6UXT\npwP9F6Mc/dshTxEREVlMeupBREREMi1TZfoPgEVAv6Lp/YBpi1GOabXm2djYSJ8+fQqmNTQ00NDQ\nsBjFERERWTo0NTXR1NRUMG3mzJkVL2/RxaByZvYU8LS7n5B8N+BN4DJ3v6iNZR8GnnX3E4um3wIs\n7+67p6Y9Djzn7sdk5DUUaG5ubmbo0KFVbYOIiMgX2fjx4xk2bBjAMHcfXy5ttTUKACOBUWbWDDxD\nPAXRCxgFYGbnAau5+8G5BcxsCGDAisAqyff57j4xSXIp8IiZnQjcAzQQnSaPqKF8IiIiUidVBwru\nfmsyZsLZRPPABGBHd5+RJOkPDCha7FkgV3UxFNgPeANYJ8nzSTPbDzg3+bwK7O7uL1dbPhEREamf\nWmoUcPcrgSsz5o0oMa3NTpPu/lfgr7WUR0RERNqHnnoQERGRTAoUREREJJMCBREREcmkQEFEREQy\nKVAQERGRTAoUREREJJMCBREREcmkQEFEREQyKVAQERGRTAoUREREJJMCBREREcmkQEFEREQyKVAQ\n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\nx7b+8pet173SSvl07fFESKnOh+U+jz1WuEz//oXz582rbv3Tp7sPHhz9NfbZp/X6ipsDcp8NN3Rf\nccXS83bdNTpvjh/v/qc/tZ7/ta/lA8GWlggo99jDfa+94veRlntsttbtyzJ0qCeBiQIFEZGS0s+f\n5z65u6z0J90GXYlZs+KuNp3HuedG+/bMmdkXF4je+aWkH4FLf6q5Gy/3cY879VLWXz+f7phjqtsX\nlbjjjtblWXnl6Bg5ZkzreaNHR9MCxJMOub4Z6W2pVktLbP/8+dG3YO21295nJ5xQOgjo1Svu2HPG\njy+cv8kmrZ92KOfRRxd/+0p54IHI++GHKw8UNDKjiFSsuXnJHt2uEr//fetpl18eowWus05+2h57\nwGOPZeczZ06MDgjw0kvQr1/kk3baadCrF/TpA599lp3XmmuWnv6tb+VHM0x78cXsvJZfPt6lcP/9\ncNll2ely7wTo3r30/NzokD16wM9/np1Prb7zHVh55fz3ddaBa6+NfbXhhq3TX3ZZfgTNbbaJoYpz\nVlmltjKYxfb36AGjR8Prr8OIEeWXGTwYDj00/wrtnEGDYJnU+5g32ijyz3nmmezjXMraa+f/362O\nV+rttothrXv3rmKhtiKJJfWDahREava3v0V180cfVb7ME0/EnU23bjG4TSUee8x9o41idLhybfYd\n5ZVXWndgXG65aL92jzv/9JMQq6+ef9Jg0aIY92Dhwnzv8a23jirhXXddvDv7XLt5KY8/HuWoNK8d\ndihcvrgt/u67o8kh9+hgORMmRH+O9vLCC+7XX9/60c45c8pv4+WXR/v8JptER8Jx4+pXpvvvL7/u\nhx7Kp013rNx119Z5XXJJNG/85S+1leX446MvzQMP1LZ8ORqZUUQyTZ6cb0f/xS/Kp1240P0f/4gL\n7IgR+ZPiKqtUtq70BbQ9TnaVeuedGPwmPajNKafEhaq4Ovj99wsHYoJ4IuDEE+P/++5b2Ixw002L\nP3jR7beXL//o0ZXnddRRhcueemrh/K4ia/s22CCaedwjeJs9u77rXbAgRj/MWv877+TTPvNM/m/p\nySfrW472pkBBRDL99KeVXzj++MdI06NH6xPm+PFtryudPjfUbtq778ZQwu0pPchM7jNwYIxUlyVX\ne5L7lNr+3Gf99fMXi3KfVVeNzoxf/nLhiICQH+I4y+OPZ+dbfFE7//zCZdPt/d/85uLvz46y116t\n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\nRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_errors_per_frame_4DMaja_synthetic(errors, method_name)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.5.3" } }, "nbformat": 4, "nbformat_minor": 1 } ================================================ FILE: evaluation/eos.py ================================================ from functools import lru_cache from pathlib import Path import menpo.io as mio from menpo.shape import ColouredTriMesh THIS_DIR = Path(__file__).parent @lru_cache() def load_eos_low_res_lm_index(): return mio.import_pickle( THIS_DIR / 'eos_landmark_settings.pkl')['ibug_49_index'] @lru_cache() def load_basel_kf_trilist(): return mio.import_pickle(THIS_DIR / 'trilist.pkl') @lru_cache() def load_fw_on_eos_low_res_settings(): d = mio.import_pickle(THIS_DIR / 'fw_on_eos_low_res_settings.pkl') bc_fw_on_eos_low_res = d['bc_fw_on_eos_low_res'] tri_index_fw_on_eos_low_res = d['tri_index_fw_on_eos_low_res'] return bc_fw_on_eos_low_res, tri_index_fw_on_eos_low_res def upsample_eos_low_res_to_fw_no_texture(eos_mesh_low_res): bc_fw_on_eos_low_res, tri_index_fw_on_eos_low_res = load_fw_on_eos_low_res_settings() effective_fw_pc = eos_mesh_low_res.project_barycentric_coordinates( bc_fw_on_eos_low_res, tri_index_fw_on_eos_low_res) effective_fw = ColouredTriMesh(effective_fw_pc.points, trilist=load_basel_kf_trilist()) return effective_fw ================================================ FILE: evaluation/kfeval.py ================================================ # Extract key landmarks and build a per-vertex inclusion mask # (as we only want to evaluate on the inner region of the face) import numpy as np from menpo.landmark import face_ibug_49_to_face_ibug_49 from menpo.shape import PointCloud from menpo.transform import AlignmentSimilarity from menpo3d.vtkutils import VTKClosestPointLocator, trimesh_to_vtk def landmark_and_mask_gt_mesh(gt_mesh, distance=1): gt_mesh.landmarks['ibug49'] = face_ibug_49_to_face_ibug_49( gt_mesh.landmarks['ibug49']) gt_mesh.landmarks['nosetip'] = PointCloud( gt_mesh.landmarks['ibug49'].get_label('nose').points[-5][None, :]) gt_mesh.landmarks['eye_corners'] = PointCloud( gt_mesh.landmarks['ibug49'].points[[36 - 17, 45 - 17]]) eval_mask = gt_mesh.distance_to( gt_mesh.landmarks['nosetip']).ravel() < distance return gt_mesh, eval_mask # Dense procrustes align before we compute any error def align_dense_fit_to_gt(fit_3d, gt_mesh): return AlignmentSimilarity(fit_3d, gt_mesh).apply(fit_3d) def calculate_dense_error(fit_3d_aligned, gt_mesh): fit_vtk = trimesh_to_vtk(fit_3d_aligned) closest_points_on_fit = VTKClosestPointLocator(fit_vtk) # for each vertex on the ground truth, find the nearest distance # to the aligned fit. nearest_points, tri_indices = closest_points_on_fit(gt_mesh.points) err_per_vertex = np.sqrt(np.sum((nearest_points - gt_mesh.points) ** 2, axis=1)) # normalize by inter-oc b, a = gt_mesh.landmarks['eye_corners'].points inter_occ_distance = np.sqrt(((a - b) ** 2).sum()) # print('norm: {}'.format(inter_occ_distance)) return err_per_vertex / inter_occ_distance def mask_align_and_calculate_dense_error(fit_3d, gt_mesh, mask): fit_3d_masked = fit_3d.from_mask(mask) gt_mesh_masked = gt_mesh.from_mask(mask) fit_3d_masked_aligned = align_dense_fit_to_gt( fit_3d_masked, gt_mesh_masked ) return (calculate_dense_error(fit_3d_masked_aligned, gt_mesh_masked), fit_3d_masked_aligned, gt_mesh_masked) ================================================ FILE: itwmm/__init__.py ================================================ from .base import instance_for_params from .fitting import (fit_image, fit_video, initialize_camera_from_params, initialize_camera) from .model import generate_texture_model_from_image_3d_fits from .visualize import (render_initialization, render_iteration, render_overlay_of_mesh_in_img) ================================================ FILE: itwmm/base.py ================================================ import numpy as np from menpo.base import copy_landmarks_and_path from menpo.shape import ColouredTriMesh def as_colouredtrimesh(self, colours=None, copy=True): """ Converts this to a :map:`ColouredTriMesh`. Parameters ---------- colours : ``(N, 3)`` `ndarray`, optional The floating point RGB colour per vertex. If not given, grey will be assigned to each vertex. copy : `bool`, optional If ``True``, the graph will be a copy. Returns ------- coloured : :map:`ColouredTriMesh` A version of this mesh with per-vertex colour assigned. """ ctm = ColouredTriMesh(self.points, trilist=self.trilist, colours=colours, copy=copy) return copy_landmarks_and_path(self, ctm) def instance_for_params(mm, id_ind, exp_ind, template_camera, p, q, c): shape_params = np.zeros(mm.shape_model.n_active_components) shape_params[id_ind] = p shape_params[exp_ind] = q instance = mm.shape_model.instance(shape_params, normalized_weights=True) camera = template_camera.from_vector(c) instance_in_img = camera.apply(instance) return { 'instance': instance, 'instance_in_img': instance_in_img, 'camera': camera } ================================================ FILE: itwmm/fitting/__init__.py ================================================ from .initialization import initialize_camera_from_params, initialize_camera from .algorithm import ( fit_image, fit_video ) ================================================ FILE: itwmm/fitting/algorithm.py ================================================ from collections import defaultdict from datetime import timedelta from time import time import numpy as np from scipy import sparse as sp from menpo.visualize import bytes_str, print_progress from .base import gradient_xy, camera_parameters_update from .hessian import (initialize_hessian_and_JTe, insert_frame_to_H, insert_frame_to_JTe) from .jacobian import jacobians def increment_parameters(images, mm, id_indices, exp_indices, template_camera, p, qs, cs, c_f=1, c_l=1, c_id=1, c_exp=1, c_sm=1, lm_group=None, n_samples=1000, compute_costs=True): n_frames = len(images) n_points = mm.shape_model.template_instance.n_points n_p = len(id_indices) n_q = len(exp_indices) n_c = cs.shape[1] - 2 # sub one for quaternion, one for focal length print('Precomputing....') # Rescale shape components to have size: # n_points x (n_components * n_dims) # and to be scaled by the relevant standard deviation. shape_pc = ( mm.shape_model.components.T * np.sqrt(mm.shape_model.eigenvalues) ).reshape([n_points, -1]) # include std.dev in principal components shape_pc_lms = shape_pc.reshape([n_points, 3, -1])[mm.model_landmarks_index] print('Initializing Hessian/JTe for frame...') H, JTe = initialize_hessian_and_JTe(c_id, c_exp, c_sm, n_p, n_q, n_c, p, qs, n_frames) print('H: {} ({})'.format(H.shape, bytes_str(H.nbytes))) if compute_costs: costs = defaultdict(list) for (f, image), c, q in zip(enumerate(print_progress( images, prefix='Incrementing H/JTe')), cs, qs): # Form the overall shape parameter: [p, q] s = np.zeros(mm.shape_model.n_active_components) s[id_indices] = p s[exp_indices] = q # In our error we consider landmarks stored [x, y] - so flip here. lms_points_xy = image.landmarks[lm_group].points[:, [1, 0]] # Compute input image gradient grad_x, grad_y = gradient_xy(image) j = jacobians(s, c, image, lms_points_xy, mm, id_indices, exp_indices, template_camera, grad_x, grad_y, shape_pc, shape_pc_lms, n_samples, compute_costs=compute_costs) insert_frame_to_H(H, j, f, n_p, n_q, n_c, c_f, c_l, n_frames) insert_frame_to_JTe(JTe, j, f, n_p, n_q, n_c, c_f, c_l, n_frames) if compute_costs: for cost, val in j['costs'].items(): costs[cost].append(val) print('Converting Hessian to sparse format') H = sp.csr_matrix(H) print("Sparsity (prop. 0's) of H: {:.2%}".format( 1 - (H.count_nonzero() / np.prod(np.array(H.shape))))) print('Solving for parameter update') d = sp.linalg.spsolve(H, JTe) dp = d[:n_p] dqs = d[n_p:(n_p + (n_frames * n_q))].reshape([n_frames, n_q]) dcs = d[-(n_frames * n_c):].reshape([n_frames, n_c]) # Add the focal length and degenerate quaternion parameters back on as # null delta updates dcs = np.hstack([np.tile(np.array([0, 1]), (n_frames, 1)), dcs]) new_p = p + dp new_qs = qs + dqs new_cs = np.array([camera_parameters_update(c, dc) for c, dc in zip(cs, dcs)]) params = { 'p': new_p, 'qs': new_qs, 'cs': new_cs, 'dp': dp, 'dqs': dqs, 'dcs': dcs, } if compute_costs: c = {k: np.array(v) for k, v in costs.items()} err_s_id = (p ** 2).sum() err_s_exp = (qs ** 2).sum() err_sm = ((qs[:-2] - 2 * qs[1:-1] + qs[2:]) ** 2).sum() err_f_tot = c['err_f'].sum() * c_f / (n_c * n_samples) err_l_tot = c['err_l'].sum() total_energy = (err_f_tot + c_l * err_l_tot + c_id * err_s_id + c_exp * err_s_exp + c_sm * err_sm) c['total_energy'] = total_energy c['err_s_id'] = (c_id, err_s_id) c['err_s_exp'] = (c_exp, err_s_exp) c['err_sm'] = (c_sm, err_sm) c['err_f_tot'] = err_f_tot c['err_l_tot'] = (c_l, err_l_tot) print_cost_dict(c) params['costs'] = c return params def fit_video(images, mm, id_indices, exp_indices, template_camera, p, qs, cs, c_f=1, c_l=1, c_id=1, c_exp=1, c_sm=1, lm_group=None, n_samples=1000, n_iters=10, compute_costs=True): params = [ { "p": p, "qs": qs, "cs": cs }] for i in range(1, n_iters + 1): print('{} / {}'.format(i, n_iters)) # retrieve the last used parameters and pass them into the increment l = params[-1] t1 = time() incs = increment_parameters(images, mm, id_indices, exp_indices, template_camera, l['p'], l['qs'], l['cs'], c_f=c_f, c_l=c_l, c_id=c_id, c_exp=c_exp, c_sm=c_sm, lm_group=lm_group, n_samples=n_samples, compute_costs=compute_costs) # update the parameter list params.append(incs) # And report the time taken for the iteration. dt = int(time() - t1) print('Iteration {} complete in {}\n'.format(i, timedelta(seconds=dt))) return params def fit_image(image, mm, id_indices, exp_indices, template_camera, p, q, c, c_f=1, c_l=1, c_id=1, c_exp=1, lm_group=None, n_samples=1000, n_iters=10, compute_costs=True): # fit image is the same as fit_video, just for a single length video. return fit_video( [image], mm, id_indices, exp_indices, template_camera, p, q[None, :], c[None, :], c_f=c_f, c_l=c_l, c_id=c_id, c_exp=c_exp, c_sm=0, lm_group=lm_group, n_samples=n_samples, n_iters=n_iters, compute_costs=compute_costs ) def print_single_cost(k, c, tot): if isinstance(c, tuple): key = '{:03.0%} | {:>12}'.format((c[0] * c[1]) / tot, k) val = '{:>12.2f} x {:>12.2f} = {:.2f}'.format(c[0], c[1], c[0] * c[1]) else: key = '{:03.0%} | {:>12}'.format(c / tot, k) val = '{:.2f}'.format(c) print('{:>20}: {}'.format(key, val)) def print_cost_dict(d): print('------------------------------------------------------------------') print_single_cost('total_energy', d['total_energy'], d['total_energy']) print('------------------------------------------------------------------') for k in ['err_f_tot', 'err_l_tot', 'err_s_id', 'err_s_exp', 'err_sm']: print_single_cost(k, d[k], d['total_energy']) print('------------------------------------------------------------------') for k in ['err_f', 'err_l']: print('{} (median over frames): {:.2f}'.format(k, np.median(d[k]))) print('------------------------------------------------------------------') ================================================ FILE: itwmm/fitting/base.py ================================================ import numpy as np from menpo.feature import gradient as fast_gradient from menpo.image import Image from menpo3d.rasterize import rasterize_barycentric_coordinates def camera_parameters_update(c, dc): # Add for focal length and translation parameters, but multiply for # quaternions # supress focal length optimisation dc[0] = 0 # Always lock the first quaternion value to 1 dc[1] = 1 new = c + dc new[1:5] = quaternion_multiply(c[1:5], dc[1:5]) return new def quaternion_multiply(current_q, increment_q): # Make sure that the q increment has unit norm increment_q /= np.linalg.norm(increment_q) # Update w0, x0, y0, z0 = current_q w1, x1, y1, z1 = increment_q return np.array([-x1*x0 - y1*y0 - z1*z0 + w1*w0, x1*w0 + y1*z0 - z1*y0 + w1*x0, -x1*z0 + y1*w0 + z1*x0 + w1*y0, x1*y0 - y1*x0 + z1*w0 + w1*z0], dtype=np.float64) def gradient_xy(image): # Compute the gradient of the image grad = fast_gradient(image) # Slice off the gradient for X and Y separately grad_y = Image(grad.pixels[:image.n_channels]) grad_x = Image(grad.pixels[image.n_channels:]) return grad_x, grad_y def sample_at_bc_vi(x, bcoords, vertex_indices): per_vertex_per_pixel = x[vertex_indices] return np.sum(per_vertex_per_pixel * bcoords[..., None], axis=1) def visible_sample_points(instance_in_img, image_shape, n_samples): # Inverse rendering yx, bcoords, tri_indices = rasterize_barycentric_coordinates( instance_in_img, image_shape) # Select triangles randomly rand = np.random.permutation(bcoords.shape[0]) bcoords = bcoords[rand[:n_samples]] yx = yx[rand[:n_samples]] tri_indices = tri_indices[rand[:n_samples]] # Build the vertex indices (3 per pixel) for the visible triangles vertex_indices = instance_in_img.trilist[tri_indices] return vertex_indices, bcoords, tri_indices, yx ================================================ FILE: itwmm/fitting/derivatives.py ================================================ import numpy as np from menpo3d.camera import PerspectiveCamera, OrthographicCamera def d_perspective_camera_d_shape_parameters(shape_pc_uv, warped_uv, camera): """ Calculates the derivative of the perspective projection with respect to the shape parameters. Parameters ---------- shape_pc_uv : ``(n_points, 3, n_parameters)`` `ndarray` The (sampled) basis of the shape model. warped_uv : ``(n_points, 3)`` `ndarray` The shape instance with the view transform (rotation and translation) applied on it. camera : `menpo3d.camera.PerspectiveCamera` The camera object that is responsible of projecting the model to the image plane. Returns ------- dw_da : ``(2, n_shape_parameters, n_points)`` `ndarray` The derivative of the perspective camera transform with respect to the shape parameters. """ n_points, n_dims, n_parameters = shape_pc_uv.shape assert n_dims == 3 # Compute constant # (focal length divided by squared Z dimension of warped shape) z_inv = 1 / warped_uv[:, 2] # 3 x n_c x n_samples dw_da = camera.rotation_transform.apply(shape_pc_uv.transpose(0, 2, 1)).T dw_da[:2] -= warped_uv[:, :2].T[:, None] * dw_da[2] * z_inv return camera.projection_transform.focal_length * dw_da[:2] * z_inv def d_orthographic_camera_d_shape_parameters(shape_pc_uv, camera): """ Calculates the derivative of the orthographic projection with respect to the shape parameters. Parameters ---------- shape_pc_uv : ``(n_points, 3, n_parameters)`` `ndarray` The (sampled) basis of the shape model. camera : `menpo3d.camera.OrthographicCamera` The camera object that is responsible of projecting the model to the image plane. Returns ------- dw_da : ``(2, n_shape_parameters, n_points)`` `ndarray` The derivative of the perspective camera transform with respect to the shape parameters. """ n_points, n_dims, n_parameters = shape_pc_uv.shape assert n_dims == 3 # n_dims, n_parameters, n_points dp_da_uv = camera.rotation_transform.apply(shape_pc_uv.transpose(0, 2, 1)).T return camera.projection_transform.focal_length * dp_da_uv[:2] def d_camera_d_shape_parameters(camera, warped_uv, shape_pc_uv): if camera.__class__ == PerspectiveCamera: dp_da = d_perspective_camera_d_shape_parameters(shape_pc_uv, warped_uv, camera) elif camera.__class__ == OrthographicCamera: dp_da = d_orthographic_camera_d_shape_parameters(shape_pc_uv, camera) else: raise ValueError("Camera must be either Perspective or " "Orthographic.") return dp_da def d_perspective_camera_d_camera_parameters(warped_uv, camera, with_focal_length=True, with_first_quaternion=False): """ Calculates the derivative of the perspective projection with respect to the camera parameters. Parameters ---------- warped_uv : ``(n_points, 3)`` `ndarray` The shape instance with the view transform (rotation and translation) applied on it. camera : `menpo3d.camera.PerspectiveCamera` The camera object that is responsible of projecting the model to the image plane. with_focal_length : `bool`, optional If ``False``, then the derivative with respect to the focal length parameter won't be returned. with_first_quaternion : `bool`, optional If ``False``, then the derivative with respect to the first quaternion parameter won't be returned. Returns ------- dw_dr : ``(2, n_parameters, n_points)`` `ndarray` The derivative of the perspective camera transform with respect to the camera parameters. """ n_points, n_dims = warped_uv.shape assert n_dims == 3 # Find total number of parameters n_parameters = camera.n_parameters if not with_focal_length: n_parameters -= 1 if not with_first_quaternion: n_parameters -= 1 # Initialize derivative dw_dr = np.zeros((2, n_parameters, n_points)) # Initialize parameter counter r = 0 # Get z-component of warped z = warped_uv[:, 2] # Focal length, if requested if with_focal_length: dw_dr[:, r] = (warped_uv[:, :2] / z[..., None]).T r += 1 # Quaternions centered_warped_uv = camera.translation_transform.pseudoinverse().apply( warped_uv).T # q_1, if requested if with_first_quaternion: r0 = 2 * np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]).dot(centered_warped_uv).T dw_dr[:, r] = r0[:, :2].T - r0[:, 2] * warped_uv[:, :2].T / z r += 1 # q_2 r1 = 2 * np.array([[0, 0, 0], [0, 0, -1], [0, 1, 0]]).dot(centered_warped_uv).T dw_dr[:, r] = r1[:, :2].T - r1[:, 2] * warped_uv[:, :2].T / z r += 1 # q_3 r2 = 2 * np.array([[ 0, 0, 1], [ 0, 0, 0], [-1, 0, 0]]).dot(centered_warped_uv).T dw_dr[:, r] = r2[:, :2].T - r2[:, 2] * warped_uv[:, :2].T / z r += 1 # q_4 r3 = 2 * np.array([[0, -1, 0], [1, 0, 0], [0, 0, 0]]).dot(centered_warped_uv).T dw_dr[:, r] = r3[:, :2].T - r3[:, 2] * warped_uv[:, :2].T / z r += 1 # constant multiplication i1 = 1 if with_focal_length else 0 i2 = i1 + 4 if with_first_quaternion else i1 + 3 dw_dr[:, i1:i2] *= camera.projection_transform.focal_length / z # Translations # t_x dw_dr[0, r] = camera.projection_transform.focal_length / z r += 1 # t_y dw_dr[1, r] = camera.projection_transform.focal_length / z r += 1 # t_z dw_dr[:, r] = (- camera.projection_transform.focal_length * warped_uv[:, :2] / z[..., None] ** 2).T return dw_dr def d_orthographic_camera_d_camera_parameters(warped_uv, camera, with_focal_length=True, with_first_quaternion=False): """ Calculates the derivative of the orthographic projection with respect to the camera parameters. Parameters ---------- warped_uv : ``(n_points, 3)`` `ndarray` The shape instance with the view transform (rotation and translation) applied on it. camera : `menpo3d.camera.PerspectiveCamera` The camera object that is responsible of projecting the model to the image plane. with_focal_length : `bool`, optional If ``False``, then the derivative with respect to the focal length parameter won't be returned. with_first_quaternion : `bool`, optional If ``False``, then the derivative with respect to the first quaternion parameter won't be returned. Returns ------- dw_dr : ``(2, n_parameters, n_points)`` `ndarray` The derivative of the orthographic camera transform with respect to the camera parameters. """ n_points, n_dims = warped_uv.shape assert n_dims == 3 # Find total number of parameters n_parameters = camera.n_parameters if not with_focal_length: n_parameters -= 1 if not with_first_quaternion: n_parameters -= 1 # Initialize derivative dw_dr = np.zeros((2, n_parameters, n_points)) # Initialize parameter counter r = 0 # Focal length, if requested if with_focal_length: dw_dr[:, r] = warped_uv[:, :2].T r += 1 # Quaternions centered_warped_uv = camera.translation_transform.pseudoinverse().apply( warped_uv).T # q_1, if requested if with_first_quaternion: r0 = 2 * np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]]).dot(centered_warped_uv).T dw_dr[:, r] = camera.projection_transform.focal_length * r0[:, :2].T r += 1 # q_2 r1 = 2 * np.array([[0, 0, 0], [0, 0, -1], [0, 1, 0]]).dot(centered_warped_uv).T dw_dr[:, r] = camera.projection_transform.focal_length * r1[:, :2].T r += 1 # q_3 r2 = 2 * np.array([[ 0, 0, 1], [ 0, 0, 0], [-1, 0, 0]]).dot(centered_warped_uv).T dw_dr[:, r] = camera.projection_transform.focal_length * r2[:, :2].T r += 1 # q_4 r3 = 2 * np.array([[0, -1, 0], [1, 0, 0], [0, 0, 0]]).dot(centered_warped_uv).T dw_dr[:, r] = camera.projection_transform.focal_length * r3[:, :2].T r += 1 # Translations # t_x dw_dr[0, r] = camera.projection_transform.focal_length r += 1 # t_y dw_dr[1, r] = camera.projection_transform.focal_length r += 1 return dw_dr def d_camera_d_camera_parameters(camera, warped_uv, with_focal_length): if camera.__class__ == PerspectiveCamera: dp_dr = d_perspective_camera_d_camera_parameters( warped_uv, camera, with_focal_length=with_focal_length, with_first_quaternion=False) elif camera.__class__ == OrthographicCamera: dp_dr = d_orthographic_camera_d_camera_parameters( warped_uv, camera, with_focal_length=with_focal_length, with_first_quaternion=False) else: raise ValueError("Camera must be either Perspective or " "Orthographic.") return dp_dr ================================================ FILE: itwmm/fitting/hessian.py ================================================ import numpy as np def smoothing_kernel(n_frames): A = np.eye(n_frames - 2, n_frames) i, j = np.diag_indices(n_frames - 2) A[i, j + 1] = -2 A[i, j + 2] = 1 return A # -------------------------- HESSIAN INITIALIZATION ------------------------- # # Functions needed to construct the per-iteration ITW-V video Hessian object. def insert_id_constraint(H, c_id, n_p): H_id = H[:n_p, :n_p] np.fill_diagonal(H_id, np.diag(H_id) + c_id) def insert_exp_constraint(H, c_exp, n_p, n_q, n_frames): i_offset = n_p j_offset = n_p size = n_q * n_frames exp_const = np.diag(np.repeat(c_exp, size)) H[i_offset:i_offset + size, j_offset:j_offset + size] = exp_const def insert_smoothness_constraint(H, c_sm, n_p, n_q, n_frames): s = smoothing_kernel(n_frames) s_h = s.T.dot(s) B = np.eye(n_q) * c_sm smoothing = np.kron(s_h, B) H[n_p:(n_p + n_q * n_frames), n_p:(n_p + n_q * n_frames)] += smoothing # ----------------------- J.T.dot(e) INITIALIZATION ------------------------- # def insert_id_constraint_to_JTe(JTe, p, c_id, n_p): JTe[:n_p] += -c_id * p def insert_exp_constraint_to_JTe(JTe, qs, c_exp, n_p, n_q, n_frames): size = n_q * n_frames JTe[n_p:n_p + size] += - c_exp * qs.ravel() def insert_smoothness_constraint_to_JTe(JTe, qs, c_sm, n_p, n_q, n_frames): s = smoothing_kernel(n_frames) # Analytically we can observe that the pattern of selection of terms in # JTe for the smoothing is the 2nd order central difference scheme formed # in the Hessian (s.T.dot(s)) - form this matrix here to select the qs as # we want s_h = s.T.dot(s) # n_frames x n_frames @ n_frames x n_q = n_frames x n_q # ravelling this back preserves per-frame ordering of q in JTe. JTe_smoothing = s_h.dot(qs).ravel() JTe[n_p:n_p + n_frames * n_q] += - c_sm * JTe_smoothing # -------------------------- TOTAL INITIALIZATION ---------------------------- # def initialize_hessian_and_JTe(c_id, c_exp, c_sm, n_p, n_q, n_c, p, qs, n_frames): n = n_p + n_frames * n_q + n_frames * n_c H = np.zeros((n, n)) insert_id_constraint(H, c_id, n_p) insert_exp_constraint(H, c_exp, n_p, n_q, n_frames) if n_frames >= 3: insert_smoothness_constraint(H, c_sm, n_p, n_q, n_frames) else: print('This video has only {} frames, cannot include smoothing term ' 'in H/JTe.' .format(n_frames)) # The J.T.dot(e) term is always the size of the Hessian w/h (n total params) JTe = np.zeros(n) insert_id_constraint_to_JTe(JTe, p, c_id, n_p) insert_exp_constraint_to_JTe(JTe, qs, c_exp, n_p, n_q, n_frames) if n_frames >= 3: insert_smoothness_constraint_to_JTe(JTe, qs, c_sm, n_p, n_q, n_frames) return H, JTe # -------------------------- PER-FRAME UPDATES ------------------------------ # def insert_frame_to_H(H, j, f, n_p, n_q, n_c, c_f, c_l, n_frames): # normalize data term contributions by n_channels x n_pixels # otherwise scales of all other constants need to be n_channels x n_pixels # to compensate c_f = c_f / j['J_f_p'].shape[0] pp = c_f * j['J_f_p'].T @ j['J_f_p'] + c_l * j['J_l_p'].T @ j['J_l_p'] qq = c_f * j['J_f_q'].T @ j['J_f_q'] + c_l * j['J_l_q'].T @ j['J_l_q'] cc = c_f * j['J_f_c'].T @ j['J_f_c'] + c_l * j['J_l_c'].T @ j['J_l_c'] pq = c_f * j['J_f_p'].T @ j['J_f_q'] + c_l * j['J_l_p'].T @ j['J_l_q'] pc = c_f * j['J_f_p'].T @ j['J_f_c'] + c_l * j['J_l_p'].T @ j['J_l_c'] qc = c_f * j['J_f_q'].T @ j['J_f_c'] + c_l * j['J_l_q'].T @ j['J_l_c'] # Find the right offset into the Hessian for Q/C (which are per-frame # terms). Note that p terms always sum, so no per-frame offset needed. offset_q = n_p + f * n_q offset_c = n_p + n_frames * n_q + f * n_c # 1. Update the terms along the block diagonal of the Hessian H[:n_p, :n_p] += pp H[offset_q:offset_q + n_q, offset_q:offset_q + n_q] += qq H[offset_c:offset_c + n_c, offset_c:offset_c + n_c] += cc # 2. Update terms at the off diagonal. Each time we can immediately fill # in the symmetric part of the term (as we know the Hessian is symmetric). H[:n_p, offset_q:offset_q + n_q] += pq H[offset_q:offset_q + n_q, :n_p] += pq.T H[:n_p, offset_c:offset_c + n_c] += pc H[offset_c:offset_c + n_c, :n_p] += pc.T H[offset_q:offset_q + n_q, offset_c:offset_c + n_c] += qc H[offset_c:offset_c + n_c, offset_q:offset_q + n_q] += qc.T def insert_frame_to_JTe(JTe, j, f, n_p, n_q, n_c, c_f, c_l, n_frames): # normalize data term contributions by n_channels x n_pixels # otherwise scales of all other constants need to be n_channels x n_pixels # to compensate c_f = c_f / j['J_f_p'].shape[0] JTe_p = c_f * j['J_f_p'].T @ j['e_f'] + c_l * j['J_l_p'].T @ j['e_l'] JTe_q = c_f * j['J_f_q'].T @ j['e_f'] + c_l * j['J_l_q'].T @ j['e_l'] JTe_c = c_f * j['J_f_c'].T @ j['e_f'] + c_l * j['J_l_c'].T @ j['e_l'] JTe[:n_p] += JTe_p offset_q = n_p + f * n_q JTe[offset_q:offset_q + n_q] += JTe_q offset_c = n_p + n_frames * n_q + f * n_c JTe[offset_c:offset_c + n_c] += JTe_c ================================================ FILE: itwmm/fitting/initialization.py ================================================ import numpy as np from menpo.shape import PointCloud from menpo3d.camera import PerspectiveCamera def initialize_camera(image, lms_3d, focal_length=None): return PerspectiveCamera.init_from_2d_projected_shape( lms_3d, image.landmarks[None], image.shape, focal_length=focal_length) def initialize_camera_from_params(image, mm, id_ind, exp_ind, p, q, focal_length=None): shape_params = np.zeros(mm.shape_model.n_active_components) shape_params[id_ind] = p shape_params[exp_ind] = q mesh = mm.shape_model.instance(shape_params, normalized_weights=True) lms = PointCloud(mesh.points[mm.model_landmarks_index]) return initialize_camera(image, lms, focal_length=focal_length) ================================================ FILE: itwmm/fitting/jacobian.py ================================================ import numpy as np from .derivatives import (d_camera_d_shape_parameters, d_camera_d_camera_parameters) from .projectout import project_out, sample_uv_terms def J_data(camera, warped_uv, shape_pc_uv, U_tex_pc, grad_x_uv, grad_y_uv, focal_length_update=False): # Compute derivative of camera wrt shape and camera parameters dp_da_dr = d_camera_d_shape_parameters(camera, warped_uv, shape_pc_uv) dp_dr = d_camera_d_camera_parameters( camera, warped_uv, with_focal_length=focal_length_update) # stack the shape_parameters/camera_parameters updates dp_da_dr = np.hstack((dp_da_dr, dp_dr)) # Multiply image gradient with camera derivative permuted_grad_x = np.transpose(grad_x_uv[..., None], (0, 2, 1)) permuted_grad_y = np.transpose(grad_y_uv[..., None], (0, 2, 1)) J = permuted_grad_x * dp_da_dr[0] + permuted_grad_y * dp_da_dr[1] # Project-out n_params = J.shape[1] J = np.transpose(J, (1, 0, 2)).reshape(n_params, -1) return project_out(J, U_tex_pc) def J_lms(camera, warped_uv, shape_pc_uv, focal_length_update=False): # Compute derivative of camera wrt shape and camera parameters J = d_camera_d_shape_parameters(camera, warped_uv, shape_pc_uv) dp_dr = d_camera_d_camera_parameters( camera, warped_uv, with_focal_length=focal_length_update) J = np.hstack((J, dp_dr)) # Reshape to : n_params x (2 * N) n_params = J.shape[1] J = np.transpose(J, (1, 0, 2)).reshape(n_params, -1) return J def jacobians(s, c, image, lms_points_xy, mm, id_ind, exp_ind, template_camera, grad_x, grad_y, shape_pc, shape_pc_lms, n_samples, compute_costs=False): instance = mm.shape_model.instance(s, normalized_weights=True) camera = template_camera.from_vector(c) (instance_w, instance_in_image, warped_uv, img_error_uv, shape_pc_uv, U_tex_pc, grad_x_uv, grad_y_uv ) = sample_uv_terms(instance, image, camera, mm, shape_pc, grad_x, grad_y, n_samples) # Data term Jacobian JT = J_data(camera, warped_uv, shape_pc_uv, U_tex_pc, grad_x_uv, grad_y_uv) # Landmarks term Jacobian # Get projected instance on landmarks and error term warped_lms = instance_in_image.points[mm.model_landmarks_index] lms_error_xy = (lms_points_xy - warped_lms[:, [1, 0]]).T.ravel() warped_view_lms = instance_w[mm.model_landmarks_index] J_lT = J_lms(camera, warped_view_lms, shape_pc_lms) # form the main two Jacobians... J_f = JT.T J_l = J_lT.T # ...and then slice at the appropriate indices to break down by param type. c_offset = id_ind.shape[0] + exp_ind.shape[0] jacs = { 'J_f_p': J_f[:, id_ind], 'J_f_q': J_f[:, exp_ind], 'J_f_c': J_f[:, c_offset:], 'J_l_p': J_l[:, id_ind], 'J_l_q': J_l[:, exp_ind], 'J_l_c': J_l[:, c_offset:], 'e_f': img_error_uv, 'e_l': lms_error_xy } if compute_costs: resid_f = project_out(img_error_uv, U_tex_pc) err_f = (resid_f ** 2).sum() resid_l = lms_error_xy err_l = (resid_l ** 2).sum() jacs['costs'] = { 'err_f': err_f, 'err_l': err_l } return jacs ================================================ FILE: itwmm/fitting/projectout.py ================================================ import numpy as np from .base import sample_at_bc_vi, visible_sample_points def project_out(J, U, fast_approx=True): tmp = J.dot(U.T if fast_approx else np.linalg.pinv(U)) return J - tmp.dot(U) def sample_uv_terms(instance, image, camera, mm, shape_pc, grad_x, grad_y, n_samples): # subsample all the terms we need to compute a project out update. # Apply camera projection on current instance instance_in_image = camera.apply(instance) # Compute indices locations for sampling (vert_indices, bcoords, tri_indices, yx) = visible_sample_points(instance_in_image, image.shape, n_samples) # Warp the mesh with the view matrix (rotation + translation) instance_w = camera.view_transform.apply(instance.points) # Sample all the terms from the model part at the sample locations warped_uv = sample_at_bc_vi(instance_w, bcoords, vert_indices) # n_samples x n_channels x n_texture_comps U_tex_uv = mm.sample_texture_model(bcoords, tri_indices) # n_texture_comps x (n_samples * n_channels) U_tex_uv = U_tex_uv.reshape((-1, U_tex_uv.shape[-1])).T # n_channels x n_samples m_texture_uv = mm.instance().sample_texture_with_barycentric_coordinates( bcoords, tri_indices).T # n_samples x 3 x n_shape_components shape_pc_uv = (sample_at_bc_vi(shape_pc, bcoords, vert_indices) .reshape([n_samples, 3, -1])) # Sample all the terms from the image part at the sample locations # img_uv: (channels, samples) img_uv = image.sample(yx) grad_x_uv = grad_x.sample(yx) grad_y_uv = grad_y.sample(yx) # Compute error # img_error_uv: (channels x samples,) img_error_uv = (m_texture_uv - img_uv).ravel() return (instance_w, instance_in_image, warped_uv, img_error_uv, shape_pc_uv, U_tex_uv, grad_x_uv, grad_y_uv) ================================================ FILE: itwmm/model/__init__.py ================================================ import numpy as np from menpo.model import PCAVectorModel from menpo.visualize import print_progress from itwmm.base import instance_for_params from .extractimage import extract_per_vertex_colour_with_occlusion from .math import rpca_missing def generate_texture_model_from_itwmm(images, mm, id_ind, exp_ind, template_camera, p, qs, cs, lambda_=0.01, n_components=0.99): r"""Build a new texture model from an existing model and fitting information to a collection of images.""" n_channels = images[0].n_channels n_features = n_channels * mm.n_vertices n_samples = len(images) X = np.empty((n_samples, n_features), dtype=mm.texture_model.mean().dtype) M = np.empty_like(X, dtype=np.bool) proportion_masked = [] for i, (img, q, c) in enumerate(zip(print_progress(images, 'Extracting ' 'masks and ' 'features'), qs, cs)): i_in_img = instance_for_params(mm, id_ind, exp_ind, template_camera, p, q, c)['instance_in_img'] features, mask = extract_per_vertex_colour_with_occlusion(i_in_img, img) mask_repeated = np.repeat(mask.ravel(), n_channels) X[i] = features.ravel() M[i] = mask_repeated.ravel() proportion_masked.append(mask.sum() / mask.shape[0]) print('Extraction concluded. Self-occlusions on average masked {:.0%} of ' 'vertices.'.format(np.array(proportion_masked).mean())) print('Performing R-PCA to complete missing textures') A, E = rpca_missing(X, M, verbose=True, lambda_=lambda_) print('R-PCA completed. Building PCA model of features on completed ' 'samples.') model = PCAVectorModel(A, inplace=True) print('Trimming the components to retain only what was required.') model.trim_components(n_components=n_components) return model, X, M def generate_texture_model_from_image_3d_fits(images_and_fits, lambda_=0.01, n_components=0.99): """Build an ITW texture model from a list of images with associated dense 3D fits (one per image). Note that the input images should already have an image feature taken on them, and have all been resized to a consistent scale.""" feat_img, fit_2d = images_and_fits[0] n_channels = feat_img.n_channels n_features = n_channels * fit_2d.n_points n_samples = len(images_and_fits) X = np.empty((n_samples, n_features), dtype=feat_img.pixels.dtype) M = np.empty_like(X, dtype=np.bool) proportion_masked = [] for i, (img, fit_2d) in enumerate(print_progress( images_and_fits, prefix='Extracting masks & features')): features, mask = extract_per_vertex_colour_with_occlusion(fit_2d, img) mask_repeated = np.repeat(mask.ravel(), n_channels) X[i] = features.ravel() M[i] = mask_repeated.ravel() proportion_masked.append(mask.sum() / mask.shape[0]) print('Performing R-PCA to complete missing textures') A, E = rpca_missing(X, M, verbose=True, lambda_=lambda_) print('R-PCA completed. Building PCA model of features on completed ' 'samples.') model = PCAVectorModel(A, inplace=True) print('Trimming the components to retain only what was required.') model.trim_components(n_components=n_components) return model, X, M ================================================ FILE: itwmm/model/extractimage.py ================================================ import numpy as np from menpo.shape import PointCloud from menpo.transform import Scale from menpo3d.rasterize import ( rasterize_shape_image_from_barycentric_coordinate_images, rasterize_barycentric_coordinate_images ) from itwmm.base import as_colouredtrimesh def per_vertex_occlusion(mesh_in_img, err_proportion=0.0001, render_diag=600): [x_r, y_r, z_r] = mesh_in_img.range() av_xy_r = (x_r + y_r) / 2.0 rescale = render_diag / np.sqrt((mesh_in_img.range()[:2] ** 2).sum()) rescale_z = av_xy_r / z_r mesh = Scale([rescale, rescale, rescale * rescale_z]).apply(mesh_in_img) mesh.points[...] = mesh.points - mesh.points.min(axis=0) mesh.points[:, :2] = mesh.points[:, :2] + 2 shape = np.round(mesh.points.max(axis=0)[:2] + 2) bc, ti = rasterize_barycentric_coordinate_images(mesh, shape) si = rasterize_shape_image_from_barycentric_coordinate_images( as_colouredtrimesh(mesh), bc, ti) # err_proportion=0.01 is 1% deviation of total range of 3D shape threshold = render_diag * err_proportion xyz_found = si.as_unmasked().sample(mesh.with_dims([0, 1]), order=1).T err = np.sum((xyz_found - mesh.points) ** 2, axis=1) visible = err < threshold return visible def render_hi_res_shape_image(mesh, render_width=3000): from menpo3d.rasterize import GLRasterizer h, w = mesh.range()[:2] aspect_ratio = w / h height = render_width * aspect_ratio r = GLRasterizer( projection_matrix=model_to_clip_transform(mesh).h_matrix, width=render_width, height=height) return r.model_to_image_transform, r.rasterize_mesh_with_shape_image(mesh)[1] def per_vertex_occlusion_gl_rasterizer(mesh, err_proportion=0.0001, err_norm='z', render_width=3000): # Render a high-resolution shape image for visibility testing # z scale can be very large for high focal lengths. # ensure z is scaled to match x/y for the purposes of masking. print('scaling down ') [x_r, y_r, z_r] = mesh.range() av_xy_r = (x_r + y_r) / 2.0 mesh = Scale([1, 1, av_xy_r / z_r]).apply(mesh) model_to_image_transform, shape_image = render_hi_res_shape_image(mesh, render_width=render_width) # err_proportion=0.01 is 1% deviation of total range of 3D shape err_scale = mesh.range()[2].sum() if err_norm == 'z' else np.sqrt( (mesh.range() ** 2).sum()) threshold = err_scale * err_proportion sample_points_3d = mesh sample_points_2d = model_to_image_transform.apply(sample_points_3d) xyz_found = shape_image.as_unmasked().sample(sample_points_2d, order=1).T err = np.sum((xyz_found - sample_points_3d.points) ** 2, axis=1) return err < threshold def per_vertex_occlusion_accurate(mesh): from menpo3d.vtkutils import trimesh_to_vtk import vtk tol = mesh.mean_edge_length() / 1000 min_, max_ = mesh.bounds() z_min = min_[-1] - 10 z_max = max_[-1] + 10 ray_start = mesh.points.copy() ray_end = mesh.points.copy() points = mesh.points ray_start[:, 2] = z_min ray_end[:, 2] = z_max vtk_mesh = trimesh_to_vtk(mesh) obbTree = vtk.vtkOBBTree() obbTree.SetDataSet(vtk_mesh) obbTree.BuildLocator() vtk_points = vtk.vtkPoints() vtk_cellIds = vtk.vtkIdList() bad_val = tuple(ray_start[0]) first_intersects = [] for start, end, point in zip(ray_start, ray_end, points): start = tuple(start) end = tuple(end) obbTree.IntersectWithLine(start, end, vtk_points, vtk_cellIds) data = vtk_points.GetData() break for start, end, point in zip(ray_start, ray_end, points): start = tuple(start) end = tuple(end) obbTree.IntersectWithLine(start, end, vtk_points, vtk_cellIds) data = vtk_points.GetData() if data.GetNumberOfTuples() > 0: first_intersects.append(data.GetTuple3(0)) else: first_intersects.append(bad_val) visible = np.linalg.norm(points - np.array(first_intersects), axis=1) < tol return visible def extract_per_vertex_colour(mesh, image): return image.sample(PointCloud(mesh.points[:, :2])).T def extract_per_vertex_colour_with_occlusion(mesh, image, err_proportion=0.0001, render_diag=600): colours = extract_per_vertex_colour(mesh, image) mask = per_vertex_occlusion(mesh, err_proportion=err_proportion, render_diag=render_diag) return colours, mask def extract_per_vertex_features(mesh, image, feature_f, diagonal_range=None): image = image.copy() image.landmarks['mesh_2d'] = mesh.with_dims([0, 1]) if diagonal_range is not None: image = image.rescale_landmarks_to_diagonal_range(diagonal_range, group='mesh_2d') feature_image = feature_f(image) return extract_per_vertex_colour(feature_image.landmarks['mesh_2d'], feature_image) ================================================ FILE: itwmm/model/math.py ================================================ from time import time import numpy as np from menpo.visualize import bytes_str def rpca_missing(X, M, lambda_=None, tol=1e-6, max_iter=1000, verbose=False): r""" Robust PCA with Missing Values using the inexact augmented Lagrange multiplier method. Parameters ---------- X : ``(n_samples, n_features)`` `ndarray` Data matrix. M : ``(n_components, n_features)`` `ndarray` of type `np.bool` Mask matrix. For each element, if ``True`` indicates that the corresponding element in ``X`` is meaningful data. If ``False`` the corresponding element in ``X`` is not considered in the calculation. lambda_ : float, optional The weight on sparse error term in the cost function. If ``None``, the heuristic value of ``1 / np.sqrt(n_samples)`` is used. tol : `float`, optional The tolerance for the stopping criterion. max_iter : `float`, optional The maximum allowed number of iterations. verbose : `boolean`, optional If ``True``, details of the progress of the algorithm will be printed every 10 iterations. Returns ------- A : ``(n_samples, n_features)`` `ndarray` Low rank reconstruction E : ``(n_samples, n_features)`` `ndarray` Sparse reconstruction """ m, n = X.shape if verbose: print('X {} of type {}: {}'.format( X.shape, X.dtype, bytes_str(X.nbytes))) # Have to allocate 7 arrays (X, Y, A, E, T, Z, V) all of this size # + 4 in temp computations print('Estimated total memory required: {}'.format(bytes_str(X.nbytes * 11))) t = time() if lambda_ is None: lambda_ = 1. / np.sqrt(m) norm_fro = np.linalg.norm(X, ord='fro') norm_two = np.linalg.norm(X, ord=2) norm_inf = np.linalg.norm(X.ravel(), ord=np.inf) / lambda_ dual_norm_inv = 1.0 / max(norm_two, norm_inf) Y = X * dual_norm_inv A = np.zeros_like(X) notM = ~M mu = 1.25 / norm_two mu_bar = mu * 1e7 rho = 1.5 sv = 10 for i in range(1, max_iter + 1): T = X - A + (1 / mu) * Y E = (np.maximum(T - (lambda_ / mu), 0) + np.minimum(T + (lambda_ / mu), 0)) E = E * M + T * notM U, s, V = np.linalg.svd(X - E + (1 / mu) * Y, full_matrices=False) svp = (s > 1 / mu).sum() sv = min(svp + 1 if svp < sv else svp + round(0.05 * n), n) S_svp = np.diag(s[:svp] - 1 / mu) A = np.dot(U[:, :svp], np.dot(S_svp, V[:svp])) Z = X - A - E Y += mu * Z mu = min(mu * rho, mu_bar) stopping_criterion = np.linalg.norm(Z, ord='fro') / norm_fro if verbose and (time() - t > 1): print('{i:02d} ({time:.1f} sec/iter) r(A): {r_A} |E|_0: {E_0} ' 'criterion/tol: {sc:.0f} '.format( i=i, r_A=np.linalg.matrix_rank(A), time=time() - t, E_0=(np.abs(E) > 0).sum(), sc=stopping_criterion / tol)) t = time() if stopping_criterion < tol: if verbose: print('Converged after {} iterations'.format(i)) break else: if verbose: print('Maximum iterations ({}) reached without ' 'convergence'.format(max_iter)) return A, E ================================================ FILE: itwmm/visualize.py ================================================ import numpy as np from menpo.transform import Scale, UniformScale, Translation from menpo3d.rasterize import rasterize_mesh from itwmm.base import as_colouredtrimesh, instance_for_params def l2_normalize(x, axis=0, epsilon=1e-12): """ Transforms an `ndarray` to have a unit l2 norm along a given direction. ---------- x : `ndarray` The array to be transformed. axis : `int` The axis that will be l2 unit normed. epsilon: `float` A small value such as to avoid division by zero. Returns ------- x : (D,) `ndarray` The transformed array. """ return x / np.maximum(np.linalg.norm(x, axis=axis), epsilon) def mesh_in_unit_sphere(mesh): scale = UniformScale(1 / mesh.norm(), mesh.n_dims) translation = Translation(-scale.apply(mesh).centre()) return translation.compose_after(scale) def lambertian_shading(mesh, diffuse_colour=0.4, albedo_weighting=0.5, ambient_colour=0.3, light_positions=((2, -2, 1), (-2, 2, 1))): diffuse_colour = np.asarray(diffuse_colour) light_positions = l2_normalize(np.asarray(light_positions).reshape(-1, 3), axis=0) unit_transform = mesh_in_unit_sphere(mesh) mesh = unit_transform.apply(mesh) light_directions = l2_normalize(light_positions.reshape(-1, 1, 3) - mesh.points[None, ...], axis=0) # Calculate the lambertian reflectance for each light source. # This will be an `ndarray` of shape(num_light_sources, num_vertices) lambertian = np.sum(light_directions * mesh.vertex_normals()[None, ...], 2)[..., None] # Sum up the contribution of all the light sources and multiply by the # diffusion colour. lambertian = lambertian.sum(0) * diffuse_colour + ambient_colour mesh.colours[...] = np.clip(mesh.colours * albedo_weighting + lambertian * (1 - albedo_weighting), 0, 1) return unit_transform.pseudoinverse().apply(mesh) def render_mesh_in_img(trimesh_3d_in_img, img_shape): [x_r, y_r, z_r] = trimesh_3d_in_img.range() av_xy_r = (x_r + y_r) / 2.0 trimesh_3d_in_img = Scale([1, 1, av_xy_r / z_r]).apply(trimesh_3d_in_img) mesh_in_img_lit = lambertian_shading(as_colouredtrimesh(trimesh_3d_in_img)) return rasterize_mesh(mesh_in_img_lit, img_shape) def render_overlay_of_mesh_in_img(trimesh_3d_in_img, img): mesh_in_img = render_mesh_in_img(trimesh_3d_in_img, img.shape) return overlay_image(img, mesh_in_img.as_greyscale(), (0, 0)) def render_initialization(images, mm, id_indices, exp_indices, template_camera, p, qs, cs, img_index): c_i = cs[img_index] q_i = qs[img_index] i_in_img = instance_for_params(mm, id_indices, exp_indices, template_camera, p, q_i, c_i)['instance_in_img'] [x_r, y_r, z_r] = i_in_img.range() av_xy_r = (x_r + y_r) / 2.0 i_in_img = Scale([1, 1, av_xy_r / z_r]).apply(i_in_img) mesh_in_img_lit = lambertian_shading(as_colouredtrimesh(i_in_img)) return rasterize_mesh(mesh_in_img_lit, images[0].shape).as_unmasked() def render_iteration(mm, id_ind, exp_ind, img_shape, camera, params, img_index, iteration): params_i = params[iteration] c_i = params_i['cs'][img_index] p_i = params_i['p'] q_i = params_i['qs'][img_index] i_in_img = instance_for_params(mm, id_ind, exp_ind, camera, p_i, q_i, c_i)['instance_in_img'] [x_r, y_r, z_r] = i_in_img.range() av_xy_r = (x_r + y_r) / 2.0 i_in_img = Scale([1, 1, av_xy_r / z_r]).apply(i_in_img) mesh_in_img_lit = lambertian_shading(as_colouredtrimesh(i_in_img)) return rasterize_mesh(mesh_in_img_lit, img_shape).as_unmasked() def overlay_image(background, overlay, offset_vector): output = background.copy() indices = overlay.indices() + offset_vector new_mask = np.zeros_like(background.pixels[0], dtype=np.bool) max_ = np.array(background.bounds()[1]) in_img = ~np.logical_or(np.any(indices < 0, axis=1), np.any(indices > max_, axis=1)) new_mask[indices[in_img, 0], indices[in_img, 1]] = True output.pixels[:, new_mask] = overlay.as_vector( keep_channels=True)[:, in_img] return output ================================================ FILE: notebooks/1. Building an "in-the-wild" texture model.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. Building an \"in-the-wild\" texture model\n", "\n", "#### Prerequisites\n", "\n", "A collection of \"in-the-wild\" images with 3D mesh fits.\n", "\n", "The authors of:\n", "\n", "> Zhu, Xiangyu, et al. \"Face alignment across large poses: A 3d solution.\" CVPR 2016\n", "\n", "Provide data [on their website](http://www.cbsr.ia.ac.cn/users/xiangyuzhu/projects/3DDFA/main.htm) which can be used to bootstrap this. As an example, we show loading this data into the format we need to proceed, and then demonstrate building the texture model. The two files this example follows are:\n", "```\n", "300W-3D.zip\n", "300W-3D-Face.zip\n", "```\n", "unzip them next to each other in a folder and replace `DATA_PATH` with the parent folder path. \n", "\n", "If you have your own collection of \"in-the-wild\" images, you can easily replace this first cell with your own loading code - as long as you load each image with a 3D `TriMesh` that menpo visualizes the 2D projection of correctly, you are good. A good sanity check is therefore:\n", "```\n", "%matplotlib inline\n", "img.view()\n", "PointCloud(fit_3d.points[:, :2]).view()\n", "```\n", "You should see that Menpo renders the points of the mesh on the face in the image." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 1. Loading the data\n", "\n", "Firstly we load the data we need in the right format. We need to produce:\n", "\n", "- A list of tuples of `(feature_img, fit_trimesh_3d)`, where\n", " - `feature_img` has already had a dense image feature e.g. `fast_dist` extracted from it\n", " - All instances of `feature_img` are scaled such that the face occupies the same size in each image\n", " - `fit_trimesh_3d` lies directly on the dense feature image - i.e. Y, X are in units of pixels, and Z is of an arbitrary scale (so long as depth is meaningfully conveyed for z-buffering)\n", " - A good test for this last condition is to visualize the mesh using Menpo (see the example below)\n", " \n", "In order to be memory efficient, we choose to construct a `LazyList` rather than a literal `list` here. This means each feature/fit pair is generated from disk on the fly when we access each element, keeping memory usage low." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from functools import lru_cache\n", "from pathlib import Path\n", "import numpy as np\n", "\n", "import scipy.io as sio\n", "import menpo.io as mio\n", "\n", "from menpo.base import LazyList\n", "from menpo.feature import fast_dsift\n", "from menpo.shape import PointCloud, TriMesh\n", "\n", "from itwmm import (render_overlay_of_mesh_in_img, \n", " generate_texture_model_from_image_3d_fits)\n", "\n", "# Replace DATA_PATH with the path to your data. It should have subdirectories:\n", "# 300W-3D/\n", "# 300W-3D-Face/\n", "DATA_PATH = Path('~/Dropbox/itwmm_src_data/').expanduser()\n", "\n", "# The diagonal range of the projected fit\n", "DIAGONAL_RANGE = 180\n", "\n", "# The image feature we wish to employ\n", "FEATURE_F = fast_dsift" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "@lru_cache(1)\n", "def load_trilist():\n", " trilist = sio.loadmat(str(DATA_PATH / '300W-3D' / 'Code' / 'ModelGeneration' / 'model_info.mat'))['tri']\n", " # flip triangle faces and matlab -> Python indexing\n", " return trilist[[1, 0, 2]].T - 1 \n", "\n", "\n", "def convert_raw_3d_fit_to_img_trimesh_fit(raw_3d_fit, img):\n", " img_points_2d = raw_3d_fit[:2][::-1].copy() - 1 # matlab 1 indexing\n", " img_points_2d[0] = img.shape[0] - img_points_2d[0]\n", " # Depth needs to be flipped\n", " img_points_3d = np.vstack([img_points_2d, raw_3d_fit[2] * -1]).T\n", " img_trimesh_3d = TriMesh(img_points_3d, trilist=load_trilist())\n", " return img_trimesh_3d\n", "\n", "\n", "def load_img_and_fit(img_path):\n", " fit_rel_path = img_path.relative_to(DATA_PATH / '300W-3D').with_suffix('.mat')\n", " fit_path = DATA_PATH / '300W-3D-Face' / fit_rel_path\n", "\n", " img = mio.import_image(img_path).as_greyscale()\n", " raw_3d_fit = sio.loadmat(str(fit_path))['Fitted_Face']\n", " fit_trimesh_3d = convert_raw_3d_fit_to_img_trimesh_fit(raw_3d_fit, img)\n", " return img, fit_trimesh_3d\n", "\n", "\n", "def load_data_with_feature_sample(img_path, err_proportion=0.0001):\n", " img, fit_trimesh_3d = load_img_and_fit(img_path)\n", " \n", " # rescale the image to the diagonal range we are using\n", " img.landmarks['fit_2d'] = PointCloud(fit_trimesh_3d.points[:, :2])\n", " img, tr = img.rescale_landmarks_to_diagonal_range(DIAGONAL_RANGE, return_transform=True)\n", " # note that we use the rescaled landmarks here\n", " fit_trimesh_3d.points[:, :2] = img.landmarks['fit_2d'].points\n", " fit_trimesh_3d.points[:, 2] = fit_trimesh_3d.points[:, 2] / tr.scale[0]\n", " # take the feature on the rescaled image\n", " feat = FEATURE_F(img)\n", " return img, feat, fit_trimesh_3d" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "img_paths = list(mio.image_paths(DATA_PATH / '300W-3D' / '**/*'))\n", "print('{} images with fits to read.'.format(len(img_paths)))\n", "\n", "# we can make a LazyList which returns image/feature/fit triples when\n", "# we iterate. This saves us loading everything into memory at once.\n", "imgs_features_and_fits = LazyList.init_from_iterable(img_paths).map(\n", " load_data_with_feature_sample)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "# Let's test one.\n", "img, feat, fit_trimesh_3d = imgs_features_and_fits[100]\n", "\n", "# Visual check that everything looks sensible\n", "img.view()\n", "feat.view(channels=0, new_figure=True)\n", "render_overlay_of_mesh_in_img(fit_trimesh_3d, img).view(new_figure=True)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# the routine to build the ITW texture model only requires \n", "# feat/fit pairs, so we get rid of the redundent images\n", "features_and_fits = imgs_features_and_fits.map(lambda x: x[1:])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Confirm we get the format we need\n", "print(features_and_fits[0])" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "# Building the ITW texture model\n", "\n", "Now we are able to build the texture model. Given data in the right format, this is just a single function call.\n", "\n", "Note however that this process is quite memory intensive. We've done all we can in loading the data lazily, we still need to constract a large data matrix X and a mask matrix, and solve RPCA which has some memory overhead.\n", "\n", "As a rough guide, with the recommended settings here, around 1.8GB of RAM will be required for every 100 images used.\n", "\n", "Feel free to tweak `n_imgs_for_rpca` and choose wheather to use the original 64-bit feature images or 32-bit conversions (which will half RAM requirements).\n", "\n", "Also a deprecation warning will appear in red, but it's only a notice of a future deprecation - this will be addressed in a future release of `menpo3d`." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def as_float32(img):\n", " img = img.copy()\n", " img.pixels = img.pixels.astype(np.float32)\n", " return img\n", "\n", "features_and_fits_32bit = features_and_fits.map(lambda x: (as_float32(x[0]), x[1]))\n", "n_imgs_for_rpca = 100\n", "\n", "itw_texture_model, X, m = generate_texture_model_from_image_3d_fits(features_and_fits_32bit[:n_imgs_for_rpca])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "print(itw_texture_model)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "print('The matrices used for R-PCA were of shape: {} & {}'.format(X.shape, m.shape))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "%matplotlib qt\n", "from itwmm.base import as_colouredtrimesh\n", "# As a sanity check, visualize the masks found on the original geometry\n", "# with the texture value extracted (mask = red)\n", "i = 4\n", "img, feat, fit_trimesh_3d = imgs_features_and_fits[i]\n", "img_sampled = np.repeat(img.sample(PointCloud(fit_trimesh_3d.points[:, :2])), 3, axis=0).T\n", "mask = m[i].reshape([fit_trimesh_3d.n_points, -1])[:, 0]\n", "img_sampled[~mask, 0] = 1.\n", "as_colouredtrimesh(fit_trimesh_3d, colours=img_sampled).view()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 3. Exporting a ITW texture model\n", "\n", "To use this model we just need to save it out and load it in to the fitting notebooks. Note that we need to save out some metadata along with the raw PCA basis to be able to use this again in the future. In particular, we need:\n", "\n", "- The rescaling diagonal. We will need this at fit time to ensure the features are meaningful.\n", "- The feature extraction function. Again we need to call this at fit time to produce a meaningful feature image to compare against in our LK algorithm.\n", "\n", "We also need the shape model we use to be in perfect correspondence with the fits used here." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "mio.export_pickle(\n", " {\n", " 'texture_model': itw_texture_model,\n", " 'diagonal_range': 180,\n", " 'feature_function': fast_dsift\n", " }, \n", " DATA_PATH / 'itw_texture_model.pkl',\n", " protocol=4, overwrite=True)" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python 3", "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.5.4" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: notebooks/2. Creating an expressive 3DMM.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. Creating an Expressive 3D Morphable Model\n", "\n", "#### Prerequisites\n", "\n", "- Access to a 3D facial shape model of identity\n", "- Access to a 3D facial shape model of expression (a 'blendshape' model)\n", "\n", "The authors of:\n", "\n", "> Zhu, Xiangyu, et al. \"Face alignment across large poses: A 3d solution.\" CVPR 2016\n", "\n", "Provide data [on their website](http://www.cbsr.ia.ac.cn/users/xiangyuzhu/projects/3DDFA/main.htm) which can be used to bootstrap the expression model, and the LSFM model can be used for identity variation. As an example, we show loading this data into the format we need to proceed, and then demonstrate building the combined expression/identity model. The file this example follows is:\n", "```\n", "300W-3D.zip\n", "```\n", "and also requires access to the following file (the LSFM model):\n", "```\n", "all_all_all.mat\n", "```\n", "place the two files together in a directory and unzip the zip file in place. Replace `DATA_PATH` with the parent folder path." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from pathlib import Path\n", "import numpy as np\n", "\n", "import scipy.io as sio\n", "import menpo.io as mio\n", "import menpo3d.io as m3io\n", "\n", "from menpo.shape import TriMesh, PointCloud\n", "from menpo.model import PCAModel\n", "\n", "# Replace DATA_PATH with the path to your data. It should have subdirectories:\n", "# 300W-3D/\n", "# all_all_all.mat\n", "DATA_PATH = Path('~/Dropbox/itwmm_src_data/').expanduser()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def generate_id_exp_model(data_path):\n", " # Load the LSFM ID model\n", " lsfm_model = m3io.import_lsfm_model(data_path / 'all_all_all.mat')\n", " \n", " # The number of ID and expression deformation components\n", " n_id = lsfm_model.n_active_components\n", " n_exp = 28 \n", " \n", " # Multiply the LSFM components with a scale factor, and bake in the eigenvalues.\n", " # The scale factor is to normalize weightings between ID and expression models.\n", " scale = np.sqrt(lsfm_model.eigenvalues[:n_id])\n", " i_raw = lsfm_model.components[:n_id] * scale[:, None]\n", " \n", " # Load the expression deformations from the data, and again scale for balancing\n", " scale_exp_mean = 1.0006846894227463e-05\n", " scale_exp_comps = scale_exp_mean / 2.5\n", " e_raw = sio.loadmat(str(data_path / '300W-3D' / 'Code' / 'Model_Exp.mat'))['w_exp'].T[:-1] * scale_exp_comps \n", " e_mean = sio.loadmat(str(data_path / '300W-3D' / 'Code' / 'Model_Exp.mat'))['mu_exp'].T * scale_exp_mean\n", " \n", " # We now just need to combine the two models.\n", " id_ind = np.arange(n_id)\n", " exp_ind = np.arange(n_id, n_id + n_exp)\n", " components = np.zeros([n_id + n_exp, i_raw.shape[1]])\n", " components[id_ind] = i_raw\n", " components[exp_ind] = e_raw\n", " mean_combined = TriMesh(lsfm_model.mean().points + e_mean.reshape((-1,3)), lsfm_model.mean().trilist) \n", " \n", " # iBUG 68 landmarks \n", " lms_vertex_indices = [\n", " 21868, 22404, 22298, 22327, 43430, 45175, 46312, 47132, 47911,\n", " 48692, 49737, 51376, 53136, 32516, 32616, 32205, 32701, 38910,\n", " 39396, 39693, 39934, 40131, 40843, 41006, 41179, 41430, 13399,\n", " 8161, 8172, 8179, 8185, 5622, 6881, 8202, 9403, 10764,\n", " 1831, 3887, 5049, 6214, 4805, 3643, 9955, 11095, 12255,\n", " 14197, 12397, 11366, 5779, 6024, 7014, 8215, 9294, 10267,\n", " 10922, 9556, 8836, 8236, 7636, 6794, 5905, 7264, 8223,\n", " 9063, 10404, 8828, 8228, 7509\n", " ]\n", " lms = PointCloud(mean_combined.points[lms_vertex_indices])\n", "\n", " # Initialize a Menpo PCA Model from the raw data.\n", " # Note that we fix the eigenvalues to 1, as we choose to rescale\n", " # the components to 'bake-in' the eigenvalues above.\n", " shape_model = PCAModel.init_from_components(components, \n", " np.ones(components.shape[1]), \n", " mean_combined, \n", " lsfm_model.n_samples, \n", " True)\n", " \n", " return shape_model, lms, id_ind, exp_ind" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Blend the ID and expression models into one, and note\n", "# The indices into the model for both indivual components.\n", "shape_model, lms, id_ind, exp_ind = generate_id_exp_model(DATA_PATH)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "%matplotlib qt\n", "# generate a random expression to see if it's sensible\n", "n_c = shape_model.n_components\n", "\n", "# The std. dev weighting to use\n", "sigma = 1\n", "\n", "weights = np.random.multivariate_normal(np.zeros(n_c), np.eye(n_c) * sigma, 1).ravel()\n", "\n", "synthesized_vector = shape_model.mean_vector + np.sum(weights[:, None] * shape_model.components, axis=0)\n", "synthesized_instance = shape_model.template_instance.from_vector(synthesized_vector)\n", "synthesized_instance.view()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Exporting the combined ID/expression shape model\n", "\n", "To use this model we just need to save it out and load it in to the fitting notebooks. Note that we need to save out some metadata along with the raw PCA basis to be able to use this again in the future. In particular, we need:\n", "\n", "- The record of which components are identitiy and which are expression (`id_ind` and `exp_ind`)\n", "- The vertex indices of the sparse set of landmarks on the model\n", "\n", "We also need the ITW texture model we use to be in perfect correspondence with the shape model provided here, and for the landmarks in data we fit to be of the same configuration." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "mio.export_pickle(\n", " {\n", " 'shape_model': shape_model,\n", " 'id_ind': id_ind,\n", " 'exp_ind': exp_ind,\n", " 'lms': lms\n", " }, \n", " DATA_PATH / 'id_exp_shape_model.pkl',\n", " protocol=4, overwrite=True)" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python 3", "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.5.4" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: notebooks/3. Fitting "in-the-wild" images.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## 3. Fitting \"in-the-wild\" images\n", "\n", "#### Prerequisites\n", "\n", "- Access to a combined 3D facial shape model of identity and expression\n", "- Access to an \"in-the-wild\" texture model\n", "- Access to an \"in-the-wild\" image with landmarks to fit. The landmarks should be given as input and should follow the iBUG 68 mark-up. It is highly recommended that these landmarks are \"3D-Aware-2D\" (3DA-2D) landmarks, as e.g. described in the paper (Zafeiriou et al., \"The 3D menpo facial landmark tracking challenge\", ICCV-W 2017).\n", "\n", "The first two of these can be generated by following the two previous notebooks in this folder:\n", "\n", "- `1. Building an \"in-the-wild\" texture model.ipynb`\n", "- `2. Creating an expressive 3DMM.ipynb`\n", "\n", "Running these notebooks to completion will lead to the following two files being generated in the `DATA_PATH` folder:\n", "\n", "- `itw_texture_model.pkl`\n", "- `id_exp_shape_model.pkl`\n", "\n", "This script shows how to load these directly and use them in fitting.\n", "\n", "You could of course understand the required formats by studying the aformentinoed scripts, and instead load your own shape and texture models instead." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from pathlib import Path\n", "import numpy as np\n", "\n", "import menpo.io as mio\n", "from menpo.base import LazyList\n", "from menpo.shape import PointCloud\n", "from menpo.visualize import print_progress\n", "from menpo3d.morphablemodel import ColouredMorphableModel\n", "\n", "from itwmm import (\n", " initialize_camera_from_params, initialize_camera,\n", " fit_image, instance_for_params,\n", " render_initialization, render_iteration,\n", ")\n", "\n", "# Replace DATA_PATH with the path to your data. It should have files:\n", "# itw_texture_model.pkl\n", "# id_exp_shape_model.pkl\n", "# As generated from Notebooks 1. and 2.)\n", "DATA_PATH = Path('~/Dropbox/itwmm_src_data/').expanduser()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def prepare_image_and_return_transforms(diagonal, feature_f, image):\n", " # this variation is needed if we need to know how the imput image \n", " # is transformed\n", " img, t = image.crop_to_landmarks_proportion(0.4, return_transform=True)\n", " img, scale = img.rescale_landmarks_to_diagonal_range(diagonal, return_transform=True)\n", " return {\n", " 'image': feature_f(img),\n", " 't': t.translation_component,\n", " 'scale': scale.scale[0]\n", " }\n", "\n", "\n", "def load_id_exp_shape_model(path):\n", " sm_dict = mio.import_pickle(path)\n", " shape_model = sm_dict['shape_model']\n", " lms = sm_dict['lms']\n", " id_ind = sm_dict['id_ind']\n", " exp_ind = sm_dict['exp_ind']\n", " return shape_model, lms, id_ind, exp_ind\n", "\n", "\n", "def load_itw_texture_model(path):\n", " tm_dict = mio.import_pickle(path)\n", " texture_model = tm_dict['texture_model']\n", " diagonal_range = tm_dict['diagonal_range']\n", " feature_function = tm_dict['feature_function']\n", " return texture_model, diagonal_range, feature_function" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Prepare data and model" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# LOAD SHAPE MODEL\n", "# note that id_ind and exp_ind are two index mappings into the components of\n", "# this special combined shape model. The first records the index position of\n", "# components that are related to identitiy, the second an index of the (remaining)\n", "# components which are related to shape.\n", "shape_model, lms, id_ind, exp_ind = load_id_exp_shape_model(DATA_PATH / 'id_exp_shape_model.pkl')\n", "\n", "# record the number of ID / EXP params\n", "n_p, n_q = id_ind.shape[0], exp_ind.shape[0]\n", "\n", "# LOAD ITW TEXTURE MODEL\n", "# Note we have to know the diagonal setting and feature used in the texture model.\n", "texture_model, diagonal_range, feature_function = load_itw_texture_model(DATA_PATH / 'itw_texture_model.pkl')\n", "\n", "# construct our Morphable Model that we can use in the fitting approaches below\n", "mm = ColouredMorphableModel(shape_model, texture_model, lms, \n", " holistic_features=feature_function,\n", " diagonal=diagonal_range)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# load some images and prepare them for fitting.\n", "# Note that we have to rescale the images/extract the feature we used for the model\n", "# ourselves. Unlike previous menpo fitting routines, fit_image is a simpler implementation.\n", "# it requires us to explicitly do more before we call fit_image, but it is much simpler to\n", "# follow what is being done in the code.\n", "frame = mio.import_image('itw_image.jpg')\n", "\n", "transform_info = prepare_image_and_return_transforms(diagonal_range, feature_function, frame)\n", "image = transform_info.pop('image')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Initialize parameters" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "%matplotlib inline\n", "# initialize the shape weights to zero (mean)\n", "p = np.zeros(n_p)\n", "q = np.zeros(n_q)\n", "\n", "# initialize the camera with a large focal length (orthogathic)\n", "camera = initialize_camera_from_params(image, mm, id_ind, exp_ind, p, q, focal_length=99999999)\n", "c = camera.as_vector()\n", "\n", "# Check the initialization looks sensible\n", "# Note that most methods in ITWMM expect video inputs. We just need to wrap\n", "# Single-frame parameters in a single list to re-use them for images.\n", "render_initialization([image], mm, id_ind, exp_ind, camera, p, [q], [c], 0).view()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## ITW Image fitting" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Actually run the optimisation.\n", "# Return is a list of parameters recovered per-iteration per-frame.\n", "params = fit_image(image, mm, id_ind, exp_ind, camera, \n", " p, q, c,\n", " lm_group='PTS', n_iters=10, \n", " c_f=3.,\n", " c_id=1.,\n", " c_exp=3.,\n", " c_l=1.,\n", " n_samples=1000, compute_costs=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Inspect results" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# now we render the fitting.\n", "iter_no = -1\n", "frame.view()\n", "render_iteration(mm, id_ind, exp_ind, image.shape, \n", " camera, params, 0, iter_no).view(new_figure=True)" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python 3", "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.5.4" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: notebooks/4. Fitting "in-the-wild" videos.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## 4. Fitting \"in-the-wild\" videos\n", "\n", "#### Prerequisites\n", "\n", "- Access to a combined 3D facial shape model of identity and expression\n", "- Access to an \"in-the-wild\" texture model\n", "- Access to an \"in-the-wild\" video with landmarks to fit. The per-frame landmarks should be given as input and should follow the iBUG 68 mark-up. It is highly recommended that these landmarks are \"3D-Aware-2D\" (3DA-2D) landmarks, as e.g. described in the paper (Zafeiriou et al., \"The 3D menpo facial landmark tracking challenge\", ICCV-W 2017).\n", "\n", "The first two of these can be generated by following the two previous notebooks in this folder:\n", "\n", "- `1. Building an \"in-the-wild\" texture model.ipynb`\n", "- `2. Creating an expressive 3DMM.ipynb`\n", "\n", "Running these notebooks to completion will lead to the following two files being generated in the `DATA_DIR` folder:\n", "\n", "- `itw_texture_model.pkl`\n", "- `id_exp_shape_model.pkl`\n", "\n", "This script shows how to load these directly and use them in fitting.\n", "\n", "You could of course understand the required formats by studying the aformentinoed scripts, and instead load your own shape and texture models instead." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from pathlib import Path\n", "import numpy as np\n", "\n", "import menpo.io as mio\n", "from menpo.base import LazyList\n", "from menpo.shape import PointCloud\n", "from menpo.visualize import print_progress\n", "from menpo3d.morphablemodel import ColouredMorphableModel\n", "\n", "from itwmm import (\n", " initialize_camera_from_params, initialize_camera,\n", " fit_video, instance_for_params,\n", " render_initialization, render_iteration,\n", ")\n", "\n", "# Replace DATA_PATH with the path to your data. It should have files:\n", "# itw_texture_model.pkl\n", "# id_exp_shape_model.pkl\n", "# As generated from Notebooks 1. and 2.)\n", "DATA_PATH = Path('~/Dropbox/itwmm_src_data/').expanduser()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def prepare_image_and_return_transforms(diagonal, feature_f, image):\n", " # this variation is needed if we need to know how the imput image \n", " # is transformed\n", " img, t = image.crop_to_landmarks_proportion(0.4, return_transform=True)\n", " img, scale = img.rescale_landmarks_to_diagonal_range(diagonal, return_transform=True)\n", " return {\n", " 'image': feature_f(img),\n", " 't': t.translation_component,\n", " 'scale': scale.scale[0]\n", " }\n", "\n", "\n", "def load_id_exp_shape_model(path):\n", " sm_dict = mio.import_pickle(path)\n", " shape_model = sm_dict['shape_model']\n", " lms = sm_dict['lms']\n", " id_ind = sm_dict['id_ind']\n", " exp_ind = sm_dict['exp_ind']\n", " return shape_model, lms, id_ind, exp_ind\n", "\n", "\n", "def load_itw_texture_model(path):\n", " tm_dict = mio.import_pickle(path)\n", " texture_model = tm_dict['texture_model']\n", " diagonal_range = tm_dict['diagonal_range']\n", " feature_function = tm_dict['feature_function']\n", " return texture_model, diagonal_range, feature_function" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Prepare data and model" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# LOAD SHAPE MODEL\n", "# note that id_ind and exp_ind are two index mappings into the components of\n", "# this special combined shape model. The first records the index position of\n", "# components that are related to identitiy, the second an index of the (remaining)\n", "# components which are related to shape.\n", "shape_model, lms, id_ind, exp_ind = load_id_exp_shape_model(DATA_PATH / 'id_exp_shape_model.pkl')\n", "\n", "# record the number of ID / EXP params\n", "n_p, n_q = id_ind.shape[0], exp_ind.shape[0]\n", "\n", "# LOAD ITW TEXTURE MODEL\n", "# Note we have to know the diagonal setting and feature used in the texture model.\n", "texture_model, diagonal_range, feature_function = load_itw_texture_model(DATA_PATH / 'itw_texture_model.pkl')\n", "\n", "# construct our Morphable Model that we can use in the fitting approaches below\n", "mm = ColouredMorphableModel(shape_model, texture_model, lms, \n", " holistic_features=feature_function,\n", " diagonal=diagonal_range)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# load some images and prepare them for fitting.\n", "# Note that we have to rescale the images/extract the feature we used for the model\n", "# ourselves. Unlike previous menpo fitting routines, fit_video is a simpler implementation.\n", "# it requires us to explicitly do more before we call fit_video, but it is much simpler to\n", "# follow what is being done in the code.\n", "lim_frames = 100\n", "\n", "frame_ids = LazyList.init_from_iterable(\n", " [p.stem for p in mio.image_paths('video_dir/')][:lim_frames])\n", "frames = frame_ids.map(lambda fid: mio.import_image('video_dir/{}.png'.format(fid)))\n", "\n", "transform_info = [prepare_image_and_return_transforms(diagonal_range, feature_function, i) for i in \n", " print_progress(frames, prefix='processing images')]\n", "images = [x.pop('image') for x in transform_info]\n", "\n", "n_images = len(images)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Initialize parameters" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "# initialize the shape weights to zero (mean)\n", "p = np.zeros(n_p)\n", "qs = np.zeros([n_images, n_q])\n", "\n", "# initialize all cameras with a large focal length (orthogathic)\n", "cameras = [initialize_camera_from_params(img, mm, id_ind, exp_ind, p, q, focal_length=99999999) \n", " for img, q in zip(images, qs)]\n", "cs = np.vstack([camera.as_vector() for camera in cameras])\n", "template_camera = cameras[0]\n", "\n", "# Check the initialization looks sensible (for first and last frame)\n", "render_initialization(images, mm, id_ind, exp_ind, template_camera, p, qs, cs, 0).view()\n", "render_initialization(images, mm, id_ind, exp_ind, template_camera, p, qs, cs, -1).view(new_figure=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## ITW Video fitting" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Actually run the optimisation.\n", "# Return is a list of parameters recovered per-iteration per-frame.\n", "#\n", "# E.g. to access the 3'rd frame's parameters at the 6th iteration:\n", "# params[5][2] # (lists are 0-based in Python)\n", "#\n", "params = fit_video(images, mm, id_ind, exp_ind, template_camera, \n", " p, qs, cs,\n", " lm_group='PTS', n_iters=10, \n", " c_f=3.,\n", " c_id=1. * n_images,\n", " c_exp=3.,\n", " c_l=1.,\n", " c_sm=6.,\n", " n_samples=1000, compute_costs=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Inspect results" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# now we render the fitting.\n", "frame_no = 5\n", "iter_no = -1\n", "frames[frame_no].view()\n", "render_iteration(mm, id_ind, exp_ind, images[0].shape, \n", " template_camera, params, frame_no, iter_no).view(new_figure=True)" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python 3", "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.5.4" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: setup.py ================================================ from setuptools import setup, find_packages install_requires = ['menpo3d>=0.6.0'] setup(name='itwmm', version='1.0.0', description='ITW Morphable Model fitting', author='Menpo Authors', author_email='hello@menpo.org', packages=find_packages(), install_requires=install_requires )