[
  {
    "path": ".gitignore",
    "content": ".idea\n*.egg-info\n*.ipynb_checkpoints\n"
  },
  {
    "path": "LICENSE.txt",
    "content": "Copyright (c) 2017, Imperial College London. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n    * Redistributions of source code must retain the above copyright\n      notice, this list of conditions and the following disclaimer.\n    * Redistributions in binary form must reproduce the above copyright\n      notice, this list of conditions and the following disclaimer in the\n      documentation and/or other materials provided with the distribution.\n    * The name of Imperial College London or that of other\n      contributors may not be used to endorse or promote products\n      derived from this software without specific prior written\n      permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTERS\n''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nHOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\nINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\nBUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS\nOF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\nON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR\nTORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE\nUSE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH\nDAMAGE.\n"
  },
  {
    "path": "README.md",
    "content": "# In The Wild 3D Morphable Models\n\nThe 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:\n\n> [**3D Reconstruction of \"In-the-Wild\" Faces in Images and Videos** ---\n> J. Booth, A. Roussos, E. Ververas, E. Antonakos, S. Ploumpis, Y. \nPanagagakis, S. Zafeiriou. \n> Transactions on Pattern Analysis and Machine Intelligence (T-PAMI), accepted for publication (2018).](https://doi.org/10.1109/TPAMI.2018.2832138)\n\n> [**3D Face Morphable Models “In-the-Wild”** --- J. Booth, E. Antonakos, S. \nPloumpis, G. Trigeorgis, Y. Panagagakis, S. Zafeiriou.\nCVPR 2017.](https://ibug.doc.ic.ac.uk/media/uploads/documents/booth2017itw3dmm.pdf)\n\nIf you use this code, **please cite the above papers**.\n\nThe following topics are covered, each one with its own dedicated notebook:\n\n1. Building an \"in-the-wild\" texture model\n2. Creating an expressive 3DMM\n3. Fitting \"in-the-wild\" images\n4. Fitting \"in-the-wild\" videos\n\n### Release Notes (28/06/2018)\n\n- 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.\n\n### Prerequisites\n\nTo leverage this codebase users need to independently source the \nfollowing items to construct an \"in-the-wild\" 3DMM:\n\n- A collection of \"in-the-wild\" images coupled with 3D fits\n- A parametric facial shape model of identity and expression\n\nAnd then to use this model, users will need to provide data to fit on:\n\n- \"in-the-wild\" images or videos with iBUG 68 annotations\n\nExamples are given for working with some common facial models (e.g. LSFM) and \nit shouldn't be too challenging to adapt these examples for alternative inputs.\nJust bear in mind that fitting parameters will need to be tuned when working \nwith different models.\n\n### Notes \n\nPlease note that this public version of our code has some differences compared to what is described in our aforementioned papers (TPAMI and CVPR):\n\n- The default parameters provided here work in generally quite well, but in our papers these had been fine-tuned in different sets of experiments. \n- 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. \n- 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.\n\nThese 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. \n\n### Installation\n\n1. Follow the instructions to [install the Menpo Project with conda](http://www.menpo.org/installation/conda.html).\n2. Whilst in the conda environment containing menpo, run `pip install git+https://github.com/menpo/itwmm`.\n3. Download a [copy of the code](https://github.com/menpo/itwmm/archive/master.zip) into your Downloads folder.\n4. Run `jupyter notebook` and navigate to the `notebooks` directory in the \ndownloaded folder.\n5. Explore the notebooks in order to understand how to use this codebase.\n\n\n# Evaluation Code \n\nWe 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. \n\nPlease see the demo Notebook evaluation/demo.ipynb (\"Reconstruction Evaluation Demo\"), where you can also find detailed comments.\n\n"
  },
  {
    "path": "evaluation/__init__.py",
    "content": "\n"
  },
  {
    "path": "evaluation/benchmark.py",
    "content": "import numpy as np\nfrom pathlib import Path\nimport matplotlib.pyplot as plt\n\nimport menpo.io as mio\nfrom menpo.landmark import face_ibug_49_to_face_ibug_49\nfrom menpo.shape import TriMesh, PointCloud\nimport menpo3d.io as m3io\nfrom menpofit.visualize import (plot_cumulative_error_distribution,\n                                statistics_table, \n                                print_progress)\n\nfrom eos import load_eos_low_res_lm_index, upsample_eos_low_res_to_fw_no_texture\nfrom kfeval import (landmark_and_mask_gt_mesh,\n                     mask_align_and_calculate_dense_error)\n\n\nTHIS_DIR = Path(__file__).parent\n\n# landmarks indexes of the LSFM model\nlms_indexes = mio.import_pickle(THIS_DIR / 'lsfm_lms_indexes.pkl')\n                \n    \ndef calculate_errors_3dMDLab(path_fits, path_gt, model):\n    r\"\"\"\n    Parameters\n    ----------\n     path_fits: 'string' of the directory that contains your reconstructed\n                meshes. Meshes' filenames should be the same with the\n                corresponding images/ground truth meshes filenames + the suffix\n                of the mesh type (e.g .obj, .ply)\n     path_gt: 'string' of the directory that contains the ground truth meshes.\n     model: 'string' of the model template you are using. Should be one of the\n            following: 'LSFM', 'Basel', 'Surrey'\n    Returns\n    -------\n     errors: python list that contains the error per vertex for all meshes\n    \"\"\"\n    path_fits = Path(path_fits)\n    path_gt = Path(path_gt)\n    \n    # load meshes' filenames\n    filenames = [p.name for p in path_fits.glob('*')]\n    filenames.sort()\n\n    errors = [0]*len(filenames)\n    for i, filename in enumerate(print_progress(filenames)):\n\n        # load gt_mesh, fit_3d\n        gt_mesh = m3io.import_mesh(path_gt / filename, texture_resolver=None)\n        gt_mesh.landmarks['ibug49'] = PointCloud(\n            gt_mesh.points[lms_indexes][19:])\n        fit_3d = m3io.import_mesh(path_fits / filename, texture_resolver=None)\n\n        if model == 'Surrey':\n            lms = face_ibug_49_to_face_ibug_49(PointCloud(\n                    fit_3d.points[load_eos_low_res_lm_index()]))\n            fit_3d = upsample_eos_low_res_to_fw_no_texture(fit_3d)\n            fit_3d.landmarks['ibug49'] = lms\n        elif model == 'LSFM' or model == 'Basel':\n            fit_3d.landmarks['ibug49'] = PointCloud(\n                fit_3d.points[lms_indexes][19:])\n        else:\n            print('Error: Not supported model template')\n            return\n\n        # calculate per vertex errors\n        gt_mesh, eval_mask = landmark_and_mask_gt_mesh(gt_mesh, distance=1)\n        errors[i], _, _ = mask_align_and_calculate_dense_error(fit_3d, gt_mesh,\n                                                               eval_mask)\n    \n    return errors\n\n\ndef calculate_errors_4DMaja_synthetic(path_fits, path_gt, model):\n    r\"\"\"\n    Parameters\n    ----------\n     path_fits: 'string' of the directory that contains your reconstructed meshes.\n                Meshes' filenames should be the same with the\n                corresponding ground truth meshes filenames + the suffix of\n                the mesh type (e.g <frame_number>.obj)\n     path_gt: 'string' of the directory that contains the ground truth meshes.\n     model: 'string' of the model template you are using. Should be one of the\n            following: 'LSFM', 'Basel', 'Surrey'\n    Returns\n    -------\n     errors: python list that contains the error per vertex for all meshes\n    \"\"\"\n    return calculate_errors_3dMDLab(path_fits, path_gt, model)\n\n\ndef calculate_errors_4DMaja_real(path_fits, path_gt, model):\n    r\"\"\"\n    Parameters\n    ----------\n     path_fits: 'string' of the directory that contains your reconstructed meshes\n                Meshes' filenames should be the same with the\n                corresponding ground truth meshes filenames + the suffix of\n                the mesh type (e.g <frame_number>.obj, <frame_number>.ply)\n     path_gt: 'string' of the full path of the ground truth mesh.\n     model: 'string' of the model template you are using. Should be one of the\n            following: 'LSFM', 'Basel', 'Surrey'\n    Returns\n    -------\n     errors: python list that contains the error per vertex between the ground\n             truth mesh and a mean mesh calculated from your reconstructed meshes\n    \"\"\"\n    path_fits = Path(path_fits)\n    path_gt = Path(path_gt)\n    \n    # load meshes' filenames\n    filenames = sorted([p.name for p in path_fits.glob('*')])\n\n    # load gt_mesh (it is only one, Maja's neutral face)\n    gt_mesh = m3io.import_mesh(path_gt, texture_resolver=None)\n    gt_mesh.landmarks['ibug49'] = PointCloud(gt_mesh.points[lms_indexes][19:])\n\n    errors = [0]\n\n    # accumulate fits\n    acc_points = np.zeros((gt_mesh.n_points, 3))\n    for i, filename in enumerate(print_progress(filenames)):\n\n        fit_3d = m3io.import_mesh(path_fits / filename, texture_resolver=None)\n        if model == 'Surrey':\n            lms = face_ibug_49_to_face_ibug_49(PointCloud(\n                    fit_3d.points[load_eos_low_res_lm_index()]))\n            fit_3d = upsample_eos_low_res_to_fw_no_texture(fit_3d)\n            fit_3d.landmarks['ibug49'] = lms\n        elif model == 'LSFM' or model == 'Basel':\n            fit_3d.landmarks['ibug49'] = PointCloud(\n                fit_3d.points[lms_indexes][19:])\n        else:\n            print('Error: Not supported model template')\n            return\n\n        acc_points += fit_3d.points\n\n    # create mean_fit_3d\n    mean_fit_3d = TriMesh(acc_points / len(filenames), gt_mesh.trilist)\n    mean_fit_3d.landmarks['ibug49'] = PointCloud(\n        mean_fit_3d.points[lms_indexes][19:])\n\n    # calculate per vertex errors between the neutral gt_mesh and the mean_fit_3d\n    gt_mesh, eval_mask = landmark_and_mask_gt_mesh(gt_mesh, distance=1)\n    errors[0], _, _ = mask_align_and_calculate_dense_error(mean_fit_3d,\n                                                           gt_mesh, eval_mask)\n    \n    return errors\n   \n    \ndef plot_ced_3dMDLab(errors):\n    \n    errs = [[error_vtx for error_mesh in errors[key] for error_vtx in error_mesh] for key in errors.keys()]\n    legs = [method for method in errors.keys()]\n    \n    tab = statistics_table(errs, legs, 0.105, 0.01, precision=4, sort_by='auc')\n    \n    r = plot_cumulative_error_distribution(\n        errs, legend_font_size=20, line_width=5, marker_size=10,\n        axes_font_size=20, error_range=[0, 0.105, 0.01], marker_edge_width=4,\n        y_label='Vertexes proportion', x_label='Normalized dense vertex error',\n        title='', legend_entries=legs,\n        axes_y_ticks=list(np.arange(0., 1.05, 0.1)), figure_size=(7, 5))\n    plt.gca().set_axisbelow(True)\n    plt.gca().yaxis.grid(color='gray', linestyle='dashed')\n    return tab, r\n\n\ndef plot_ced_4DMaja_synthetic(errors):\n    return plot_ced_3dMDLab(errors)\n\n\ndef plot_errors_per_frame_4DMaja_synthetic(errors, method_name):\n    \n    errs = [error.mean() for error in errors]\n\n    axes = plt.gca()\n    axes.set_ylim([0, 0.150])\n    axes.set_xlim([1, 440])\n    plt.plot(errs, linewidth=2)\n    plt.title('4DMaja_synthetic - Mean errors per frame - ' + method_name)\n\n    \ndef plot_ced_4DMaja_real(errors):\n    return plot_ced_3dMDLab(errors)\n"
  },
  {
    "path": "evaluation/demo.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Reconstruction Evaluation Demo \\n\",\n    \"\\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\",\n    \" - 3dMDLab-real\\n\",\n    \" - 3dMDLab-synthetic\\n\",\n    \" - 4DMaya-real\\n\",\n    \" - 4DMaya-synthetic\\n\",\n    \"\\n\",\n    \"#### Prerequisites\\n\",\n    \"\\n\",\n    \" 1. Download the datasets from [iBug website](https://ibug.doc.ic.ac.uk/resources/itwmm/).\\n\",\n    \"\\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    \" \\n\",\n    \"#### Note\\n\",\n    \"\\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).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from benchmark import *\\n\",\n    \"%matplotlib inline\\n\",\n    \"\\n\",\n    \"# Replace DATA_PATH with the path to your data. It should have subdirectories:\\n\",\n    \"#  3dMDLab_real/\\n\",\n    \"#  3dMDLab_synthetic/\\n\",\n    \"#  4DMaya_real/\\n\",\n    \"#  4DMaya_synthetic/\\n\",\n    \"DATA_PATH = Path('~/Dropbox/itwmm_src_data/datasets').expanduser()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# 1. Evaluate on 3dMDLab-real\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[====================] 100% (8/8) - done.                                       \\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Define the path of the reconstructed meshes\\n\",\n    \"path_reconstructions = DATA_PATH / '3dMDLab_real' / 'Reconstructions_dummy'\\n\",\n    \"\\n\",\n    \"# Define the path of the ground truth meshes\\n\",\n    \"path_gt = DATA_PATH / '3dMDLab_real' / 'Ground_Truth'\\n\",\n    \"\\n\",\n    \"# Define the model template you are using.\\n\",\n    \"# You can choose on the three supported models according to the model\\n\",\n    \"# you have used for your reconstructions:\\n\",\n    \"# - 'LSFM'\\n\",\n    \"# - 'Basel'\\n\",\n    \"# - 'Surrey'\\n\",\n    \"model = 'LSFM'\\n\",\n    \"\\n\",\n    \"errors = calculate_errors_3dMDLab(path_reconstructions, path_gt, model)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"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\\n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\\n\",\n      \"text/plain\": [\n       \"<matplotlib.figure.Figure at 0x7f820828ce48>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# Define the name of your method. This is just used for visualization\\n\",\n    \"method_name = 'my_method'\\n\",\n    \"\\n\",\n    \"table, renderer = plot_ced_3dMDLab({method_name: errors})\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style>\\n\",\n       \"    .dataframe thead tr:only-child th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: left;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>mean</th>\\n\",\n       \"      <th>std</th>\\n\",\n       \"      <th>median</th>\\n\",\n       \"      <th>mad</th>\\n\",\n       \"      <th>max</th>\\n\",\n       \"      <th>auc</th>\\n\",\n       \"      <th>fr</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>my_method</th>\\n\",\n       \"      <td>0.0347</td>\\n\",\n       \"      <td>0.0329</td>\\n\",\n       \"      <td>0.0261</td>\\n\",\n       \"      <td>0.0203</td>\\n\",\n       \"      <td>0.1957</td>\\n\",\n       \"      <td>0.7216</td>\\n\",\n       \"      <td>0.0367</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"             mean     std  median     mad     max     auc      fr\\n\",\n       \"my_method  0.0347  0.0329  0.0261  0.0203  0.1957  0.7216  0.0367\"\n      ]\n     },\n     \"execution_count\": 4,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# statistics of the distribution of the per vertex errors\\n\",\n    \"table\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# 2. Evaluate on 3dMDLab-synthetic\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[====================] 100% (6/6) - done.                                       \\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Define the path of the reconstructed meshes\\n\",\n    \"path_reconstructions = DATA_PATH / '3dMDLab_synthetic' / 'Reconstructions_dummy'\\n\",\n    \"\\n\",\n    \"# Define the path of the ground truth meshes\\n\",\n    \"path_gt = DATA_PATH / '3dMDLab_synthetic' / 'Ground_Truth'\\n\",\n    \"\\n\",\n    \"# Define the model template you are using.\\n\",\n    \"# You can choose on the three supported models according to the model\\n\",\n    \"# you have used for your reconstructions:\\n\",\n    \"# - 'LSFM'\\n\",\n    \"# - 'Basel'\\n\",\n    \"# - 'Surrey'\\n\",\n    \"model = 'LSFM'\\n\",\n    \"\\n\",\n    \"errors = calculate_errors_3dMDLab(path_reconstructions, path_gt, model)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 6,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"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\",\n      \"text/plain\": [\n       \"<matplotlib.figure.Figure at 0x7f823ae34630>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# Define the name of your method. This is just used for visualization\\n\",\n    \"method_name = 'my_method'\\n\",\n    \"\\n\",\n    \"table, renderer = plot_ced_3dMDLab({method_name: errors})\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 7,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style>\\n\",\n       \"    .dataframe thead tr:only-child th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: left;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>mean</th>\\n\",\n       \"      <th>std</th>\\n\",\n       \"      <th>median</th>\\n\",\n       \"      <th>mad</th>\\n\",\n       \"      <th>max</th>\\n\",\n       \"      <th>auc</th>\\n\",\n       \"      <th>fr</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>my_method</th>\\n\",\n       \"      <td>0.0328</td>\\n\",\n       \"      <td>0.0342</td>\\n\",\n       \"      <td>0.0228</td>\\n\",\n       \"      <td>0.0196</td>\\n\",\n       \"      <td>0.1957</td>\\n\",\n       \"      <td>0.7398</td>\\n\",\n       \"      <td>0.0441</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"             mean     std  median     mad     max     auc      fr\\n\",\n       \"my_method  0.0328  0.0342  0.0228  0.0196  0.1957  0.7398  0.0441\"\n      ]\n     },\n     \"execution_count\": 7,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# statistics of the distribution of the per vertex errors\\n\",\n    \"table\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# 3. Evaluate on 4DMaja-real\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 8,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[====================] 100% (387/387) - done.                                   \\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Define the path of the reconstructed meshes\\n\",\n    \"path_reconstructions = DATA_PATH / '4DMaja_real' / 'Reconstructions_dummy'\\n\",\n    \"\\n\",\n    \"# Define the full path of the ground truth mesh\\n\",\n    \"path_gt = DATA_PATH / '4DMaja_real' / 'Ground_Truth' / 'neutral.obj'\\n\",\n    \"\\n\",\n    \"# Define the model template you are using.\\n\",\n    \"# You can choose on the three supported models according to the model\\n\",\n    \"# you have used for your reconstructions:\\n\",\n    \"# - 'LSFM'\\n\",\n    \"# - 'Basel'\\n\",\n    \"# - 'Surrey'\\n\",\n    \"model = 'LSFM'\\n\",\n    \"\\n\",\n    \"errors = calculate_errors_4DMaja_real(path_reconstructions, path_gt, model)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 9,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"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\",\n      \"text/plain\": [\n       \"<matplotlib.figure.Figure at 0x7f81e8354d30>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# Define the name of your method. This is just used for visualization\\n\",\n    \"method_name = 'my_method'\\n\",\n    \"\\n\",\n    \"table, renderer = plot_ced_4DMaja_real({method_name: errors})\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 10,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/html\": [\n       \"<div>\\n\",\n       \"<style>\\n\",\n       \"    .dataframe thead tr:only-child th {\\n\",\n       \"        text-align: right;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe thead th {\\n\",\n       \"        text-align: left;\\n\",\n       \"    }\\n\",\n       \"\\n\",\n       \"    .dataframe tbody tr th {\\n\",\n       \"        vertical-align: top;\\n\",\n       \"    }\\n\",\n       \"</style>\\n\",\n       \"<table border=\\\"1\\\" class=\\\"dataframe\\\">\\n\",\n       \"  <thead>\\n\",\n       \"    <tr style=\\\"text-align: right;\\\">\\n\",\n       \"      <th></th>\\n\",\n       \"      <th>mean</th>\\n\",\n       \"      <th>std</th>\\n\",\n       \"      <th>median</th>\\n\",\n       \"      <th>mad</th>\\n\",\n       \"      <th>max</th>\\n\",\n       \"      <th>auc</th>\\n\",\n       \"      <th>fr</th>\\n\",\n       \"    </tr>\\n\",\n       \"  </thead>\\n\",\n       \"  <tbody>\\n\",\n       \"    <tr>\\n\",\n       \"      <th>my_method</th>\\n\",\n       \"      <td>0.0434</td>\\n\",\n       \"      <td>0.034</td>\\n\",\n       \"      <td>0.0344</td>\\n\",\n       \"      <td>0.0173</td>\\n\",\n       \"      <td>0.1786</td>\\n\",\n       \"      <td>0.6495</td>\\n\",\n       \"      <td>0.0548</td>\\n\",\n       \"    </tr>\\n\",\n       \"  </tbody>\\n\",\n       \"</table>\\n\",\n       \"</div>\"\n      ],\n      \"text/plain\": [\n       \"             mean    std  median     mad     max     auc      fr\\n\",\n       \"my_method  0.0434  0.034  0.0344  0.0173  0.1786  0.6495  0.0548\"\n      ]\n     },\n     \"execution_count\": 10,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"table\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# 4. Evaluate on 4DMaja-synthetic\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### Note that\\n\",\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    \"\\n\",\n    \"For example, it takes about 11 minutes in an Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz. \"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 11,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"[====================] 100% (440/440) - done.                                   \\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Define the path of the reconstructed meshes\\n\",\n    \"path_reconstructions = DATA_PATH / '4DMaja_synthetic' / 'Reconstructions_dummy'\\n\",\n    \"\\n\",\n    \"# Define the path of the ground truth meshes\\n\",\n    \"path_gt = DATA_PATH / '4DMaja_synthetic' / 'Ground_Truth'\\n\",\n    \"\\n\",\n    \"# Define the model template you are using.\\n\",\n    \"# You can choose on the three supported models according to the model\\n\",\n    \"# you have used for your reconstructions:\\n\",\n    \"# - 'LSFM'\\n\",\n    \"# - 'Basel'\\n\",\n    \"# - 'Surrey'\\n\",\n    \"model = 'LSFM'\\n\",\n    \"\\n\",\n    \"errors = calculate_errors_4DMaja_synthetic(path_reconstructions, path_gt, model)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 12,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"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\",\n      \"text/plain\": [\n       \"<matplotlib.figure.Figure at 0x7f81f7680860>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"# Define the name of your method. This is just used for visualization\\n\",\n    \"method_name = 'my_method'\\n\",\n    \"\\n\",\n    \"table, renderer = plot_ced_4DMaja_synthetic({method_name: errors})\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 13,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"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\\nERGRTAoUREREJJMCBREREcmkQEFEREQyKVAQERGRTAoUREREJJMCBREREcmkQEFEREQyKVAQERGR\\nTAoUREREJJMCBREREcmkQEFEREQyKVAQERGRTAoUREREJJMCBREREcmkQEFEREQyKVAQERGRTAoU\\nREREJJMCBREREclUU6BgZsea2RQzm2NmT5nZZm2k38bMms1srpm9YmYHl0jzEzObZGazzexNMxtp\\nZj1rKZ+IiIjUR9WBgpkNBy4GzgQ2BZ4D7jOzvhnpBwJ3Aw8CQ4BLgWvNbPtUmv2A85I8vwocCuwD\\nnFtt+URERKR+aqlRaASudvfR7j4JOBqYTVzcS/kR8Lq7n+Tuk939CuC2JJ+cLYHH3P3P7v6mu48F\\nbgG+UUP5REREpE6qChTMrAcwjKgdAMDdHRhLXOxL2SKZn3ZfUfongGG5JgwzWwf4HnBPNeUTERGR\\n+lqmyvR9ge7A9KLp04HBGcv0z0jf28x6uvs8d29Kmi4eMzNL1nGVu19QZflERESkjqoNFNqFmW0D\\nnEo0YzwDDAIuM7P33P3X5ZZtbGykT58+BdMaGhpoaGhop9KKiIh0HU1NTTQ1NRVMmzlzZsXLW7Qc\\nVJg4mh5mA3u5+52p6aOAPu6+Z4llHgWa3f3E1LRDgEvcfeXk+zjgKXc/KZVmf6IvxIoZZRkKNDc3\\nNzN06NCKt0FEROSLbvz48QwbNgxgmLuPL5e2qj4K7r4AaAa2zU1Lmgq2JfoZlPJkOn1ih2R6Ti9g\\nYVGallT+IiIi0glqaXoYCYwys2aimaCRuNCPAjCz84DV3D03VsJVwLFmdgFwHRE0/JDorJhzF9Bo\\nZs8BTwPrAWcDd3o1VR4iIiJSV1UHCu5+a9Lx8GygHzAB2NHdZyRJ+gMDUumnmtkuwCXA8cDbwGHJ\\nI5A55xA1COcAqwMzgDuB06veIhEREambmjozuvuVwJUZ80aUmDaOeKwyK79ckHBOLeURERGR9qF3\\nPYiIiEgmBQoiIiKSSYGCiIiIZFKgICIiIpkUKIiIiEgmBQoiIiKSSYGCiIjIUuCll+CVV+qfrwIF\\nERGpm2nT4PTTYezYttNK/Tz0EAwZEp/xZd/cUD0FCiIiUje//CWcey5svz1U8YJCWUzHHguLFsHc\\nuXDGGfXNW4GCiIjU7PPP4252zpz4fu21+Xn//nfnlOmL5IMPYKutYNKk/LSxY+GTT+q3DgUKIiJS\\ns913h223hcMPbz3vhRc6vjxfNL/9LTz2WOG0efPglltg9mzYZx8YMAAef7z2ddT0rgcREZH58+HB\\nB+P/Y8bqtC8lAAAgAElEQVTAoEGF83Nt5R98EP0WevSAkSPjX6mPceNKTx8zBu6+G+65J75fdBH8\\nv/9X2zoUKIiISEU+/zyqtC+6CO67D049tXD+2WcXfn/22ejcuPXW8OqrMW2jjeDoozumvEu7efOg\\nuTn+v+66sY833DCaIf75z8K0jz5a+3rU9CAiImUtWADTp0eNwRprwKWXxsXooIPKL/fyy3DUUfkg\\nAaJKXOrj2WejVgeitsAM9tuvdNpPPoFZs2pbjwIFEZEljHtcjE8/Pe4aO9Pbb0cbd//+UTtQjZYW\\nuPPOwmnjxsF779WvfFmmToVnnok76803h7POav91drQnn8z/f8st49999slOX2ufEQUKIiJLmAcf\\nhJ/8JB4zvPLKzi3L6adHbcLi6t8//nWHCy9c/PzKOfVUWHvtCBC23joChl/9KoKepUmpQGH99Vv3\\nFcl5/vna1qNAQUS+0CZPjrvPzuIeVfTpx9n+8If8/088sf3LsHAhPP00fPghXH453H57jINw5JHw\\n5z8vfv6rrBJt5D17xvff/Q6eeGLxy/zpp4XTnnsOzjkHzjuv9DLPPrt462xP7nDFFVH+BQsqWyYX\\nKKy4Imy8cfzfDIYOLZ3+uOPg4ovh/ferLpx3yQ8wFPDm5mYXEanFk0+6g3uPHu6TJ3dOGUaNijKs\\nuqr7lCnuP/xhfE9/Zs5s3zI0NrZeZzWfbt3cP/44e/6hh8Z6Lr44P+3ww0uXZdYs97/8xf2997LL\\n++GH7muu6d6rl/u//hXT5s93X2218uU855zWec2b1/77txL/93/5cp52Wnz23df9mWfc77rL/d57\\n3YcPd3/00Uj/1lv59N/9bmFeDz2Un9fY6L7ssoX7Yddd3Zubmx1wYKi3db1tK8GS+lGgICKL6zvf\\nyZ8899mnc8pQyYX4r3+t/3pfesn9/PPdn39+8YIEcB84MPJ84AH3r33N/cIL3X/2s/z8f/875s+e\\n7b7ccjFt9dXdW1ry5bntNvdtt3X/n/+J+UOGFM5PS+e9yy4x7eGH2y7ndtu5H3ig+8knR2Dx0Ufu\\na6wRF9Innqj/Pi62aFH2vB/8oLJ9veaasV/+8pf8tFNPbZ3fhRe6H3VUBHBjxrj37ZtPv8IK7v/6\\nlwIFEZE2bbJJ/uS56aYdv/533qns4vCTn9R3vQ88EHfjixsglAuyPvrI/ac/jRqTtJ12yi/3/PMx\\nraWldL4TJ5Yu/8Yb59Mss4z7gw+6n3BC6+X33rv13XR6n154Yf77JpvUb/8uWuT+1FPu993nPmdO\\nTLvmmtjnu+7q/sYbrdP361f7/r/rrrbL9Nln7iuvnF/m739XoCAi0qYtt8yfONdeu+PXf9VV2Sf/\\n5ZfP/3/HHbPzaGlxHz/e/fPPK1vnwoXRzFHtxSh9cc597rgjtuGTTyrf5ksvzS+/885R9f/aa6XX\\nefnlrZefOzf74l/8mTo1ltlss8rSv/uu+yOPlL7znznT/YIL3EeMcB89Onv75s6NpoBcnj/9aRyj\\nNdbIT+ve3f1733O/9tpY5rHHag8SevSIpphKnH56frnf/laBgohIm9ZdN3/iXHbZqI7uSMOHtz7x\\nDxoUF6qWFvfevfPTTz7Zffr01nmce67/9464XNV2zsSJpS84Q4bExXDnnVvP69MnyvPAA/lpq69e\\n2za/8YZ7z56VXQT32KP18vfcU/lFNNd08ZOfVHfx/dWvYrm5c93HjYsmk+Iai3vvzZfp3Xfdx46N\\nsh14YGG6gQPdX3wxe13nnus+bFjhtI03LgwUy31OO63yfX/rrfnljj5agYKISFmLFrW+M91tN/f9\\n94923Y6w+eatT/x33JE9/7jjCss/YULr+ffck08zY4b7t77lvv76kdeAAe7rrVf6gvO738Uyr77q\\nvtVWhfOGDs2vc5dd3FdZxf3xx2vf7ttuq+wi2Lt31JSk+yqk+5UUfwYOjH4OxRfQadMiAEtfiNta\\n9/z57vvtF//faSf3r3+9cP7qq0eV/1/+0vZF/RvfqGx71103ghN39wMOaDv9ZpvlmzYqkQ4St91W\\ngYKISKbXXnNfa63sE/Di9AkYN879zjuzO+K5x7x33823S/fpE+u8/PLC5Q45pHXZcn70o/IXke9/\\nv7KLU+4zY0ZhGb/0pfy84jv7Smou2lLJxTr32XrraDJ5+unsNMcdlw/wSj3F8Pbb7kceGU0fWfs2\\n/bn77sLv3btXtz+zPi+/HEFWcedFs8K+BmecUTj/D39wnzQpaiBefdX9zTfzQUWlFizIdyZdc00F\\nCiIimfbYo/zJvGfP2i6GL7wQJ3xw//OfC+fdf3/UVlx4YeHdLcTdfikXXNC6bEcfHY9y1uOi9eMf\\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\\nt/VLX6pucKdaTZrkfuyxMXDSFlvk17/DDq1rxiZMqOxvYUnT7oECcCwwBZgDPAVs1kb6bYBmYC7w\\nCnBwiTR9gCuAd5N0k4CdyuSpQEGkBulnus0K5xX3rN5hh+wLVPEFqdjChdFMkV7mzTdj3uOPu99y\\nS/7OvJIhaGvx3nutL/I9esRjdm35/e/bvvhnfTbfvPAFSJB/lC13oUnPe//98mWZNq30erp3j2OW\\nnnbLLYXLzp8f7zhYa60Y+KereP1198MOK9y2xsbOKctrr0VAuyQ0n9VLNYFC1V0kzGw4cDFwJrAp\\n8Bxwn5n1zUg/ELgbeBAYAlwKXGtm26fS9ADGAmsCPwDWB44A3qm2fCJfdFOnwvDhcO65cNRRcP75\\ncZoFePzx6FSV0717vkPer34FK6wAp5+en//aa9nrefPN1tPOPx/694err4Z33oGWlsL5Dz8MDz0U\\nnfT23Tffwe/YY8tv04wZ+W2oxh//mH9lb+/e8Zrde++Fb3yj7WWPOy62pxZbbw2bbVY4LdcpMdfB\\n7a67ogPkcce13RmvXz84+WRYbz0YOzb/SuHNNoNlly1Mm+4gCNFR74EHYMqU6GDXVay9dnRuvP32\\n2GdrrBGdQzvDOutEB8t058QvlLYiieIPUYNwaeq7AW8DJ2WkvwB4vmhaE3Bv6vvRwKtA9yrKoRoF\\nkRJ23731neeDD8aAOulBdHKf115z//TTwmktLXEHXG6QmV13jXbZq6+OduJ3383P69YthrQtXubQ\\nQ/Mj5xV/ttgiBpJxL7xzO+mkmL/99jF97NjoJFk8zsHFF7sfdFD0qXCPxxtzQwV361ZZ571i//53\\nYRnXWCPKv9NO8UbHdDPONtvEY4sbbRQ1BAsWRM1C9+7ZndlqvUN9/fVovnj99fj+619HGVZZpXyT\\nSlc1deqS8SropUm7NT0APYAFwPeLpo8C/paxzKPAyKJphwAfp77fA4wGrgamAS8AvwC6lSmLAoUO\\nMH16nJC0m7uG+fNLX4QbGtxvvLH0vPvua/28/owZ8ba7dPv6SivlXwEM8dra3NC1p53mfvbZhXkc\\ndVTrda2+eukxC3Kf3XaLi+8KK0Tfgj33LJyfHo1ws83yL8MpHsp4yJDCJofDDqttfy5cGMMeQ/QF\\nKH75TkuL+//9X2Efg/TFf9GijmlTnzcvxiX4z3/af12ydGjPQGFVoAXYvGj6BcCTGctMBk4umrYz\\nsAjomXyfSPR3uIZoztgb+AD4ZZmyKFDoALmxzr/ylfqNDCbVa2mp7O7z4YdLX4A33jh/Zw6FIxNe\\neWX05E+n33DDwu/nnhvD486b577OOqXXUc0jfFmf4j4NbX0OPND9738v/c6E3GfvvRfvZU8TJrif\\neWa+f4XI0qCaQCE1PESn6gZMB450dweeNbM1gJ8B55RbsLGxkT59+hRMa2hooKGhob3K+oXR0gJj\\nxsT/338/BiP56lc7t0xfRJ99Fm3606fDgw9GW+mdd0Zb+6mnFg7icvfdpfN48cXCQVv22APuuCP+\\n/8tfwocfFqZ/+eXC7xtuCF/6Uvx/zTXjt1DsnTI9io49Fq64Iv+9e/eYtu66ke/BB8f04j4Nbbnx\\nxvhkOfBAuO66woFwqjVkSHxEuqqmpiaampoKps2cObPyDNqKJNIf2q/p4RHg/qI0OxG1Dstk5Ksa\\nhXZW/GrUv/2ts0u0ZHj88XjMbXHenleN667LH4P+/aOKOTdo0ODB7v/6V1SRL1xY2V19nz5xd1zN\\nnXuuLdw9+gFUs+zKK0cfhjFj3EeOjD4NxY+TTZ2a/Yhh+tXGEMP3nnxy6bS9ekXzxODBrV+wJCJ5\\n7fbUg7svIB5z3DY3zcws+f5ExmJPptMndkim5zwODCpKMxh4z90XVlNGqZ/HHy/8Pnlydcv//e/w\\n/e9HL/dqfPopvPpq9vwPP8z3ZC+lpQXmzq1unTnTpsEHH2TP/+QT2GUXuPlm2HtvWLSotvXkuMfT\\nA+XupJubC8u3xx4wf358nzw5er5/+ctx11zurj5nk01gwAD4wQ8Kp3/zm4Xf+/aFPfeEiy8uHE62\\n3DC0664bQzzvvnv0Ut9hh/gdLL88NDRAYyMceSRsumnhcmutBTvu2Dq/k06KIWfXWCM/7fjj42mE\\nG29sPdTvV74CV14JkyZFjcUXtpe6SD21FUkUf4B9gNnAQcBXiQ6IHwKrJPPPA25IpR8IfEr0YxgM\\nHAPMB7ZLpVkD+AS4DFgP2IXo1HhKmXKoRqGdnHZa6QFmDjkkelTfcEP0oi921lnRM/3ll2NY1nR7\\n8y9+Ecvfc0/5dc+alW8Dv+aa1vMvvzzmbbdd3BV/73vRaS43zO7f/hY901dYIQbNybnrrnit6wUX\\nRI/13Eh4s2fn7zrHjo3Oed27x11pqWfbf/nLwn1SPHRsS0vc4U+enP+e9dKdlpZ47S3EULC5YWw/\\n/dT95z+PN9r99rcxTHC1bf3XXRcjD44ZE6MKpucdfXSsZ+bM6PSXmzZjRmG6M88sXe4rryxMd8AB\\nMVre4MHRMbJWf/1rPs8BAwp77191VUzfaKP8qHw56acrLrmk9vWLfJF0xIBLxwBTiQ6ITwJfT827\\nHnioKP3WRE3EHOIxyANL5Lk5USsxO0lzMmBlyqBAoR288075DmW5AXLM8mOe//WvrQdGyfost5z7\\nBx9krz89Yt3qq8eAOaNHx4V39uzCvNLD8X75y3FhTM/faSf3iy4q/aa9FVeMi3CPHnFR+v3vI8Ao\\nrqJPvyp4/vyoRi/O64UXYv6HH0av/dz+OeSQuHiuvLL7b34T27bHHvmx86+/vjCfXXeNoOKAA6oP\\nDNKfNdcs7Hi6aFE0leTmjx6dnzdnTr5ZoaWlMJ9HHy19jB55JJ9m222r+nmVNX+++1e/GvmeeGLh\\nvJYW9ylTWr8TIOfPf45jPWdO/cojsjTTEM5Liaw70fZ03nmFF4v11su+IG2xhfvNN9d2Mdtqq7jw\\n33NPXNB32cX9Zz9rna744t0Znz33jDvucmmGD6/Pur73vex5668fYwPsvnsERvffH9/TaXbaqfR4\\nAQsWxN32b35T/neVDqpyIwkWW7QoXrW7775RC1FPH3wQgUj6db0iUn8KFJYCDzzg3rt3XDg6okPW\\n1Klx0R40KH+hyN35br999Re8L385Xpaz0krtfyFfbbX65bXccu5PPdX6ccFS6eq1zkGDKnss8Oyz\\nWx+34rfsLe6gNE88EYFIWy8pEpGurV2HcJaOsfPOMGtWPAL373+377o+/xy22io66f3nPzHtu9+N\\nYUshOoX16gXbbgsffxyP5pVz/PExTPD++8PIkbDaanDeeTGUbL0tu2zso/Sjfz16xDvtKzFiBGyw\\nQf77T34Cm28ej4WOHh2d40p5883CoY5z+vSJznz77puf1r179vobGmDiRLjoosLp220Hv/51/nvf\\nvnD44a2XX245uOACWHFFOPvsKt8xX8KWW8Zjk3vuuXj5iMhSpK1IYkn90ME1Ci+9FG3yHXF3v3Bh\\n4V3irbcWzn/vPfeJE6vLr5w772x993rTTYVpigdbSneQS79y9/jjs9dT3KyR+xx5pPvXvx5V6//4\\nR4x0l55/7bXRXr7fftGRbu7cuPO96KJ8O3p6EKCvfz1qSK65Jh7FmzMn2rbTgwytuGL0IViwIPJa\\neeVYrngUvSlT8h3+cp/cWxCLj9OIETGMsXv09RgyJDr5vfGG+223td7uq67K/55aWvKDW620UtTm\\nfP55PIp48MHub71V/hjqMUARqYaaHupk/vzoUb/++vmT+w031Hcdpdpin3uu9UVl+PC4oL3xRv7C\\nvOuu0UPePdqe1147Lkhp998fF54dd8wHDJ9+Gm3uBx4YVdWHH956fZW84/2FF2LUOvcYZ3/EiPzT\\nB6UsWhTvBpgyJfoj/PjH0cTiXjjy4EcfxfPwEG86LB7Tv5Tbb8+XPd0BMW3u3Hh//Lx51V1YW1qi\\np/2zz7qfc04Eajl/+EOsc6ut2h79r6mpcB9//HHh/IULY5TB3PsORETaiwKFOvnTn1pfQA8+uH75\\nH3BAtHWn794feqj1OtOfH/6w8PsJJ8TFPj0trW/f/PSHHoqL2U47lV/HOefUbxtrdc890fN92rTK\\n0re0RA1CZwyyM2NGZcNb/+c/2cdJRKQjVRMomMdFt8sxs6FAc3NzM0OHDv3v9Ndei0Fecq9WHTCg\\n+rw/+QQOOSQGiin2zW+2HoioFu++C6uvnv++YAG88gocfTT885+V57PKKjFE7W675ad9+GEMwPPB\\nB22/vjbtm9+EG26IQXM0UE39uccgTXfdBX/6ExxwQGeXSES+qMaPH8+wYcMAhrn7+HJpu3xnxjlz\\n4t/586NT16BBMQ795MkxglxDQ1z4ITrq3XknzJsX391Lv+f+t78tDBK+9KV8p7bJk+OC/tZbrZer\\nxosvFn7/7nfjXfHVBAkQ5T/jjMJpZ50Fb7+dPe5/llNOif2nIKF9mMFtt0UnVQUJItJVdPlA4aij\\notf4ySfHha7YLbfAz38OBx0E668fQ8uedFLMO/XUCAB23TUfPADcemthHrvtln8Z0ocfwuDBEYQM\\nGJB/sc7s2TGs79SplZX7pZcKvxcHCMsuW375b387//9nny2cd9llUbYRI7KXT9dmbLllBFzpWglp\\nPz17dnYJREQq1+WbHmLAx6FtJS/Quze88ELcPefeGbDSSvCNb8DGG8Ollxamv//+CDiuu650fmuv\\nDe+9F+8XGDAgah2WX758GQ4/PKqfsxx6aAQvN98c37fcEp5M3o6x1lowYUI80lhcM9GWAQMicDrk\\nkHgPw1tvRVV4+hFBERFZulXT9LCkvGa6rn7zmwgC9tmn9PxZs+Jim/bpp/EK3wcfzE8bNCiaIbbf\\nvvxYBlOm5P//1ltRI5F7bW6Wti7w660X7dnvvgtf+1o8s/+970X19S23RHPIbbdFcDNrVvm89toL\\nVlghgoGTT843LTz8cPnlREREunygsNZa8MYb8f9VV4Xx46F///j+wgvxlrqFC2GLLaIq/qijKs97\\n9Oi4k4fCt+dB9HtoaIB//KP1cr//fTRVDBwI/frlp7//flycn38+PjmrrBJ9DdIGDYpOhek3Lz7z\\nTGGawYPjzYJPPBFpV1oJ/vznGKznu9/NpzvssBjASUREpGptPRaxpH5IHo+8++5mP+II9zPOcH/7\\n7daPgDz5pPstt8RjgQsWuA8cWPiI2o9/HGMBHHxwvHEQYjjd4uFy02MbbLRRTFu0KJ7Lz3rMcIUV\\nYtyFXXbJTrPbbjE4zznnFE7PjU9Qq733jnz6988es19ERL6YvtCPR7bljTfg0UfjjrtXr3iMMMc9\\n7vgHDIiq/zT3GN73X/+CUaOiY2ROU1M0DQwaFE0XixZVVpZ+/aIG4NvfjvzTwxB/9lk0F9Tqk0+i\\niWKbbfIdMUVERKC6PgpfuEChvf35z/CjH8U7EUrZZRc44ggYMiSaTdKPIh55JFxzDWy9dQQzIiIi\\n7eELNY7Ckmb48HiEcuHCCBgggoETToixGe66Kx7RHDiw9XgFl18O48bFS45ERESWBF2+M+OSyCze\\nGHjFFfHkRe/eUEmlx7LLxiOPIiIiSwoFCu3ILPoIiIiIdFVqehAREZFMChREREQkkwIFERERyaRA\\nQURERDIpUBAREZFMChREREQkkwIFERERyaRAQURERDIpUBAREZFMChREREQkkwIFERERyaRAQURE\\nRDIpUBAREZFMNQUKZnasmU0xszlm9pSZbdZG+m3MrNnM5prZK2Z2cJm0+5pZi5ndXkvZREREpH6q\\nDhTMbDhwMXAmsCnwHHCfmfXNSD8QuBt4EBgCXApca2bbZ6S9CBhXbblERESk/mqpUWgErnb30e4+\\nCTgamA0cmpH+R8Dr7n6Su0929yuA25J8/svMugE3AWcAU2ool4iIiNRZVYGCmfUAhhG1AwC4uwNj\\ngS0zFtsimZ92X4n0ZwLT3f36asokIiIi7WeZKtP3BboD04umTwcGZyzTPyN9bzPr6e7zzOxbwAii\\naUJERESWEJ3+1IOZrQiMBo5w9487uzwiIiKSV22NwgfAIqBf0fR+wLSMZaZlpJ+V1CZ8FVgLuMvM\\nLJnfDcDM5gOD3T2zz0JjYyN9+vQpmNbQ0EBDQ0MFmyMiIrJ0a2pqoqmpqWDazJkzK17eootB5czs\\nKeBpdz8h+W7Am8Bl7n5RifTnAzu7+5DUtDHAl9z9e2bWE1i3aLFzgRWB44FX3X1hiXyHAs3Nzc0M\\nHTq0qm0QERH5Ihs/fjzDhg0DGObu48ulrbZGAWAkMMrMmoFniKcXegGjAMzsPGA1d8+NlXAVcKyZ\\nXQBcB2wL/BD4HoC7zwNeTq/AzD6JWT6xhvKJiIhInVQdKLj7rcmYCWcTTQgTgB3dfUaSpD8wIJV+\\nqpntAlxC1BC8DRzm7sVPQoiIiMgSppYaBdz9SuDKjHkjSkwbRzxWWWn+rfIQERGRjtfpTz2IiIjI\\nkkuBgoiIiGRSoCAiIiKZFCiIiIhIJgUKIiIikkmBgoiIiGRSoCAiIiKZFCiIiIhIJgUKIiIikkmB\\ngoiIiGRSoCAiIiKZFCiIiIhIJgUKIiIikkmBgoiIiGRSoCAiIiKZFCiIiIhIJgUKIiIikkmBgoiI\\niGRSoCAiIiKZFCiIiIhIJgUKIiIikkmBgoiIiGRSoCAiIiKZFCiIiIhIJgUKIiIikkmBgoiIiGRS\\noCAiIiKZFCiIiIhIJgUKIiIikkmBgoiIiGRSoCAiIiKZagoUzOxYM5tiZnPM7Ckz26yN9NuYWbOZ\\nzTWzV8zs4KL5h5vZODP7KPk80FaeIiIi0v6qDhTMbDhwMXAmsCnwHHCfmfXNSD8QuBt4EBgCXApc\\na2bbp5J9GxgDbANsAbwF3G9mq1ZbPhEREamfWmoUGoGr3X20u08CjgZmA4dmpP8R8Lq7n+Tuk939\\nCuC2JB8A3P1Ad7/K3Z9391eAw5OybVtD+URERKROqgoUzKwHMIyoHQDA3R0YC2yZsdgWyfy0+8qk\\nB1gB6AF8VE35REREpL6qrVHoC3QHphdNnw70z1imf0b63mbWM2OZC4B3aB1giIiISAdaprMLUMzM\\nTgH2Ab7t7vPbSt/Y2EifPn0KpjU0NNDQ0NBOJRQREek6mpqaaGpqKpg2c+bMipevNlD4AFgE9Cua\\n3g+YlrHMtIz0s9x9Xnqimf0MOAnY1t1fqqRAl1xyCUOHDq0kqYiIyBdOqZvn8ePHM2zYsIqWr6rp\\nwd0XAM2kOhmamSXfn8hY7Elad0rcIZn+X2Z2EnAasKO7P1tNuURERKR91PLUw0jgCDM7yMy+ClwF\\n9AJGAZjZeWZ2Qyr9VcA6ZnaBmQ02s2OAHyb5kCxzMnA28eTEm2bWL/msUNNWiYiISF1U3UfB3W9N\\nxmXrsTAAAAjSSURBVEw4m2hCmEDUAsxIkvQHBqTSTzWzXYBLgOOBt4HD3D3dUfFo4imH24pWd1ay\\nHhEREekENXVmdPcrgSsz5o0oMW0c8VhlVn5r11IOERERaV9614OIiIhkUqAgIiIimRQoiIiISCYF\\nCiIiIpJJgYKIiIhkUqAgIiIimRQoiIiISCYFCiIiIpJJgYKIiIhkUqAgIiIimRQoiIiISCYFCiIi\\nIpJJgYKIiIhkUqAgIiIimRQoiIiISCYFCiIiIpJJgYKIiIhkUqAgIiIimRQoiIiISCYFCiIiIpJJ\\ngYKIiIhkUqAgIiIimRQoiIiISCYFCiIiIpJJgYKIiIhkUqAgIiIimRQoiIiISCYFCiIiIpJJgYKI\\niIhkUqCwhGhqaursItSdtqlr0DZ1DdqmrmFp3KaaAgUzO9bMppjZHDN7ysw2ayP9NmbWbGZzzewV\\nMzu4RJq9zWxikudzZrZzLWXrqpbGH5e2qWvQNnUN2qauYWncpqoDBTMbDlwMnAlsCjwH3GdmfTPS\\nDwTuBh4EhgCXAtea2fapNN8ExgDXAP8L/B24w8w2rLZ8IiIiUj+11Cg0Ale7+2h3nwQcDcwGDs1I\\n/yPgdXc/yd0nu/sVwG1JPjnHA/9w95FJmjOA8cBxNZRPRERE6qSqQMHMegDDiNoBANzdgbHAlhmL\\nbZHMT7uvKP2WFaQRERGRDrZMlen7At2B6UXTpwODM5bpn5G+t5n1dPd5ZdL0L1OW5QAmTpxYQbGX\\nfDNnzmT8+PGdXYy60jZ1DdqmrkHb1DV0lW1KXTuXazOxu1f8AVYFWoDNi6ZfADyZscxk4OSiaTsD\\ni4Ceyfd5wPCiND8C3itTlv0A10cfffTRRx99av7s19a1v9oahQ+IC3y/oun9gGkZy0zLSD8rqU0o\\nlyYrT4imif2BqcDcsqUWERGRtOWAgcS1tKyqAgV3X2BmzcC2wJ0AZmbJ98syFnuSqEFI2yGZnk5T\\nnMf2RWmKy/Ih8aSEiIiIVO+JShLV8tTDSOAIMzvIzL4KXAX0AkYBmNl5ZnZDKv1VwDpmdoGZDTaz\\nY4AfJvnkXArsZGYnJml+RXSavLyG8omIiEidVNv0gLvfmoyZcDbRPDAB2NHdZyRJ+gMDUumnmtku\\nwCXEY5BvA4e5+9hUmifNbD/g3OTzKrC7u79c22aJiIhIPVjSMVBERESkFb3rQURERDIpUBAREZFM\\nChQ6kJmdaWYtRZ+Xi9KcbWbvmtlsM3vAzAZ1VnlLMbOtzOxOM3snKf/3S6Qpuw1m1tPMrjCzD8zs\\nUzO7zcy+0nFb0aq8ZbfJzK4vcdzuLUqzxGyTmf3CzJ4xs1lmNt3M/mZm65dI12WOUyXb1AWP09HJ\\nC/BmJp8nzGynojRd5hgl5Sm7TV3tGJViZqck5R5ZNL1LHatqKFDoeC8SnUD7J59v5WaY2cnE+y2O\\nBL4BfE68cGvZTihnlhWIDqzHEIN1FKhwG34H7ALsBWwNrAb8tX2LXVbZbUr8g8Lj1lA0f0napq2A\\n3wObA9sBPYD7zWz5XIIueJza3KZEVzpObwEnA0OJp7weAv5uZhtAlzxG0MY2JbrSMSpg8abkI4mX\\nIaand8VjVblqRmbUZ/E+xBs3x5eZ/y7QmPreG5gD7NPZZc8obwvw/Wq2Ifk+D9gzlWZwktc3ltBt\\nuh64vcwyS/o29U3K8q2l6DiV2qYufZyS8nwIjFgajlHGNnXZYwSsSIw0/F3gYWBkat5ScayyPqpR\\n6HjrJVXcr5nZTWY2AMDM1iai6/QLt2YBT9NFXo5V4TZ8nXgsN51mMvAmS/Z2bpNUeU8ysyvN7Mup\\necNYsrfpS0RNyUew1Byngm1K6ZLHycy6mdm+xJg0TywNx6h4m1KzuuQxAq4A7nL3h9ITl4Zj1Zaq\\nx1GQxfIUcAgRla4K/AoYZ2YbEz80p/qXYy1JKtmGfsD85A8pK82S5h9EFeEUYF3gPOBeM9vS49ag\\nP0voNpmZEVWej3l+XJIufZwytgm64HFK/vafJIbT/ZS445xsZlvSRY9R1jYls7vcMQJIAp7/JS74\\nxbr031MlFCh0IHdPj6n9opk9A7wB7ANM6pxSSVvc/dbU15fM7AXgNWAbogpySXYlsCHw/zq7IHVU\\ncpu66HGaBAwB+hAj1o42s607t0iLreQ2ufukrniMzGwNIjDdzt0XdHZ5OoOaHjqRu88EXgEGES/A\\nMqp/OdaSpJJtmAYsa2a9y6RZorn///bunzWKIAzA+DMBjaDYhGilhyDYKBHsbKKWgvgN/AqxsrGx\\nstBSwUasRAsbS1GxEbuoZboLWKidhWDEXBiLdw+O8+b+VLtjnh9MccwU8/LesO/uzjJ5mzggbbir\\nuZMxpZQeAleBSznnbyNd1eZpSkz/qCFPOedBzrmfc/6cc75NbJLboOIcTYlp0tjO54h4HbIKfEop\\n7aaUdoF1YCOl9Id4KlBlruZlodCilNIRYoF8bRbMd+JwrGH/UWKX91wHd7Rtzhg+AoOxMWeAk0w5\\nBKxLmjuMFWB4oepcTM0F9TpwOef8ZbSv1jxNi6kwvvN5mmAJWK41RwVLwPKkjkpy9BY4R7x6WGva\\nJvAUWMs59/l/cjVZ27sp91MD7hOfxfSAi8AbohpdafpvETuErxF/zJfEuRcH2577SAyHiYVyntix\\ne7P5fWLeGIhHx9vE48YLwAfgfRdjavruEYu+Ryz0TWALONDFmJq5/CA+KTw+0g6NjKkqT7NiqjRP\\nd5t4esBZ4n39ALhSY45mxVRjjqbEOf7VQ3W5WijetiewnxrwnDgUa4fY7foMODU25g7xqc0v4pzw\\n023Pe2x+68TFdG+sPZk3BuLu4gHxyPEn8AI41sWYiA1Zr4g7ht9AH3gErHY1pkIse8CNRf5rNcVU\\naZ4eN/Pcaeb9mqZIqDFHs2KqMUdT4nzHSKFQY64WaR4KJUmSityjIEmSiiwUJElSkYWCJEkqslCQ\\nJElFFgqSJKnIQkGSJBVZKEiSpCILBUmSVGShIEmSiiwUJElSkYWCJEkq+guvGydXEAef3wAAAABJ\\nRU5ErkJggg==\\n\",\n      \"text/plain\": [\n       \"<matplotlib.figure.Figure at 0x7f81e83cdcf8>\"\n      ]\n     },\n     \"metadata\": {},\n     \"output_type\": \"display_data\"\n    }\n   ],\n   \"source\": [\n    \"plot_errors_per_frame_4DMaja_synthetic(errors, method_name)\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.5.3\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 1\n}\n"
  },
  {
    "path": "evaluation/eos.py",
    "content": "from functools import lru_cache\nfrom pathlib import Path\n\nimport menpo.io as mio\nfrom menpo.shape import ColouredTriMesh\n\nTHIS_DIR = Path(__file__).parent\n\n\n\n@lru_cache()\ndef load_eos_low_res_lm_index():\n    return mio.import_pickle(\n        THIS_DIR / 'eos_landmark_settings.pkl')['ibug_49_index']\n\n\n@lru_cache()\ndef load_basel_kf_trilist():\n    return mio.import_pickle(THIS_DIR / 'trilist.pkl')\n\n\n@lru_cache()\ndef load_fw_on_eos_low_res_settings():\n    d = mio.import_pickle(THIS_DIR / 'fw_on_eos_low_res_settings.pkl')\n    bc_fw_on_eos_low_res = d['bc_fw_on_eos_low_res']\n    tri_index_fw_on_eos_low_res = d['tri_index_fw_on_eos_low_res']\n    return bc_fw_on_eos_low_res, tri_index_fw_on_eos_low_res\n\n\ndef upsample_eos_low_res_to_fw_no_texture(eos_mesh_low_res):\n    bc_fw_on_eos_low_res, tri_index_fw_on_eos_low_res = load_fw_on_eos_low_res_settings()\n    effective_fw_pc = eos_mesh_low_res.project_barycentric_coordinates(\n        bc_fw_on_eos_low_res, tri_index_fw_on_eos_low_res)\n\n    effective_fw = ColouredTriMesh(effective_fw_pc.points,\n                                   trilist=load_basel_kf_trilist())\n    return effective_fw\n"
  },
  {
    "path": "evaluation/kfeval.py",
    "content": "# Extract key landmarks and build a per-vertex inclusion mask\n# (as we only want to evaluate on the inner region of the face)\nimport numpy as np\n\nfrom menpo.landmark import face_ibug_49_to_face_ibug_49\nfrom menpo.shape import PointCloud\nfrom menpo.transform import AlignmentSimilarity\nfrom menpo3d.vtkutils import VTKClosestPointLocator, trimesh_to_vtk\n\n\ndef landmark_and_mask_gt_mesh(gt_mesh, distance=1):\n    gt_mesh.landmarks['ibug49'] = face_ibug_49_to_face_ibug_49(\n        gt_mesh.landmarks['ibug49'])\n    gt_mesh.landmarks['nosetip'] = PointCloud(\n        gt_mesh.landmarks['ibug49'].get_label('nose').points[-5][None, :])\n    gt_mesh.landmarks['eye_corners'] = PointCloud(\n        gt_mesh.landmarks['ibug49'].points[[36 - 17, 45 - 17]])\n    eval_mask = gt_mesh.distance_to(\n        gt_mesh.landmarks['nosetip']).ravel() < distance\n    return gt_mesh, eval_mask\n\n\n# Dense procrustes align before we compute any error\ndef align_dense_fit_to_gt(fit_3d, gt_mesh):\n    return AlignmentSimilarity(fit_3d, gt_mesh).apply(fit_3d)\n\n\ndef calculate_dense_error(fit_3d_aligned, gt_mesh):\n    fit_vtk = trimesh_to_vtk(fit_3d_aligned)\n    closest_points_on_fit = VTKClosestPointLocator(fit_vtk)\n    # for each vertex on the ground truth, find the nearest distance\n    # to the aligned fit.\n    nearest_points, tri_indices = closest_points_on_fit(gt_mesh.points)\n    err_per_vertex = np.sqrt(np.sum((nearest_points -\n                                     gt_mesh.points) ** 2, axis=1))\n\n    # normalize by inter-oc\n    b, a = gt_mesh.landmarks['eye_corners'].points\n    inter_occ_distance = np.sqrt(((a - b) ** 2).sum())\n    # print('norm: {}'.format(inter_occ_distance))\n    return err_per_vertex / inter_occ_distance\n\n\ndef mask_align_and_calculate_dense_error(fit_3d, gt_mesh, mask):\n    fit_3d_masked = fit_3d.from_mask(mask)\n    gt_mesh_masked = gt_mesh.from_mask(mask)\n\n    fit_3d_masked_aligned = align_dense_fit_to_gt(\n        fit_3d_masked,\n        gt_mesh_masked\n    )\n\n    return (calculate_dense_error(fit_3d_masked_aligned, gt_mesh_masked),\n            fit_3d_masked_aligned, gt_mesh_masked)\n"
  },
  {
    "path": "itwmm/__init__.py",
    "content": "from .base import instance_for_params\nfrom .fitting import (fit_image, fit_video, initialize_camera_from_params,\n                      initialize_camera)\nfrom .model import generate_texture_model_from_image_3d_fits\nfrom .visualize import (render_initialization, render_iteration,\n                        render_overlay_of_mesh_in_img)\n"
  },
  {
    "path": "itwmm/base.py",
    "content": "import numpy as np\n\nfrom menpo.base import copy_landmarks_and_path\nfrom menpo.shape import ColouredTriMesh\n\n\ndef as_colouredtrimesh(self, colours=None, copy=True):\n    \"\"\"\n    Converts this to a :map:`ColouredTriMesh`.\n\n    Parameters\n    ----------\n    colours : ``(N, 3)`` `ndarray`, optional\n        The floating point RGB colour per vertex. If not given, grey will be\n        assigned to each vertex.\n    copy : `bool`, optional\n        If ``True``, the graph will be a copy.\n\n    Returns\n    -------\n    coloured : :map:`ColouredTriMesh`\n        A version of this mesh with per-vertex colour assigned.\n    \"\"\"\n    ctm = ColouredTriMesh(self.points, trilist=self.trilist,\n                          colours=colours, copy=copy)\n    return copy_landmarks_and_path(self, ctm)\n\n\ndef instance_for_params(mm, id_ind, exp_ind, template_camera, p, q,\n                        c):\n    shape_params = np.zeros(mm.shape_model.n_active_components)\n    shape_params[id_ind] = p\n    shape_params[exp_ind] = q\n    instance = mm.shape_model.instance(shape_params, normalized_weights=True)\n    camera = template_camera.from_vector(c)\n    instance_in_img = camera.apply(instance)\n    return {\n        'instance': instance,\n        'instance_in_img': instance_in_img,\n        'camera': camera\n    }\n"
  },
  {
    "path": "itwmm/fitting/__init__.py",
    "content": "from .initialization import initialize_camera_from_params, initialize_camera\nfrom .algorithm import (\n    fit_image, fit_video\n)\n"
  },
  {
    "path": "itwmm/fitting/algorithm.py",
    "content": "from collections import defaultdict\nfrom datetime import timedelta\nfrom time import time\n\nimport numpy as np\nfrom scipy import sparse as sp\n\nfrom menpo.visualize import bytes_str, print_progress\n\nfrom .base import gradient_xy, camera_parameters_update\nfrom .hessian import (initialize_hessian_and_JTe, insert_frame_to_H,\n                      insert_frame_to_JTe)\nfrom .jacobian import jacobians\n\n\ndef increment_parameters(images, mm, id_indices, exp_indices, template_camera,\n                         p, qs, cs,\n                         c_f=1, c_l=1, c_id=1, c_exp=1, c_sm=1,\n                         lm_group=None, n_samples=1000,\n                         compute_costs=True):\n\n    n_frames = len(images)\n    n_points = mm.shape_model.template_instance.n_points\n    n_p = len(id_indices)\n    n_q = len(exp_indices)\n    n_c = cs.shape[1] - 2  # sub one for quaternion, one for focal length\n\n    print('Precomputing....')\n    # Rescale shape components to have size:\n    # n_points x (n_components * n_dims)\n    # and to be scaled by the relevant standard deviation.\n    shape_pc = (\n            mm.shape_model.components.T *\n            np.sqrt(mm.shape_model.eigenvalues)\n    ).reshape([n_points, -1])\n    # include std.dev in principal components\n    shape_pc_lms = shape_pc.reshape([n_points, 3, -1])[mm.model_landmarks_index]\n\n    print('Initializing Hessian/JTe for frame...')\n    H, JTe = initialize_hessian_and_JTe(c_id, c_exp, c_sm, n_p, n_q, n_c, p, qs,\n                                        n_frames)\n    print('H: {} ({})'.format(H.shape, bytes_str(H.nbytes)))\n\n    if compute_costs:\n        costs = defaultdict(list)\n\n    for (f, image), c, q in zip(enumerate(print_progress(\n            images, prefix='Incrementing H/JTe')), cs, qs):\n\n        # Form the overall shape parameter: [p, q]\n        s = np.zeros(mm.shape_model.n_active_components)\n        s[id_indices] = p\n        s[exp_indices] = q\n\n        # In our error we consider landmarks stored [x, y] - so flip here.\n        lms_points_xy = image.landmarks[lm_group].points[:, [1, 0]]\n\n        # Compute input image gradient\n        grad_x, grad_y = gradient_xy(image)\n\n        j = jacobians(s, c, image, lms_points_xy, mm, id_indices, exp_indices,\n                      template_camera, grad_x, grad_y, shape_pc, shape_pc_lms,\n                      n_samples, compute_costs=compute_costs)\n        insert_frame_to_H(H, j, f, n_p, n_q, n_c, c_f, c_l, n_frames)\n        insert_frame_to_JTe(JTe, j, f, n_p, n_q, n_c, c_f, c_l, n_frames)\n\n        if compute_costs:\n            for cost, val in j['costs'].items():\n                costs[cost].append(val)\n\n    print('Converting Hessian to sparse format')\n    H = sp.csr_matrix(H)\n    print(\"Sparsity (prop. 0's) of H: {:.2%}\".format(\n        1 - (H.count_nonzero() / np.prod(np.array(H.shape)))))\n    print('Solving for parameter update')\n    d = sp.linalg.spsolve(H, JTe)\n    dp = d[:n_p]\n    dqs = d[n_p:(n_p + (n_frames * n_q))].reshape([n_frames, n_q])\n    dcs = d[-(n_frames * n_c):].reshape([n_frames, n_c])\n    # Add the focal length and degenerate quaternion parameters back on as\n    # null delta updates\n    dcs = np.hstack([np.tile(np.array([0, 1]), (n_frames, 1)), dcs])\n\n    new_p = p + dp\n    new_qs = qs + dqs\n    new_cs = np.array([camera_parameters_update(c, dc)\n                       for c, dc in zip(cs, dcs)])\n\n    params = {\n        'p': new_p,\n        'qs': new_qs,\n        'cs': new_cs,\n        'dp': dp,\n        'dqs': dqs,\n        'dcs': dcs,\n    }\n\n    if compute_costs:\n        c = {k: np.array(v) for k, v in costs.items()}\n\n        err_s_id = (p ** 2).sum()\n        err_s_exp = (qs ** 2).sum()\n        err_sm = ((qs[:-2] - 2 * qs[1:-1] + qs[2:]) ** 2).sum()\n\n        err_f_tot = c['err_f'].sum() * c_f / (n_c * n_samples)\n        err_l_tot = c['err_l'].sum()\n\n        total_energy = (err_f_tot +\n                        c_l * err_l_tot +\n                        c_id * err_s_id +\n                        c_exp * err_s_exp +\n                        c_sm * err_sm)\n\n        c['total_energy'] = total_energy\n        c['err_s_id'] = (c_id, err_s_id)\n        c['err_s_exp'] = (c_exp, err_s_exp)\n        c['err_sm'] = (c_sm, err_sm)\n        c['err_f_tot'] = err_f_tot\n        c['err_l_tot'] = (c_l, err_l_tot)\n\n        print_cost_dict(c)\n\n        params['costs'] = c\n    return params\n\n\ndef fit_video(images, mm, id_indices, exp_indices, template_camera,\n              p, qs, cs, c_f=1, c_l=1, c_id=1, c_exp=1, c_sm=1, lm_group=None,\n              n_samples=1000, n_iters=10, compute_costs=True):\n    params = [\n        {\n            \"p\": p,\n            \"qs\": qs,\n            \"cs\": cs\n        }]\n\n    for i in range(1, n_iters + 1):\n        print('{} / {}'.format(i, n_iters))\n        # retrieve the last used parameters and pass them into the increment\n        l = params[-1]\n        t1 = time()\n        incs = increment_parameters(images, mm, id_indices, exp_indices,\n                                    template_camera, l['p'], l['qs'], l['cs'],\n                                    c_f=c_f, c_l=c_l, c_id=c_id, c_exp=c_exp,\n                                    c_sm=c_sm,\n                                    lm_group=lm_group, n_samples=n_samples,\n                                    compute_costs=compute_costs)\n        # update the parameter list\n        params.append(incs)\n        # And report the time taken for the iteration.\n        dt = int(time() - t1)\n        print('Iteration {} complete in {}\\n'.format(i, timedelta(seconds=dt)))\n    return params\n\n\ndef fit_image(image, mm, id_indices, exp_indices, template_camera,\n              p, q, c, c_f=1, c_l=1, c_id=1, c_exp=1, lm_group=None,\n              n_samples=1000, n_iters=10, compute_costs=True):\n    # fit image is the same as fit_video, just for a single length video.\n    return fit_video(\n        [image], mm, id_indices, exp_indices, template_camera,\n        p, q[None, :], c[None, :], c_f=c_f, c_l=c_l,\n        c_id=c_id, c_exp=c_exp, c_sm=0, lm_group=lm_group,\n        n_samples=n_samples, n_iters=n_iters, compute_costs=compute_costs\n    )\n\n\ndef print_single_cost(k, c, tot):\n    if isinstance(c, tuple):\n        key = '{:03.0%} | {:>12}'.format((c[0] * c[1]) / tot, k)\n        val = '{:>12.2f} x {:>12.2f} = {:.2f}'.format(c[0], c[1], c[0] * c[1])\n    else:\n        key = '{:03.0%} | {:>12}'.format(c / tot, k)\n        val = '{:.2f}'.format(c)\n    print('{:>20}: {}'.format(key, val))\n\n\ndef print_cost_dict(d):\n    print('------------------------------------------------------------------')\n    print_single_cost('total_energy', d['total_energy'], d['total_energy'])\n    print('------------------------------------------------------------------')\n    for k in ['err_f_tot', 'err_l_tot', 'err_s_id',\n              'err_s_exp', 'err_sm']:\n        print_single_cost(k, d[k], d['total_energy'])\n    print('------------------------------------------------------------------')\n    for k in ['err_f', 'err_l']:\n        print('{} (median over frames): {:.2f}'.format(k, np.median(d[k])))\n    print('------------------------------------------------------------------')\n"
  },
  {
    "path": "itwmm/fitting/base.py",
    "content": "import numpy as np\n\nfrom menpo.feature import gradient as fast_gradient\nfrom menpo.image import Image\nfrom menpo3d.rasterize import rasterize_barycentric_coordinates\n\n\ndef camera_parameters_update(c, dc):\n    # Add for focal length and translation parameters, but multiply for\n    # quaternions\n    # supress focal length optimisation\n    dc[0] = 0\n    # Always lock the first quaternion value to 1\n    dc[1] = 1\n    new = c + dc\n    new[1:5] = quaternion_multiply(c[1:5], dc[1:5])\n    return new\n\n\ndef quaternion_multiply(current_q, increment_q):\n    # Make sure that the q increment has unit norm\n    increment_q /= np.linalg.norm(increment_q)\n    # Update\n    w0, x0, y0, z0 = current_q\n    w1, x1, y1, z1 = increment_q\n    return np.array([-x1*x0 - y1*y0 - z1*z0 + w1*w0,\n                      x1*w0 + y1*z0 - z1*y0 + w1*x0,\n                     -x1*z0 + y1*w0 + z1*x0 + w1*y0,\n                      x1*y0 - y1*x0 + z1*w0 + w1*z0], dtype=np.float64)\n\n\ndef gradient_xy(image):\n    # Compute the gradient of the image\n    grad = fast_gradient(image)\n\n    # Slice off the gradient for X and Y separately\n    grad_y = Image(grad.pixels[:image.n_channels])\n    grad_x = Image(grad.pixels[image.n_channels:])\n\n    return grad_x, grad_y\n\n\ndef sample_at_bc_vi(x, bcoords, vertex_indices):\n    per_vertex_per_pixel = x[vertex_indices]\n    return np.sum(per_vertex_per_pixel * bcoords[..., None], axis=1)\n\n\ndef visible_sample_points(instance_in_img, image_shape, n_samples):\n    # Inverse rendering\n    yx, bcoords, tri_indices = rasterize_barycentric_coordinates(\n        instance_in_img, image_shape)\n\n    # Select triangles randomly\n    rand = np.random.permutation(bcoords.shape[0])\n    bcoords = bcoords[rand[:n_samples]]\n    yx = yx[rand[:n_samples]]\n    tri_indices = tri_indices[rand[:n_samples]]\n\n    # Build the vertex indices (3 per pixel) for the visible triangles\n    vertex_indices = instance_in_img.trilist[tri_indices]\n\n    return vertex_indices, bcoords, tri_indices, yx\n"
  },
  {
    "path": "itwmm/fitting/derivatives.py",
    "content": "import numpy as np\n\nfrom menpo3d.camera import PerspectiveCamera, OrthographicCamera\n\n\ndef d_perspective_camera_d_shape_parameters(shape_pc_uv, warped_uv, camera):\n    \"\"\"\n    Calculates the derivative of the perspective projection with respect to the\n    shape parameters.\n\n    Parameters\n    ----------\n    shape_pc_uv : ``(n_points, 3, n_parameters)`` `ndarray`\n        The (sampled) basis of the shape model.\n    warped_uv : ``(n_points, 3)`` `ndarray`\n        The shape instance with the view transform (rotation and translation)\n        applied on it.\n    camera : `menpo3d.camera.PerspectiveCamera`\n        The camera object that is responsible of projecting the model to the\n        image plane.\n\n    Returns\n    -------\n    dw_da : ``(2, n_shape_parameters, n_points)`` `ndarray`\n        The derivative of the perspective camera transform with respect to\n        the shape parameters.\n    \"\"\"\n    n_points, n_dims, n_parameters = shape_pc_uv.shape\n    assert n_dims == 3\n\n    # Compute constant\n    # (focal length divided by squared Z dimension of warped shape)\n    z_inv = 1 / warped_uv[:, 2]\n\n    # 3 x n_c x n_samples\n    dw_da = camera.rotation_transform.apply(shape_pc_uv.transpose(0, 2, 1)).T\n\n    dw_da[:2] -= warped_uv[:, :2].T[:, None] * dw_da[2] * z_inv\n\n    return camera.projection_transform.focal_length * dw_da[:2] * z_inv\n\n\ndef d_orthographic_camera_d_shape_parameters(shape_pc_uv, camera):\n    \"\"\"\n    Calculates the derivative of the orthographic projection with respect to\n    the shape parameters.\n\n    Parameters\n    ----------\n    shape_pc_uv : ``(n_points, 3, n_parameters)`` `ndarray`\n        The (sampled) basis of the shape model.\n    camera : `menpo3d.camera.OrthographicCamera`\n        The camera object that is responsible of projecting the model to the\n        image plane.\n\n    Returns\n    -------\n    dw_da : ``(2, n_shape_parameters, n_points)`` `ndarray`\n        The derivative of the perspective camera transform with respect to\n        the shape parameters.\n    \"\"\"\n    n_points, n_dims, n_parameters = shape_pc_uv.shape\n    assert n_dims == 3\n\n    # n_dims, n_parameters, n_points\n    dp_da_uv = camera.rotation_transform.apply(shape_pc_uv.transpose(0, 2, 1)).T\n\n    return camera.projection_transform.focal_length * dp_da_uv[:2]\n\n\ndef d_camera_d_shape_parameters(camera, warped_uv, shape_pc_uv):\n    if camera.__class__ == PerspectiveCamera:\n        dp_da = d_perspective_camera_d_shape_parameters(shape_pc_uv, warped_uv,\n                                                        camera)\n    elif camera.__class__ == OrthographicCamera:\n        dp_da = d_orthographic_camera_d_shape_parameters(shape_pc_uv, camera)\n    else:\n        raise ValueError(\"Camera must be either Perspective or \"\n                         \"Orthographic.\")\n    return dp_da\n\n\ndef d_perspective_camera_d_camera_parameters(warped_uv, camera,\n                                             with_focal_length=True,\n                                             with_first_quaternion=False):\n    \"\"\"\n    Calculates the derivative of the perspective projection with respect to the\n    camera parameters.\n\n    Parameters\n    ----------\n    warped_uv : ``(n_points, 3)`` `ndarray`\n        The shape instance with the view transform (rotation and translation)\n        applied on it.\n    camera : `menpo3d.camera.PerspectiveCamera`\n        The camera object that is responsible of projecting the model to the\n        image plane.\n    with_focal_length : `bool`, optional\n        If ``False``, then the derivative with respect to the focal length\n        parameter won't be returned.\n    with_first_quaternion : `bool`, optional\n        If ``False``, then the derivative with respect to the first\n        quaternion parameter won't be returned.\n\n    Returns\n    -------\n    dw_dr : ``(2, n_parameters, n_points)`` `ndarray`\n        The derivative of the perspective camera transform with respect to\n        the camera parameters.\n    \"\"\"\n    n_points, n_dims = warped_uv.shape\n    assert n_dims == 3\n\n    # Find total number of parameters\n    n_parameters = camera.n_parameters\n    if not with_focal_length:\n        n_parameters -= 1\n    if not with_first_quaternion:\n        n_parameters -= 1\n\n    # Initialize derivative\n    dw_dr = np.zeros((2, n_parameters, n_points))\n\n    # Initialize parameter counter\n    r = 0\n\n    # Get z-component of warped\n    z = warped_uv[:, 2]\n\n    # Focal length, if requested\n    if with_focal_length:\n        dw_dr[:, r] = (warped_uv[:, :2] / z[..., None]).T\n        r += 1\n\n    # Quaternions\n    centered_warped_uv = camera.translation_transform.pseudoinverse().apply(\n        warped_uv).T\n    # q_1, if requested\n    if with_first_quaternion:\n        r0 = 2 * np.array([[1, 0, 0],\n                           [0, 1, 0],\n                           [0, 0, 1]]).dot(centered_warped_uv).T\n        dw_dr[:, r] = r0[:, :2].T - r0[:, 2] * warped_uv[:, :2].T / z\n        r += 1\n\n    # q_2\n    r1 = 2 * np.array([[0, 0,  0],\n                       [0, 0, -1],\n                       [0, 1,  0]]).dot(centered_warped_uv).T\n    dw_dr[:, r] = r1[:, :2].T - r1[:, 2] * warped_uv[:, :2].T / z\n    r += 1\n\n    # q_3\n    r2 = 2 * np.array([[ 0, 0, 1],\n                       [ 0, 0, 0],\n                       [-1, 0, 0]]).dot(centered_warped_uv).T\n    dw_dr[:, r] = r2[:, :2].T - r2[:, 2] * warped_uv[:, :2].T / z\n    r += 1\n\n    # q_4\n    r3 = 2 * np.array([[0, -1, 0],\n                       [1,  0, 0],\n                       [0,  0, 0]]).dot(centered_warped_uv).T\n    dw_dr[:, r] = r3[:, :2].T - r3[:, 2] * warped_uv[:, :2].T / z\n    r += 1\n\n    # constant multiplication\n    i1 = 1 if with_focal_length else 0\n    i2 = i1 + 4 if with_first_quaternion else i1 + 3\n    dw_dr[:, i1:i2] *= camera.projection_transform.focal_length / z\n\n    # Translations\n    # t_x\n    dw_dr[0, r] = camera.projection_transform.focal_length / z\n    r += 1\n    # t_y\n    dw_dr[1, r] = camera.projection_transform.focal_length / z\n    r += 1\n    # t_z\n    dw_dr[:, r] = (- camera.projection_transform.focal_length *\n                   warped_uv[:, :2] / z[..., None] ** 2).T\n\n    return dw_dr\n\n\ndef d_orthographic_camera_d_camera_parameters(warped_uv, camera,\n                                              with_focal_length=True,\n                                              with_first_quaternion=False):\n    \"\"\"\n    Calculates the derivative of the orthographic projection with respect to the\n    camera parameters.\n\n    Parameters\n    ----------\n    warped_uv : ``(n_points, 3)`` `ndarray`\n        The shape instance with the view transform (rotation and translation)\n        applied on it.\n    camera : `menpo3d.camera.PerspectiveCamera`\n        The camera object that is responsible of projecting the model to the\n        image plane.\n    with_focal_length : `bool`, optional\n        If ``False``, then the derivative with respect to the focal length\n        parameter won't be returned.\n    with_first_quaternion : `bool`, optional\n        If ``False``, then the derivative with respect to the first\n        quaternion parameter won't be returned.\n\n    Returns\n    -------\n    dw_dr : ``(2, n_parameters, n_points)`` `ndarray`\n        The derivative of the orthographic camera transform with respect to\n        the camera parameters.\n    \"\"\"\n    n_points, n_dims = warped_uv.shape\n    assert n_dims == 3\n\n    # Find total number of parameters\n    n_parameters = camera.n_parameters\n    if not with_focal_length:\n        n_parameters -= 1\n    if not with_first_quaternion:\n        n_parameters -= 1\n\n    # Initialize derivative\n    dw_dr = np.zeros((2, n_parameters, n_points))\n\n    # Initialize parameter counter\n    r = 0\n\n    # Focal length, if requested\n    if with_focal_length:\n        dw_dr[:, r] = warped_uv[:, :2].T\n        r += 1\n\n    # Quaternions\n    centered_warped_uv = camera.translation_transform.pseudoinverse().apply(\n        warped_uv).T\n\n    # q_1, if requested\n    if with_first_quaternion:\n        r0 = 2 * np.array([[1, 0, 0],\n                           [0, 1, 0],\n                           [0, 0, 1]]).dot(centered_warped_uv).T\n        dw_dr[:, r] = camera.projection_transform.focal_length * r0[:, :2].T\n        r += 1\n\n    # q_2\n    r1 = 2 * np.array([[0, 0,  0],\n                       [0, 0, -1],\n                       [0, 1,  0]]).dot(centered_warped_uv).T\n    dw_dr[:, r] = camera.projection_transform.focal_length * r1[:, :2].T\n    r += 1\n\n    # q_3\n    r2 = 2 * np.array([[ 0, 0, 1],\n                       [ 0, 0, 0],\n                       [-1, 0, 0]]).dot(centered_warped_uv).T\n    dw_dr[:, r] = camera.projection_transform.focal_length * r2[:, :2].T\n    r += 1\n\n    # q_4\n    r3 = 2 * np.array([[0, -1, 0],\n                       [1,  0, 0],\n                       [0,  0, 0]]).dot(centered_warped_uv).T\n    dw_dr[:, r] = camera.projection_transform.focal_length * r3[:, :2].T\n    r += 1\n\n    # Translations\n    # t_x\n    dw_dr[0, r] = camera.projection_transform.focal_length\n    r += 1\n\n    # t_y\n    dw_dr[1, r] = camera.projection_transform.focal_length\n    r += 1\n\n    return dw_dr\n\n\ndef d_camera_d_camera_parameters(camera, warped_uv, with_focal_length):\n    if camera.__class__ == PerspectiveCamera:\n        dp_dr = d_perspective_camera_d_camera_parameters(\n            warped_uv, camera, with_focal_length=with_focal_length,\n            with_first_quaternion=False)\n    elif camera.__class__ == OrthographicCamera:\n        dp_dr = d_orthographic_camera_d_camera_parameters(\n            warped_uv, camera, with_focal_length=with_focal_length,\n            with_first_quaternion=False)\n    else:\n        raise ValueError(\"Camera must be either Perspective or \"\n                         \"Orthographic.\")\n    return dp_dr\n"
  },
  {
    "path": "itwmm/fitting/hessian.py",
    "content": "import numpy as np\n\n\ndef smoothing_kernel(n_frames):\n    A = np.eye(n_frames - 2, n_frames)\n    i, j = np.diag_indices(n_frames - 2)\n\n    A[i, j + 1] = -2\n    A[i, j + 2] = 1\n    return A\n\n\n# -------------------------- HESSIAN INITIALIZATION ------------------------- #\n# Functions needed to construct the per-iteration ITW-V video Hessian object.\ndef insert_id_constraint(H, c_id, n_p):\n    H_id = H[:n_p, :n_p]\n    np.fill_diagonal(H_id, np.diag(H_id) + c_id)\n\n\ndef insert_exp_constraint(H, c_exp, n_p, n_q, n_frames):\n    i_offset = n_p\n    j_offset = n_p\n\n    size = n_q * n_frames\n    exp_const = np.diag(np.repeat(c_exp, size))\n    H[i_offset:i_offset + size, j_offset:j_offset + size] = exp_const\n\n\ndef insert_smoothness_constraint(H, c_sm, n_p, n_q, n_frames):\n    s = smoothing_kernel(n_frames)\n    s_h = s.T.dot(s)\n\n    B = np.eye(n_q) * c_sm\n    smoothing = np.kron(s_h, B)\n    H[n_p:(n_p + n_q * n_frames), n_p:(n_p + n_q * n_frames)] += smoothing\n\n\n# ----------------------- J.T.dot(e) INITIALIZATION  ------------------------- #\ndef insert_id_constraint_to_JTe(JTe, p, c_id, n_p):\n    JTe[:n_p] += -c_id * p\n\n\ndef insert_exp_constraint_to_JTe(JTe, qs, c_exp, n_p, n_q, n_frames):\n    size = n_q * n_frames\n    JTe[n_p:n_p + size] += - c_exp * qs.ravel()\n\n\ndef insert_smoothness_constraint_to_JTe(JTe, qs, c_sm, n_p, n_q, n_frames):\n    s = smoothing_kernel(n_frames)\n    # Analytically we can observe that the pattern of selection of terms in\n    # JTe for the smoothing is the 2nd order central difference scheme formed\n    # in the Hessian (s.T.dot(s)) - form this matrix here to select the qs as\n    #  we want\n    s_h = s.T.dot(s)\n    # n_frames x n_frames @ n_frames x n_q = n_frames x n_q\n    # ravelling this back preserves per-frame ordering of q in JTe.\n    JTe_smoothing = s_h.dot(qs).ravel()\n    JTe[n_p:n_p + n_frames * n_q] += - c_sm * JTe_smoothing\n\n\n# -------------------------- TOTAL INITIALIZATION ---------------------------- #\ndef initialize_hessian_and_JTe(c_id, c_exp, c_sm, n_p, n_q, n_c, p, qs,\n                               n_frames):\n    n = n_p + n_frames * n_q + n_frames * n_c\n    H = np.zeros((n, n))\n    insert_id_constraint(H, c_id, n_p)\n    insert_exp_constraint(H, c_exp, n_p, n_q, n_frames)\n    if n_frames >= 3:\n        insert_smoothness_constraint(H, c_sm, n_p, n_q, n_frames)\n    else:\n        print('This video has only {} frames, cannot include smoothing term '\n              'in H/JTe.'\n              .format(n_frames))\n\n    # The J.T.dot(e) term is always the size of the Hessian w/h (n total params)\n    JTe = np.zeros(n)\n    insert_id_constraint_to_JTe(JTe, p, c_id, n_p)\n    insert_exp_constraint_to_JTe(JTe, qs, c_exp, n_p, n_q, n_frames)\n\n\n    if n_frames >= 3:\n        insert_smoothness_constraint_to_JTe(JTe, qs, c_sm, n_p, n_q, n_frames)\n    return H, JTe\n\n\n# -------------------------- PER-FRAME UPDATES  ------------------------------ #\n\ndef insert_frame_to_H(H, j, f, n_p, n_q, n_c, c_f, c_l, n_frames):\n\n    # normalize data term contributions by n_channels x n_pixels\n    # otherwise scales of all other constants need to be n_channels x n_pixels\n    # to compensate\n    c_f = c_f / j['J_f_p'].shape[0]\n\n    pp = c_f * j['J_f_p'].T @ j['J_f_p'] + c_l * j['J_l_p'].T @ j['J_l_p']\n    qq = c_f * j['J_f_q'].T @ j['J_f_q'] + c_l * j['J_l_q'].T @ j['J_l_q']\n    cc = c_f * j['J_f_c'].T @ j['J_f_c'] + c_l * j['J_l_c'].T @ j['J_l_c']\n\n    pq = c_f * j['J_f_p'].T @ j['J_f_q'] + c_l * j['J_l_p'].T @ j['J_l_q']\n    pc = c_f * j['J_f_p'].T @ j['J_f_c'] + c_l * j['J_l_p'].T @ j['J_l_c']\n\n    qc = c_f * j['J_f_q'].T @ j['J_f_c'] + c_l * j['J_l_q'].T @ j['J_l_c']\n\n    # Find the right offset into the Hessian for Q/C (which are per-frame\n    # terms). Note that p terms always sum, so no per-frame offset needed.\n    offset_q = n_p + f * n_q\n    offset_c = n_p + n_frames * n_q + f * n_c\n\n    # 1. Update the terms along the block diagonal of the Hessian\n    H[:n_p, :n_p] += pp\n    H[offset_q:offset_q + n_q, offset_q:offset_q + n_q] += qq\n    H[offset_c:offset_c + n_c, offset_c:offset_c + n_c] += cc\n\n    # 2. Update terms at the off diagonal. Each time we can immediately fill\n    # in the symmetric part of the term (as we know the Hessian is symmetric).\n    H[:n_p, offset_q:offset_q + n_q] += pq\n    H[offset_q:offset_q + n_q, :n_p] += pq.T\n\n    H[:n_p, offset_c:offset_c + n_c] += pc\n    H[offset_c:offset_c + n_c, :n_p] += pc.T\n\n    H[offset_q:offset_q + n_q, offset_c:offset_c + n_c] += qc\n    H[offset_c:offset_c + n_c, offset_q:offset_q + n_q] += qc.T\n\n\ndef insert_frame_to_JTe(JTe, j, f, n_p, n_q, n_c, c_f, c_l, n_frames):\n\n    # normalize data term contributions by n_channels x n_pixels\n    # otherwise scales of all other constants need to be n_channels x n_pixels\n    # to compensate\n    c_f = c_f / j['J_f_p'].shape[0]\n\n    JTe_p = c_f * j['J_f_p'].T @ j['e_f'] + c_l * j['J_l_p'].T @ j['e_l']\n    JTe_q = c_f * j['J_f_q'].T @ j['e_f'] + c_l * j['J_l_q'].T @ j['e_l']\n    JTe_c = c_f * j['J_f_c'].T @ j['e_f'] + c_l * j['J_l_c'].T @ j['e_l']\n\n    JTe[:n_p] += JTe_p\n\n    offset_q = n_p + f * n_q\n    JTe[offset_q:offset_q + n_q] += JTe_q\n\n    offset_c = n_p + n_frames * n_q + f * n_c\n    JTe[offset_c:offset_c + n_c] += JTe_c\n"
  },
  {
    "path": "itwmm/fitting/initialization.py",
    "content": "import numpy as np\nfrom menpo.shape import PointCloud\nfrom menpo3d.camera import PerspectiveCamera\n\n\ndef initialize_camera(image, lms_3d, focal_length=None):\n    return PerspectiveCamera.init_from_2d_projected_shape(\n        lms_3d, image.landmarks[None], image.shape, focal_length=focal_length)\n\n\ndef initialize_camera_from_params(image, mm, id_ind, exp_ind,\n                                  p, q, focal_length=None):\n    shape_params = np.zeros(mm.shape_model.n_active_components)\n    shape_params[id_ind] = p\n    shape_params[exp_ind] = q\n    mesh = mm.shape_model.instance(shape_params, normalized_weights=True)\n    lms = PointCloud(mesh.points[mm.model_landmarks_index])\n    return initialize_camera(image, lms, focal_length=focal_length)\n"
  },
  {
    "path": "itwmm/fitting/jacobian.py",
    "content": "import numpy as np\n\nfrom .derivatives import (d_camera_d_shape_parameters,\n                          d_camera_d_camera_parameters)\nfrom .projectout import project_out, sample_uv_terms\n\n\ndef J_data(camera, warped_uv, shape_pc_uv, U_tex_pc, grad_x_uv,\n           grad_y_uv, focal_length_update=False):\n    # Compute derivative of camera wrt shape and camera parameters\n    dp_da_dr = d_camera_d_shape_parameters(camera, warped_uv, shape_pc_uv)\n\n    dp_dr = d_camera_d_camera_parameters(\n        camera, warped_uv, with_focal_length=focal_length_update)\n\n    # stack the shape_parameters/camera_parameters updates\n    dp_da_dr = np.hstack((dp_da_dr, dp_dr))\n\n    # Multiply image gradient with camera derivative\n    permuted_grad_x = np.transpose(grad_x_uv[..., None], (0, 2, 1))\n    permuted_grad_y = np.transpose(grad_y_uv[..., None], (0, 2, 1))\n    J = permuted_grad_x * dp_da_dr[0] + permuted_grad_y * dp_da_dr[1]\n\n    # Project-out\n    n_params = J.shape[1]\n    J = np.transpose(J, (1, 0, 2)).reshape(n_params, -1)\n    return project_out(J, U_tex_pc)\n\n\ndef J_lms(camera, warped_uv, shape_pc_uv, focal_length_update=False):\n    # Compute derivative of camera wrt shape and camera parameters\n    J = d_camera_d_shape_parameters(camera, warped_uv, shape_pc_uv)\n    dp_dr = d_camera_d_camera_parameters(\n        camera, warped_uv, with_focal_length=focal_length_update)\n    J = np.hstack((J, dp_dr))\n\n    # Reshape to : n_params x (2 * N)\n    n_params = J.shape[1]\n    J = np.transpose(J, (1, 0, 2)).reshape(n_params, -1)\n    return J\n\n\ndef jacobians(s, c, image, lms_points_xy, mm, id_ind, exp_ind, template_camera,\n              grad_x, grad_y, shape_pc, shape_pc_lms, n_samples,\n              compute_costs=False):\n\n    instance = mm.shape_model.instance(s, normalized_weights=True)\n    camera = template_camera.from_vector(c)\n\n    (instance_w, instance_in_image, warped_uv, img_error_uv,\n     shape_pc_uv, U_tex_pc, grad_x_uv, grad_y_uv\n     ) = sample_uv_terms(instance, image, camera, mm, shape_pc, grad_x, grad_y,\n                         n_samples)\n\n    # Data term Jacobian\n    JT = J_data(camera, warped_uv, shape_pc_uv, U_tex_pc, grad_x_uv, grad_y_uv)\n\n    # Landmarks term Jacobian\n    # Get projected instance on landmarks and error term\n    warped_lms = instance_in_image.points[mm.model_landmarks_index]\n    lms_error_xy = (lms_points_xy - warped_lms[:, [1, 0]]).T.ravel()\n    warped_view_lms = instance_w[mm.model_landmarks_index]\n    J_lT = J_lms(camera, warped_view_lms, shape_pc_lms)\n\n    # form the main two Jacobians...\n    J_f = JT.T\n    J_l = J_lT.T\n\n    # ...and then slice at the appropriate indices to break down by param type.\n    c_offset = id_ind.shape[0] + exp_ind.shape[0]\n    jacs = {\n        'J_f_p': J_f[:, id_ind],\n        'J_f_q': J_f[:, exp_ind],\n        'J_f_c': J_f[:, c_offset:],\n\n        'J_l_p': J_l[:, id_ind],\n        'J_l_q': J_l[:, exp_ind],\n        'J_l_c': J_l[:, c_offset:],\n\n        'e_f': img_error_uv,\n        'e_l': lms_error_xy\n    }\n\n    if compute_costs:\n        resid_f = project_out(img_error_uv, U_tex_pc)\n        err_f = (resid_f ** 2).sum()\n\n        resid_l = lms_error_xy\n        err_l = (resid_l ** 2).sum()\n\n        jacs['costs'] = {\n            'err_f': err_f,\n            'err_l': err_l\n        }\n\n    return jacs\n"
  },
  {
    "path": "itwmm/fitting/projectout.py",
    "content": "import numpy as np\nfrom .base import sample_at_bc_vi, visible_sample_points\n\n\ndef project_out(J, U, fast_approx=True):\n    tmp = J.dot(U.T if fast_approx else np.linalg.pinv(U))\n    return J - tmp.dot(U)\n\n\ndef sample_uv_terms(instance, image, camera, mm, shape_pc, grad_x, grad_y,\n                    n_samples):\n    # subsample all the terms we need to compute a project out update.\n\n    # Apply camera projection on current instance\n    instance_in_image = camera.apply(instance)\n\n    # Compute indices locations for sampling\n    (vert_indices, bcoords, tri_indices,\n     yx) = visible_sample_points(instance_in_image, image.shape, n_samples)\n\n    # Warp the mesh with the view matrix (rotation + translation)\n    instance_w = camera.view_transform.apply(instance.points)\n\n    # Sample all the terms from the model part at the sample locations\n    warped_uv = sample_at_bc_vi(instance_w, bcoords, vert_indices)\n\n    # n_samples x n_channels x n_texture_comps\n    U_tex_uv = mm.sample_texture_model(bcoords, tri_indices)\n\n    # n_texture_comps x (n_samples * n_channels)\n    U_tex_uv = U_tex_uv.reshape((-1, U_tex_uv.shape[-1])).T\n\n    # n_channels x n_samples\n    m_texture_uv = mm.instance().sample_texture_with_barycentric_coordinates(\n        bcoords, tri_indices).T\n\n    # n_samples x 3 x n_shape_components\n    shape_pc_uv = (sample_at_bc_vi(shape_pc, bcoords, vert_indices)\n                   .reshape([n_samples, 3, -1]))\n\n    # Sample all the terms from the image part at the sample locations\n    # img_uv: (channels, samples)\n    img_uv = image.sample(yx)\n    grad_x_uv = grad_x.sample(yx)\n    grad_y_uv = grad_y.sample(yx)\n\n    # Compute error\n    # img_error_uv: (channels x samples,)\n    img_error_uv = (m_texture_uv - img_uv).ravel()\n\n    return (instance_w, instance_in_image, warped_uv, img_error_uv,\n            shape_pc_uv, U_tex_uv, grad_x_uv, grad_y_uv)\n"
  },
  {
    "path": "itwmm/model/__init__.py",
    "content": "import numpy as np\n\nfrom menpo.model import PCAVectorModel\nfrom menpo.visualize import print_progress\n\nfrom itwmm.base import instance_for_params\n\nfrom .extractimage import extract_per_vertex_colour_with_occlusion\nfrom .math import rpca_missing\n\n\ndef generate_texture_model_from_itwmm(images, mm, id_ind, exp_ind,\n                                      template_camera, p, qs, cs,\n                                      lambda_=0.01,\n                                      n_components=0.99):\n    r\"\"\"Build a new texture model from an existing model and fitting\n    information to a collection of images.\"\"\"\n    n_channels = images[0].n_channels\n    n_features = n_channels * mm.n_vertices\n    n_samples = len(images)\n    X = np.empty((n_samples, n_features), dtype=mm.texture_model.mean().dtype)\n    M = np.empty_like(X, dtype=np.bool)\n    proportion_masked = []\n    for i, (img, q, c) in enumerate(zip(print_progress(images, 'Extracting '\n                                                               'masks and '\n                                                               'features'), qs,\n                                        cs)):\n        i_in_img = instance_for_params(mm, id_ind, exp_ind,\n                                       template_camera,\n                                       p, q, c)['instance_in_img']\n        features, mask = extract_per_vertex_colour_with_occlusion(i_in_img, img)\n        mask_repeated = np.repeat(mask.ravel(), n_channels)\n        X[i] = features.ravel()\n        M[i] = mask_repeated.ravel()\n        proportion_masked.append(mask.sum() / mask.shape[0])\n    print('Extraction concluded. Self-occlusions on average masked {:.0%} of '\n          'vertices.'.format(np.array(proportion_masked).mean()))\n    print('Performing R-PCA to complete missing textures')\n    A, E = rpca_missing(X, M, verbose=True, lambda_=lambda_)\n    print('R-PCA completed. Building PCA model of features on completed '\n          'samples.')\n    model = PCAVectorModel(A, inplace=True)\n    print('Trimming the components to retain only what was required.')\n    model.trim_components(n_components=n_components)\n    return model, X, M\n\n\ndef generate_texture_model_from_image_3d_fits(images_and_fits,\n                                              lambda_=0.01, n_components=0.99):\n    \"\"\"Build an ITW texture model from a list of images with associated dense\n    3D fits (one per image). Note that the input images should already have an\n    image feature taken on them, and have all been resized to a consistent\n    scale.\"\"\"\n    feat_img, fit_2d = images_and_fits[0]\n    n_channels = feat_img.n_channels\n    n_features = n_channels * fit_2d.n_points\n    n_samples = len(images_and_fits)\n    X = np.empty((n_samples, n_features), dtype=feat_img.pixels.dtype)\n    M = np.empty_like(X, dtype=np.bool)\n    proportion_masked = []\n    for i, (img, fit_2d) in enumerate(print_progress(\n            images_and_fits, prefix='Extracting masks & features')):\n        features, mask = extract_per_vertex_colour_with_occlusion(fit_2d, img)\n        mask_repeated = np.repeat(mask.ravel(), n_channels)\n        X[i] = features.ravel()\n        M[i] = mask_repeated.ravel()\n        proportion_masked.append(mask.sum() / mask.shape[0])\n    print('Performing R-PCA to complete missing textures')\n    A, E = rpca_missing(X, M, verbose=True, lambda_=lambda_)\n    print('R-PCA completed. Building PCA model of features on completed '\n          'samples.')\n    model = PCAVectorModel(A, inplace=True)\n    print('Trimming the components to retain only what was required.')\n    model.trim_components(n_components=n_components)\n\n    return model, X, M\n"
  },
  {
    "path": "itwmm/model/extractimage.py",
    "content": "import numpy as np\n\nfrom menpo.shape import PointCloud\nfrom menpo.transform import Scale\nfrom menpo3d.rasterize import (\n    rasterize_shape_image_from_barycentric_coordinate_images,\n    rasterize_barycentric_coordinate_images\n)\n\nfrom itwmm.base import as_colouredtrimesh\n\n\ndef per_vertex_occlusion(mesh_in_img, err_proportion=0.0001, render_diag=600):\n\n    [x_r, y_r, z_r] = mesh_in_img.range()\n    av_xy_r = (x_r + y_r) / 2.0\n\n    rescale = render_diag / np.sqrt((mesh_in_img.range()[:2] ** 2).sum())\n    rescale_z = av_xy_r / z_r\n\n    mesh = Scale([rescale, rescale, rescale * rescale_z]).apply(mesh_in_img)\n    mesh.points[...] = mesh.points - mesh.points.min(axis=0)\n    mesh.points[:, :2] = mesh.points[:, :2] + 2\n    shape = np.round(mesh.points.max(axis=0)[:2] + 2)\n\n    bc, ti = rasterize_barycentric_coordinate_images(mesh, shape)\n    si = rasterize_shape_image_from_barycentric_coordinate_images(\n        as_colouredtrimesh(mesh), bc, ti)\n\n    # err_proportion=0.01 is 1% deviation of total range of 3D shape\n    threshold = render_diag * err_proportion\n    xyz_found = si.as_unmasked().sample(mesh.with_dims([0, 1]), order=1).T\n    err = np.sum((xyz_found - mesh.points) ** 2, axis=1)\n\n    visible = err < threshold\n    return visible\n\n\ndef render_hi_res_shape_image(mesh, render_width=3000):\n    from menpo3d.rasterize import GLRasterizer\n    h, w = mesh.range()[:2]\n    aspect_ratio = w / h\n    height = render_width * aspect_ratio\n\n    r = GLRasterizer(\n        projection_matrix=model_to_clip_transform(mesh).h_matrix,\n        width=render_width, height=height)\n    return r.model_to_image_transform, r.rasterize_mesh_with_shape_image(mesh)[1]\n\n\ndef per_vertex_occlusion_gl_rasterizer(mesh, err_proportion=0.0001,\n                                       err_norm='z', render_width=3000):\n    # Render a high-resolution shape image for visibility testing\n\n    # z scale can be very large for high focal lengths.\n    # ensure z is scaled to match x/y for the purposes of masking.\n    print('scaling down ')\n    [x_r, y_r, z_r] = mesh.range()\n    av_xy_r = (x_r + y_r) / 2.0\n    mesh = Scale([1, 1, av_xy_r / z_r]).apply(mesh)\n\n    model_to_image_transform, shape_image = render_hi_res_shape_image(mesh, render_width=render_width)\n    # err_proportion=0.01 is 1% deviation of total range of 3D shape\n    err_scale = mesh.range()[2].sum() if err_norm == 'z' else np.sqrt(\n        (mesh.range() ** 2).sum())\n    threshold = err_scale * err_proportion\n\n    sample_points_3d = mesh\n    sample_points_2d = model_to_image_transform.apply(sample_points_3d)\n\n    xyz_found = shape_image.as_unmasked().sample(sample_points_2d, order=1).T\n    err = np.sum((xyz_found - sample_points_3d.points) ** 2, axis=1)\n    return err < threshold\n\n\ndef per_vertex_occlusion_accurate(mesh):\n    from menpo3d.vtkutils import trimesh_to_vtk\n    import vtk\n    tol = mesh.mean_edge_length() / 1000\n    min_, max_ = mesh.bounds()\n    z_min = min_[-1] - 10\n    z_max = max_[-1] + 10\n\n    ray_start = mesh.points.copy()\n    ray_end = mesh.points.copy()\n    points = mesh.points\n    ray_start[:, 2] = z_min\n    ray_end[:, 2] = z_max\n\n    vtk_mesh = trimesh_to_vtk(mesh)\n\n    obbTree = vtk.vtkOBBTree()\n    obbTree.SetDataSet(vtk_mesh)\n    obbTree.BuildLocator()\n\n    vtk_points = vtk.vtkPoints()\n    vtk_cellIds = vtk.vtkIdList()\n    bad_val = tuple(ray_start[0])\n    first_intersects = []\n    for start, end, point in zip(ray_start, ray_end, points):\n        start = tuple(start)\n        end = tuple(end)\n        obbTree.IntersectWithLine(start, end, vtk_points, vtk_cellIds)\n        data = vtk_points.GetData()\n        break\n    for start, end, point in zip(ray_start, ray_end, points):\n        start = tuple(start)\n        end = tuple(end)\n        obbTree.IntersectWithLine(start, end, vtk_points, vtk_cellIds)\n        data = vtk_points.GetData()\n        if data.GetNumberOfTuples() > 0:\n            first_intersects.append(data.GetTuple3(0))\n        else:\n            first_intersects.append(bad_val)\n\n    visible = np.linalg.norm(points - np.array(first_intersects), axis=1) < tol\n    return visible\n\n\ndef extract_per_vertex_colour(mesh, image):\n    return image.sample(PointCloud(mesh.points[:, :2])).T\n\n\ndef extract_per_vertex_colour_with_occlusion(mesh, image,\n                                             err_proportion=0.0001,\n                                             render_diag=600):\n    colours = extract_per_vertex_colour(mesh, image)\n    mask = per_vertex_occlusion(mesh,\n                                err_proportion=err_proportion,\n                                render_diag=render_diag)\n    return colours, mask\n\n\ndef extract_per_vertex_features(mesh, image, feature_f, diagonal_range=None):\n    image = image.copy()\n    image.landmarks['mesh_2d'] = mesh.with_dims([0, 1])\n    if diagonal_range is not None:\n        image = image.rescale_landmarks_to_diagonal_range(diagonal_range,\n                                                          group='mesh_2d')\n    feature_image = feature_f(image)\n    return extract_per_vertex_colour(feature_image.landmarks['mesh_2d'],\n                                     feature_image)\n"
  },
  {
    "path": "itwmm/model/math.py",
    "content": "from time import time\n\nimport numpy as np\n\nfrom menpo.visualize import bytes_str\n\n\ndef rpca_missing(X, M, lambda_=None, tol=1e-6, max_iter=1000, verbose=False):\n    r\"\"\"\n    Robust PCA with Missing Values using the inexact augmented Lagrange\n    multiplier method.\n    Parameters\n    ----------\n    X : ``(n_samples, n_features)`` `ndarray`\n        Data matrix.\n    M : ``(n_components, n_features)`` `ndarray` of type `np.bool`\n        Mask matrix. For each element, if ``True`` indicates that the\n        corresponding element in ``X`` is meaningful data. If ``False``\n        the corresponding element in ``X`` is not considered in the\n        calculation.\n    lambda_ : float, optional\n        The weight on sparse error term in the cost function. If ``None``,\n        the heuristic value of ``1 / np.sqrt(n_samples)`` is used.\n    tol : `float`, optional\n        The tolerance for the stopping criterion.\n    max_iter : `float`, optional\n        The maximum allowed number of iterations.\n    verbose : `boolean`, optional\n        If ``True``, details of the progress of the algorithm will be printed\n        every 10 iterations.\n    Returns\n    -------\n    A : ``(n_samples, n_features)`` `ndarray`\n        Low rank reconstruction\n    E : ``(n_samples, n_features)`` `ndarray`\n        Sparse reconstruction\n    \"\"\"\n    m, n = X.shape\n\n    if verbose:\n        print('X {} of type {}: {}'.format(\n            X.shape, X.dtype, bytes_str(X.nbytes)))\n        # Have to allocate 7 arrays (X, Y, A, E, T, Z, V) all of this size\n        # + 4 in temp computations\n        print('Estimated total memory required: {}'.format(bytes_str(X.nbytes\n                                                                     * 11)))\n        t = time()\n\n    if lambda_ is None:\n        lambda_ = 1. / np.sqrt(m)\n\n    norm_fro = np.linalg.norm(X, ord='fro')\n    norm_two = np.linalg.norm(X, ord=2)\n    norm_inf = np.linalg.norm(X.ravel(), ord=np.inf) / lambda_\n    dual_norm_inv = 1.0 / max(norm_two, norm_inf)\n    Y = X * dual_norm_inv\n\n    A = np.zeros_like(X)\n    notM = ~M\n    mu = 1.25 / norm_two\n    mu_bar = mu * 1e7\n    rho = 1.5\n    sv = 10\n    for i in range(1, max_iter + 1):\n        T = X - A + (1 / mu) * Y\n        E = (np.maximum(T - (lambda_ / mu), 0) +\n             np.minimum(T + (lambda_ / mu), 0))\n        E = E * M + T * notM\n        U, s, V = np.linalg.svd(X - E + (1 / mu) * Y, full_matrices=False)\n\n        svp = (s > 1 / mu).sum()\n        sv = min(svp + 1 if svp < sv else svp + round(0.05 * n), n)\n\n        S_svp = np.diag(s[:svp] - 1 / mu)\n        A = np.dot(U[:, :svp], np.dot(S_svp, V[:svp]))\n\n        Z = X - A - E\n        Y += mu * Z\n        mu = min(mu * rho, mu_bar)\n\n        stopping_criterion = np.linalg.norm(Z, ord='fro') / norm_fro\n\n        if verbose and (time() - t > 1):\n            print('{i:02d} ({time:.1f} sec/iter) r(A): {r_A} |E|_0: {E_0} '\n                  'criterion/tol: {sc:.0f} '.format(\n                i=i, r_A=np.linalg.matrix_rank(A), time=time() - t,\n                E_0=(np.abs(E) > 0).sum(), sc=stopping_criterion / tol))\n            t = time()\n        if stopping_criterion < tol:\n            if verbose:\n                print('Converged after {} iterations'.format(i))\n            break\n    else:\n        if verbose:\n            print('Maximum iterations ({}) reached without '\n                  'convergence'.format(max_iter))\n\n    return A, E\n"
  },
  {
    "path": "itwmm/visualize.py",
    "content": "import numpy as np\n\nfrom menpo.transform import Scale, UniformScale, Translation\nfrom menpo3d.rasterize import rasterize_mesh\n\nfrom itwmm.base import as_colouredtrimesh, instance_for_params\n\n\ndef l2_normalize(x, axis=0, epsilon=1e-12):\n    \"\"\"\n    Transforms an `ndarray` to have a unit l2 norm along\n    a given direction.\n    ----------\n    x : `ndarray`\n        The array to be transformed.\n    axis : `int`\n        The axis that will be l2 unit normed.\n    epsilon: `float`\n        A small value such as to avoid division by zero.\n    Returns\n    -------\n    x : (D,) `ndarray`\n        The transformed array.\n    \"\"\"\n    return x / np.maximum(np.linalg.norm(x, axis=axis), epsilon)\n\n\ndef mesh_in_unit_sphere(mesh):\n    scale = UniformScale(1 / mesh.norm(), mesh.n_dims)\n    translation = Translation(-scale.apply(mesh).centre())\n    return translation.compose_after(scale)\n\n\ndef lambertian_shading(mesh, diffuse_colour=0.4,\n                       albedo_weighting=0.5, ambient_colour=0.3,\n                       light_positions=((2, -2, 1), (-2, 2, 1))):\n\n    diffuse_colour = np.asarray(diffuse_colour)\n    light_positions = l2_normalize(np.asarray(light_positions).reshape(-1, 3),\n                                   axis=0)\n\n    unit_transform = mesh_in_unit_sphere(mesh)\n    mesh = unit_transform.apply(mesh)\n\n    light_directions = l2_normalize(light_positions.reshape(-1, 1, 3) -\n                                    mesh.points[None, ...], axis=0)\n\n    # Calculate the lambertian reflectance for each light source.\n    # This will be an `ndarray` of shape(num_light_sources, num_vertices)\n    lambertian = np.sum(light_directions *\n                        mesh.vertex_normals()[None, ...], 2)[..., None]\n\n    # Sum up the contribution of all the light sources and multiply by the\n    # diffusion colour.\n    lambertian = lambertian.sum(0) * diffuse_colour + ambient_colour\n\n    mesh.colours[...] = np.clip(mesh.colours * albedo_weighting +\n                                lambertian * (1 - albedo_weighting),\n                                0, 1)\n\n    return unit_transform.pseudoinverse().apply(mesh)\n\n\ndef render_mesh_in_img(trimesh_3d_in_img, img_shape):\n    [x_r, y_r, z_r] = trimesh_3d_in_img.range()\n    av_xy_r = (x_r + y_r) / 2.0\n    trimesh_3d_in_img = Scale([1, 1, av_xy_r / z_r]).apply(trimesh_3d_in_img)\n    mesh_in_img_lit = lambertian_shading(as_colouredtrimesh(trimesh_3d_in_img))\n    return rasterize_mesh(mesh_in_img_lit, img_shape)\n\n\ndef render_overlay_of_mesh_in_img(trimesh_3d_in_img, img):\n    mesh_in_img = render_mesh_in_img(trimesh_3d_in_img, img.shape)\n    return overlay_image(img, mesh_in_img.as_greyscale(), (0, 0))\n\n\ndef render_initialization(images, mm, id_indices, exp_indices, template_camera,\n                          p, qs, cs, img_index):\n    c_i = cs[img_index]\n    q_i = qs[img_index]\n    i_in_img = instance_for_params(mm, id_indices, exp_indices,\n                                   template_camera,\n                                   p, q_i, c_i)['instance_in_img']\n    [x_r, y_r, z_r] = i_in_img.range()\n    av_xy_r = (x_r + y_r) / 2.0\n    i_in_img = Scale([1, 1, av_xy_r / z_r]).apply(i_in_img)\n    mesh_in_img_lit = lambertian_shading(as_colouredtrimesh(i_in_img))\n    return rasterize_mesh(mesh_in_img_lit, images[0].shape).as_unmasked()\n\n\ndef render_iteration(mm, id_ind, exp_ind, img_shape, camera, params,\n                     img_index, iteration):\n    params_i = params[iteration]\n    c_i = params_i['cs'][img_index]\n    p_i = params_i['p']\n    q_i = params_i['qs'][img_index]\n    i_in_img = instance_for_params(mm, id_ind, exp_ind, camera,\n                                   p_i, q_i, c_i)['instance_in_img']\n    [x_r, y_r, z_r] = i_in_img.range()\n    av_xy_r = (x_r + y_r) / 2.0\n    i_in_img = Scale([1, 1, av_xy_r / z_r]).apply(i_in_img)\n    mesh_in_img_lit = lambertian_shading(as_colouredtrimesh(i_in_img))\n    return rasterize_mesh(mesh_in_img_lit, img_shape).as_unmasked()\n\n\ndef overlay_image(background, overlay, offset_vector):\n    output = background.copy()\n\n    indices = overlay.indices() + offset_vector\n\n    new_mask = np.zeros_like(background.pixels[0], dtype=np.bool)\n\n    max_ = np.array(background.bounds()[1])\n    in_img = ~np.logical_or(np.any(indices < 0, axis=1),\n                            np.any(indices > max_, axis=1))\n    new_mask[indices[in_img, 0], indices[in_img, 1]] = True\n    output.pixels[:, new_mask] = overlay.as_vector(\n        keep_channels=True)[:, in_img]\n    return output\n"
  },
  {
    "path": "notebooks/1. Building an \"in-the-wild\" texture model.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 1. Building an \\\"in-the-wild\\\" texture model\\n\",\n    \"\\n\",\n    \"#### Prerequisites\\n\",\n    \"\\n\",\n    \"A collection of \\\"in-the-wild\\\" images with 3D mesh fits.\\n\",\n    \"\\n\",\n    \"The authors of:\\n\",\n    \"\\n\",\n    \"> Zhu, Xiangyu, et al. \\\"Face alignment across large poses: A 3d solution.\\\" CVPR 2016\\n\",\n    \"\\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    \"```\\n\",\n    \"300W-3D.zip\\n\",\n    \"300W-3D-Face.zip\\n\",\n    \"```\\n\",\n    \"unzip them next to each other in a folder and replace `DATA_PATH` with the parent folder path. \\n\",\n    \"\\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    \"```\\n\",\n    \"%matplotlib inline\\n\",\n    \"img.view()\\n\",\n    \"PointCloud(fit_3d.points[:, :2]).view()\\n\",\n    \"```\\n\",\n    \"You should see that Menpo renders the points of the mesh on the face in the image.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# 1. Loading the data\\n\",\n    \"\\n\",\n    \"Firstly we load the data we need in the right format. We need to produce:\\n\",\n    \"\\n\",\n    \"- A list of tuples of `(feature_img, fit_trimesh_3d)`, where\\n\",\n    \"  - `feature_img` has already had a dense image feature e.g. `fast_dist` extracted from it\\n\",\n    \"  - All instances of `feature_img` are scaled such that the face occupies the same size in each image\\n\",\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\",\n    \"  - A good test for this last condition is to visualize the mesh using Menpo (see the example below)\\n\",\n    \"  \\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.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"from functools import lru_cache\\n\",\n    \"from pathlib import Path\\n\",\n    \"import numpy as np\\n\",\n    \"\\n\",\n    \"import scipy.io as sio\\n\",\n    \"import menpo.io as mio\\n\",\n    \"\\n\",\n    \"from menpo.base import LazyList\\n\",\n    \"from menpo.feature import fast_dsift\\n\",\n    \"from menpo.shape import PointCloud, TriMesh\\n\",\n    \"\\n\",\n    \"from itwmm import (render_overlay_of_mesh_in_img, \\n\",\n    \"                   generate_texture_model_from_image_3d_fits)\\n\",\n    \"\\n\",\n    \"# Replace DATA_PATH with the path to your data. It should have subdirectories:\\n\",\n    \"#  300W-3D/\\n\",\n    \"#  300W-3D-Face/\\n\",\n    \"DATA_PATH = Path('~/Dropbox/itwmm_src_data/').expanduser()\\n\",\n    \"\\n\",\n    \"# The diagonal range of the projected fit\\n\",\n    \"DIAGONAL_RANGE = 180\\n\",\n    \"\\n\",\n    \"# The image feature we wish to employ\\n\",\n    \"FEATURE_F = fast_dsift\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"@lru_cache(1)\\n\",\n    \"def load_trilist():\\n\",\n    \"    trilist = sio.loadmat(str(DATA_PATH / '300W-3D' / 'Code' / 'ModelGeneration' / 'model_info.mat'))['tri']\\n\",\n    \"    # flip triangle faces and matlab -> Python indexing\\n\",\n    \"    return trilist[[1, 0, 2]].T - 1     \\n\",\n    \"\\n\",\n    \"\\n\",\n    \"def convert_raw_3d_fit_to_img_trimesh_fit(raw_3d_fit, img):\\n\",\n    \"    img_points_2d = raw_3d_fit[:2][::-1].copy() - 1  # matlab 1 indexing\\n\",\n    \"    img_points_2d[0] = img.shape[0] - img_points_2d[0]\\n\",\n    \"    # Depth needs to be flipped\\n\",\n    \"    img_points_3d = np.vstack([img_points_2d, raw_3d_fit[2] * -1]).T\\n\",\n    \"    img_trimesh_3d = TriMesh(img_points_3d, trilist=load_trilist())\\n\",\n    \"    return img_trimesh_3d\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"def load_img_and_fit(img_path):\\n\",\n    \"    fit_rel_path = img_path.relative_to(DATA_PATH / '300W-3D').with_suffix('.mat')\\n\",\n    \"    fit_path = DATA_PATH / '300W-3D-Face' / fit_rel_path\\n\",\n    \"\\n\",\n    \"    img = mio.import_image(img_path).as_greyscale()\\n\",\n    \"    raw_3d_fit = sio.loadmat(str(fit_path))['Fitted_Face']\\n\",\n    \"    fit_trimesh_3d = convert_raw_3d_fit_to_img_trimesh_fit(raw_3d_fit, img)\\n\",\n    \"    return img, fit_trimesh_3d\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"def load_data_with_feature_sample(img_path, err_proportion=0.0001):\\n\",\n    \"    img, fit_trimesh_3d = load_img_and_fit(img_path)\\n\",\n    \"    \\n\",\n    \"    # rescale the image to the diagonal range we are using\\n\",\n    \"    img.landmarks['fit_2d'] = PointCloud(fit_trimesh_3d.points[:, :2])\\n\",\n    \"    img, tr = img.rescale_landmarks_to_diagonal_range(DIAGONAL_RANGE, return_transform=True)\\n\",\n    \"    # note that we use the rescaled landmarks here\\n\",\n    \"    fit_trimesh_3d.points[:, :2] = img.landmarks['fit_2d'].points\\n\",\n    \"    fit_trimesh_3d.points[:, 2] = fit_trimesh_3d.points[:, 2] / tr.scale[0]\\n\",\n    \"    # take the feature on the rescaled image\\n\",\n    \"    feat = FEATURE_F(img)\\n\",\n    \"    return img, feat, fit_trimesh_3d\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"img_paths = list(mio.image_paths(DATA_PATH / '300W-3D' / '**/*'))\\n\",\n    \"print('{} images with fits to read.'.format(len(img_paths)))\\n\",\n    \"\\n\",\n    \"# we can make a LazyList which returns image/feature/fit triples when\\n\",\n    \"# we iterate. This saves us loading everything into memory at once.\\n\",\n    \"imgs_features_and_fits = LazyList.init_from_iterable(img_paths).map(\\n\",\n    \"    load_data_with_feature_sample)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"%matplotlib inline\\n\",\n    \"# Let's test one.\\n\",\n    \"img, feat, fit_trimesh_3d = imgs_features_and_fits[100]\\n\",\n    \"\\n\",\n    \"# Visual check that everything looks sensible\\n\",\n    \"img.view()\\n\",\n    \"feat.view(channels=0, new_figure=True)\\n\",\n    \"render_overlay_of_mesh_in_img(fit_trimesh_3d, img).view(new_figure=True)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"# the routine to build the ITW texture model only requires \\n\",\n    \"# feat/fit pairs, so we get rid of the redundent images\\n\",\n    \"features_and_fits = imgs_features_and_fits.map(lambda x: x[1:])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Confirm we get the format we need\\n\",\n    \"print(features_and_fits[0])\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"source\": [\n    \"# Building the ITW texture model\\n\",\n    \"\\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    \"\\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    \"\\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    \"\\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    \"\\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`.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"def as_float32(img):\\n\",\n    \"    img = img.copy()\\n\",\n    \"    img.pixels = img.pixels.astype(np.float32)\\n\",\n    \"    return img\\n\",\n    \"\\n\",\n    \"features_and_fits_32bit = features_and_fits.map(lambda x: (as_float32(x[0]), x[1]))\\n\",\n    \"n_imgs_for_rpca = 100\\n\",\n    \"\\n\",\n    \"itw_texture_model, X, m = generate_texture_model_from_image_3d_fits(features_and_fits_32bit[:n_imgs_for_rpca])\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"print(itw_texture_model)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"print('The matrices used for R-PCA were of shape: {} & {}'.format(X.shape, m.shape))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"%matplotlib qt\\n\",\n    \"from itwmm.base import as_colouredtrimesh\\n\",\n    \"# As a sanity check, visualize the masks found on the original geometry\\n\",\n    \"# with the texture value extracted (mask = red)\\n\",\n    \"i = 4\\n\",\n    \"img, feat, fit_trimesh_3d = imgs_features_and_fits[i]\\n\",\n    \"img_sampled = np.repeat(img.sample(PointCloud(fit_trimesh_3d.points[:, :2])), 3, axis=0).T\\n\",\n    \"mask = m[i].reshape([fit_trimesh_3d.n_points, -1])[:, 0]\\n\",\n    \"img_sampled[~mask, 0] = 1.\\n\",\n    \"as_colouredtrimesh(fit_trimesh_3d, colours=img_sampled).view()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# 3. Exporting a ITW texture model\\n\",\n    \"\\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    \"\\n\",\n    \"- The rescaling diagonal. We will need this at fit time to ensure the features are meaningful.\\n\",\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    \"\\n\",\n    \"We also need the shape model we use to be in perfect correspondence with the fits used here.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"mio.export_pickle(\\n\",\n    \"    {\\n\",\n    \"        'texture_model': itw_texture_model,\\n\",\n    \"        'diagonal_range': 180,\\n\",\n    \"        'feature_function': fast_dsift\\n\",\n    \"    }, \\n\",\n    \"    DATA_PATH / 'itw_texture_model.pkl',\\n\",\n    \"    protocol=4, overwrite=True)\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"anaconda-cloud\": {},\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.5.4\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "notebooks/2. Creating an expressive 3DMM.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 2. Creating an Expressive 3D Morphable Model\\n\",\n    \"\\n\",\n    \"#### Prerequisites\\n\",\n    \"\\n\",\n    \"- Access to a 3D facial shape model of identity\\n\",\n    \"- Access to a 3D facial shape model of expression (a 'blendshape' model)\\n\",\n    \"\\n\",\n    \"The authors of:\\n\",\n    \"\\n\",\n    \"> Zhu, Xiangyu, et al. \\\"Face alignment across large poses: A 3d solution.\\\" CVPR 2016\\n\",\n    \"\\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    \"```\\n\",\n    \"300W-3D.zip\\n\",\n    \"```\\n\",\n    \"and also requires access to the following file (the LSFM model):\\n\",\n    \"```\\n\",\n    \"all_all_all.mat\\n\",\n    \"```\\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.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"from pathlib import Path\\n\",\n    \"import numpy as np\\n\",\n    \"\\n\",\n    \"import scipy.io as sio\\n\",\n    \"import menpo.io as mio\\n\",\n    \"import menpo3d.io as m3io\\n\",\n    \"\\n\",\n    \"from menpo.shape import TriMesh, PointCloud\\n\",\n    \"from menpo.model import PCAModel\\n\",\n    \"\\n\",\n    \"# Replace DATA_PATH with the path to your data. It should have subdirectories:\\n\",\n    \"#  300W-3D/\\n\",\n    \"#  all_all_all.mat\\n\",\n    \"DATA_PATH = Path('~/Dropbox/itwmm_src_data/').expanduser()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],   \n   \"source\": [\n    \"def generate_id_exp_model(data_path):\\n\",\n    \"    # Load the LSFM ID model\\n\",\n    \"    lsfm_model = m3io.import_lsfm_model(data_path / 'all_all_all.mat')\\n\",\n    \"    \\n\",\n    \"    # The number of ID and expression deformation components\\n\",\n    \"    n_id = lsfm_model.n_active_components\\n\",\n    \"    n_exp = 28 \\n\",\n    \"    \\n\",\n    \"    # Multiply the LSFM components with a scale factor, and bake in the eigenvalues.\\n\",\n    \"    # The scale factor is to normalize weightings between ID and expression models.\\n\",\n    \"    scale = np.sqrt(lsfm_model.eigenvalues[:n_id])\\n\",\n    \"    i_raw = lsfm_model.components[:n_id] * scale[:, None]\\n\",\n    \"    \\n\",\n    \"    # Load the expression deformations from the data, and again scale for balancing\\n\",\n    \"    scale_exp_mean = 1.0006846894227463e-05\\n\",\n    \"    scale_exp_comps = scale_exp_mean / 2.5\\n\",\n    \"    e_raw = sio.loadmat(str(data_path / '300W-3D' / 'Code' / 'Model_Exp.mat'))['w_exp'].T[:-1] * scale_exp_comps \\n\",\n    \"    e_mean = sio.loadmat(str(data_path / '300W-3D' / 'Code' / 'Model_Exp.mat'))['mu_exp'].T * scale_exp_mean\\n\",\n    \"    \\n\",\n    \"    # We now just need to combine the two models.\\n\",\n    \"    id_ind = np.arange(n_id)\\n\",\n    \"    exp_ind = np.arange(n_id, n_id + n_exp)\\n\",\n    \"    components = np.zeros([n_id + n_exp, i_raw.shape[1]])\\n\",\n    \"    components[id_ind] = i_raw\\n\",\n    \"    components[exp_ind] = e_raw\\n\",\n    \"    mean_combined = TriMesh(lsfm_model.mean().points + e_mean.reshape((-1,3)), lsfm_model.mean().trilist) \\n\",\n    \"    \\n\",\n    \"    # iBUG 68 landmarks \\n\",\n    \"    lms_vertex_indices = [\\n\",\n    \"        21868, 22404, 22298, 22327, 43430, 45175, 46312, 47132, 47911,\\n\",\n    \"        48692, 49737, 51376, 53136, 32516, 32616, 32205, 32701, 38910,\\n\",\n    \"        39396, 39693, 39934, 40131, 40843, 41006, 41179, 41430, 13399,\\n\",\n    \"        8161,  8172,  8179,  8185,  5622,  6881,  8202,  9403, 10764,\\n\",\n    \"        1831,  3887,  5049,  6214,  4805,  3643,  9955, 11095, 12255,\\n\",\n    \"        14197, 12397, 11366,  5779,  6024,  7014,  8215,  9294, 10267,\\n\",\n    \"        10922,  9556,  8836,  8236,  7636,  6794,  5905,  7264,  8223,\\n\",\n    \"        9063, 10404,  8828,  8228,  7509\\n\",\n    \"    ]\\n\",\n    \"    lms = PointCloud(mean_combined.points[lms_vertex_indices])\\n\",\n    \"\\n\",\n    \"    # Initialize a Menpo PCA Model from the raw data.\\n\",\n    \"    # Note that we fix the eigenvalues to 1, as we choose to rescale\\n\",\n    \"    # the components to 'bake-in' the eigenvalues above.\\n\",\n    \"    shape_model = PCAModel.init_from_components(components, \\n\",\n    \"                                                np.ones(components.shape[1]), \\n\",\n    \"                                                mean_combined, \\n\",\n    \"                                                lsfm_model.n_samples, \\n\",\n    \"                                                True)\\n\",\n    \"    \\n\",\n    \"    return shape_model, lms, id_ind, exp_ind\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"# Blend the ID and expression models into one, and note\\n\",\n    \"# The indices into the model for both indivual components.\\n\",\n    \"shape_model, lms, id_ind, exp_ind = generate_id_exp_model(DATA_PATH)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"%matplotlib qt\\n\",\n    \"# generate a random expression to see if it's sensible\\n\",\n    \"n_c = shape_model.n_components\\n\",\n    \"\\n\",\n    \"# The std. dev weighting to use\\n\",\n    \"sigma = 1\\n\",\n    \"\\n\",\n    \"weights = np.random.multivariate_normal(np.zeros(n_c), np.eye(n_c) * sigma, 1).ravel()\\n\",\n    \"\\n\",\n    \"synthesized_vector = shape_model.mean_vector + np.sum(weights[:, None] * shape_model.components, axis=0)\\n\",\n    \"synthesized_instance = shape_model.template_instance.from_vector(synthesized_vector)\\n\",\n    \"synthesized_instance.view()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Exporting the combined ID/expression shape model\\n\",\n    \"\\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    \"\\n\",\n    \"- The record of which components are identitiy and which are expression (`id_ind` and `exp_ind`)\\n\",\n    \"- The vertex indices of the sparse set of landmarks on the model\\n\",\n    \"\\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.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"mio.export_pickle(\\n\",\n    \"    {\\n\",\n    \"        'shape_model': shape_model,\\n\",\n    \"        'id_ind': id_ind,\\n\",\n    \"        'exp_ind': exp_ind,\\n\",\n    \"        'lms': lms\\n\",\n    \"    }, \\n\",\n    \"    DATA_PATH / 'id_exp_shape_model.pkl',\\n\",\n    \"    protocol=4, overwrite=True)\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"anaconda-cloud\": {},\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.5.4\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "notebooks/3. Fitting \"in-the-wild\" images.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 3. Fitting \\\"in-the-wild\\\" images\\n\",\n    \"\\n\",\n    \"#### Prerequisites\\n\",\n    \"\\n\",\n    \"- Access to a combined 3D facial shape model of identity and expression\\n\",\n    \"- Access to an \\\"in-the-wild\\\" texture model\\n\",\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    \"\\n\",\n    \"The first two of these can be generated by following the two previous notebooks in this folder:\\n\",\n    \"\\n\",\n    \"- `1. Building an \\\"in-the-wild\\\" texture model.ipynb`\\n\",\n    \"- `2. Creating an expressive 3DMM.ipynb`\\n\",\n    \"\\n\",\n    \"Running these notebooks to completion will lead to the following two files being generated in the `DATA_PATH` folder:\\n\",\n    \"\\n\",\n    \"- `itw_texture_model.pkl`\\n\",\n    \"- `id_exp_shape_model.pkl`\\n\",\n    \"\\n\",\n    \"This script shows how to load these directly and use them in fitting.\\n\",\n    \"\\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.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"from pathlib import Path\\n\",\n    \"import numpy as np\\n\",\n    \"\\n\",\n    \"import menpo.io as mio\\n\",\n    \"from menpo.base import LazyList\\n\",\n    \"from menpo.shape import PointCloud\\n\",\n    \"from menpo.visualize import print_progress\\n\",\n    \"from menpo3d.morphablemodel import ColouredMorphableModel\\n\",\n    \"\\n\",\n    \"from itwmm import (\\n\",\n    \"    initialize_camera_from_params, initialize_camera,\\n\",\n    \"    fit_image, instance_for_params,\\n\",\n    \"    render_initialization, render_iteration,\\n\",\n    \")\\n\",\n    \"\\n\",\n    \"# Replace DATA_PATH with the path to your data. It should have files:\\n\",\n    \"#  itw_texture_model.pkl\\n\",\n    \"#  id_exp_shape_model.pkl\\n\",\n    \"# As generated from Notebooks 1. and 2.)\\n\",\n    \"DATA_PATH = Path('~/Dropbox/itwmm_src_data/').expanduser()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"def prepare_image_and_return_transforms(diagonal, feature_f, image):\\n\",\n    \"    # this variation is needed if we need to know how the imput image \\n\",\n    \"    # is transformed\\n\",\n    \"    img, t = image.crop_to_landmarks_proportion(0.4, return_transform=True)\\n\",\n    \"    img, scale = img.rescale_landmarks_to_diagonal_range(diagonal, return_transform=True)\\n\",\n    \"    return {\\n\",\n    \"        'image': feature_f(img),\\n\",\n    \"        't': t.translation_component,\\n\",\n    \"        'scale': scale.scale[0]\\n\",\n    \"    }\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"def load_id_exp_shape_model(path):\\n\",\n    \"    sm_dict = mio.import_pickle(path)\\n\",\n    \"    shape_model = sm_dict['shape_model']\\n\",\n    \"    lms = sm_dict['lms']\\n\",\n    \"    id_ind = sm_dict['id_ind']\\n\",\n    \"    exp_ind = sm_dict['exp_ind']\\n\",\n    \"    return shape_model, lms, id_ind, exp_ind\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"def load_itw_texture_model(path):\\n\",\n    \"    tm_dict = mio.import_pickle(path)\\n\",\n    \"    texture_model  = tm_dict['texture_model']\\n\",\n    \"    diagonal_range = tm_dict['diagonal_range']\\n\",\n    \"    feature_function = tm_dict['feature_function']\\n\",\n    \"    return texture_model, diagonal_range, feature_function\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Prepare data and model\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"# LOAD SHAPE MODEL\\n\",\n    \"# note that id_ind and exp_ind are two index mappings into the components of\\n\",\n    \"# this special combined shape model. The first records the index position of\\n\",\n    \"# components that are related to identitiy, the second an index of the (remaining)\\n\",\n    \"# components which are related to shape.\\n\",\n    \"shape_model, lms, id_ind, exp_ind = load_id_exp_shape_model(DATA_PATH / 'id_exp_shape_model.pkl')\\n\",\n    \"\\n\",\n    \"# record the number of ID / EXP params\\n\",\n    \"n_p, n_q = id_ind.shape[0], exp_ind.shape[0]\\n\",\n    \"\\n\",\n    \"# LOAD ITW TEXTURE MODEL\\n\",\n    \"# Note we have to know the diagonal setting and feature used in the texture model.\\n\",\n    \"texture_model, diagonal_range, feature_function = load_itw_texture_model(DATA_PATH / 'itw_texture_model.pkl')\\n\",\n    \"\\n\",\n    \"# construct our Morphable Model that we can use in the fitting approaches below\\n\",\n    \"mm = ColouredMorphableModel(shape_model, texture_model, lms, \\n\",\n    \"                            holistic_features=feature_function,\\n\",\n    \"                            diagonal=diagonal_range)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"# load some images and prepare them for fitting.\\n\",\n    \"# Note that we have to rescale the images/extract the feature we used for the model\\n\",\n    \"# ourselves. Unlike previous menpo fitting routines, fit_image is a simpler implementation.\\n\",\n    \"# it requires us to explicitly do more before we call fit_image, but it is much simpler to\\n\",\n    \"# follow what is being done in the code.\\n\",\n    \"frame = mio.import_image('itw_image.jpg')\\n\",\n    \"\\n\",\n    \"transform_info = prepare_image_and_return_transforms(diagonal_range, feature_function, frame)\\n\",\n    \"image = transform_info.pop('image')\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Initialize parameters\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"%matplotlib inline\\n\",\n    \"# initialize the shape weights to zero (mean)\\n\",\n    \"p = np.zeros(n_p)\\n\",\n    \"q = np.zeros(n_q)\\n\",\n    \"\\n\",\n    \"# initialize the camera with a large focal length (orthogathic)\\n\",\n    \"camera = initialize_camera_from_params(image, mm, id_ind, exp_ind, p, q, focal_length=99999999)\\n\",\n    \"c = camera.as_vector()\\n\",\n    \"\\n\",\n    \"# Check the initialization looks sensible\\n\",\n    \"# Note that most methods in ITWMM expect video inputs. We just need to wrap\\n\",\n    \"# Single-frame parameters in a single list to re-use them for images.\\n\",\n    \"render_initialization([image], mm, id_ind, exp_ind, camera, p, [q], [c], 0).view()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## ITW Image fitting\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"# Actually run the optimisation.\\n\",\n    \"# Return is a list of parameters recovered per-iteration per-frame.\\n\",\n    \"params = fit_image(image, mm, id_ind, exp_ind, camera, \\n\",\n    \"                   p, q, c,\\n\",\n    \"                   lm_group='PTS', n_iters=10, \\n\",\n    \"                   c_f=3.,\\n\",\n    \"                   c_id=1.,\\n\",\n    \"                   c_exp=3.,\\n\",\n    \"                   c_l=1.,\\n\",\n    \"                   n_samples=1000, compute_costs=True)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Inspect results\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"# now we render the fitting.\\n\",\n    \"iter_no = -1\\n\",\n    \"frame.view()\\n\",\n    \"render_iteration(mm, id_ind, exp_ind, image.shape, \\n\",\n    \"                 camera, params, 0, iter_no).view(new_figure=True)\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"anaconda-cloud\": {},\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.5.4\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "notebooks/4. Fitting \"in-the-wild\" videos.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## 4. Fitting \\\"in-the-wild\\\" videos\\n\",\n    \"\\n\",\n    \"#### Prerequisites\\n\",\n    \"\\n\",\n    \"- Access to a combined 3D facial shape model of identity and expression\\n\",\n    \"- Access to an \\\"in-the-wild\\\" texture model\\n\",\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    \"\\n\",\n    \"The first two of these can be generated by following the two previous notebooks in this folder:\\n\",\n    \"\\n\",\n    \"- `1. Building an \\\"in-the-wild\\\" texture model.ipynb`\\n\",\n    \"- `2. Creating an expressive 3DMM.ipynb`\\n\",\n    \"\\n\",\n    \"Running these notebooks to completion will lead to the following two files being generated in the `DATA_DIR` folder:\\n\",\n    \"\\n\",\n    \"- `itw_texture_model.pkl`\\n\",\n    \"- `id_exp_shape_model.pkl`\\n\",\n    \"\\n\",\n    \"This script shows how to load these directly and use them in fitting.\\n\",\n    \"\\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.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"from pathlib import Path\\n\",\n    \"import numpy as np\\n\",\n    \"\\n\",\n    \"import menpo.io as mio\\n\",\n    \"from menpo.base import LazyList\\n\",\n    \"from menpo.shape import PointCloud\\n\",\n    \"from menpo.visualize import print_progress\\n\",\n    \"from menpo3d.morphablemodel import ColouredMorphableModel\\n\",\n    \"\\n\",\n    \"from itwmm import (\\n\",\n    \"    initialize_camera_from_params, initialize_camera,\\n\",\n    \"    fit_video, instance_for_params,\\n\",\n    \"    render_initialization, render_iteration,\\n\",\n    \")\\n\",\n    \"\\n\",\n    \"# Replace DATA_PATH with the path to your data. It should have files:\\n\",\n    \"#  itw_texture_model.pkl\\n\",\n    \"#  id_exp_shape_model.pkl\\n\",\n    \"# As generated from Notebooks 1. and 2.)\\n\",\n    \"DATA_PATH = Path('~/Dropbox/itwmm_src_data/').expanduser()\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"def prepare_image_and_return_transforms(diagonal, feature_f, image):\\n\",\n    \"    # this variation is needed if we need to know how the imput image \\n\",\n    \"    # is transformed\\n\",\n    \"    img, t = image.crop_to_landmarks_proportion(0.4, return_transform=True)\\n\",\n    \"    img, scale = img.rescale_landmarks_to_diagonal_range(diagonal, return_transform=True)\\n\",\n    \"    return {\\n\",\n    \"        'image': feature_f(img),\\n\",\n    \"        't': t.translation_component,\\n\",\n    \"        'scale': scale.scale[0]\\n\",\n    \"    }\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"def load_id_exp_shape_model(path):\\n\",\n    \"    sm_dict = mio.import_pickle(path)\\n\",\n    \"    shape_model = sm_dict['shape_model']\\n\",\n    \"    lms = sm_dict['lms']\\n\",\n    \"    id_ind = sm_dict['id_ind']\\n\",\n    \"    exp_ind = sm_dict['exp_ind']\\n\",\n    \"    return shape_model, lms, id_ind, exp_ind\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"def load_itw_texture_model(path):\\n\",\n    \"    tm_dict = mio.import_pickle(path)\\n\",\n    \"    texture_model  = tm_dict['texture_model']\\n\",\n    \"    diagonal_range = tm_dict['diagonal_range']\\n\",\n    \"    feature_function = tm_dict['feature_function']\\n\",\n    \"    return texture_model, diagonal_range, feature_function\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Prepare data and model\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outputs\": [],\n   \"source\": [\n    \"# LOAD SHAPE MODEL\\n\",\n    \"# note that id_ind and exp_ind are two index mappings into the components of\\n\",\n    \"# this special combined shape model. The first records the index position of\\n\",\n    \"# components that are related to identitiy, the second an index of the (remaining)\\n\",\n    \"# components which are related to shape.\\n\",\n    \"shape_model, lms, id_ind, exp_ind = load_id_exp_shape_model(DATA_PATH / 'id_exp_shape_model.pkl')\\n\",\n    \"\\n\",\n    \"# record the number of ID / EXP params\\n\",\n    \"n_p, n_q = id_ind.shape[0], exp_ind.shape[0]\\n\",\n    \"\\n\",\n    \"# LOAD ITW TEXTURE MODEL\\n\",\n    \"# Note we have to know the diagonal setting and feature used in the texture model.\\n\",\n    \"texture_model, diagonal_range, feature_function = load_itw_texture_model(DATA_PATH / 'itw_texture_model.pkl')\\n\",\n    \"\\n\",\n    \"# construct our Morphable Model that we can use in the fitting approaches below\\n\",\n    \"mm = ColouredMorphableModel(shape_model, texture_model, lms, \\n\",\n    \"                            holistic_features=feature_function,\\n\",\n    \"                            diagonal=diagonal_range)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# load some images and prepare them for fitting.\\n\",\n    \"# Note that we have to rescale the images/extract the feature we used for the model\\n\",\n    \"# ourselves. Unlike previous menpo fitting routines, fit_video is a simpler implementation.\\n\",\n    \"# it requires us to explicitly do more before we call fit_video, but it is much simpler to\\n\",\n    \"# follow what is being done in the code.\\n\",\n    \"lim_frames = 100\\n\",\n    \"\\n\",\n    \"frame_ids = LazyList.init_from_iterable(\\n\",\n    \"    [p.stem for p in mio.image_paths('video_dir/')][:lim_frames])\\n\",\n    \"frames = frame_ids.map(lambda fid: mio.import_image('video_dir/{}.png'.format(fid)))\\n\",\n    \"\\n\",\n    \"transform_info = [prepare_image_and_return_transforms(diagonal_range, feature_function, i) for i in \\n\",\n    \"                  print_progress(frames, prefix='processing images')]\\n\",\n    \"images = [x.pop('image') for x in transform_info]\\n\",\n    \"\\n\",\n    \"n_images = len(images)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Initialize parameters\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"%matplotlib inline\\n\",\n    \"# initialize the shape weights to zero (mean)\\n\",\n    \"p = np.zeros(n_p)\\n\",\n    \"qs = np.zeros([n_images, n_q])\\n\",\n    \"\\n\",\n    \"# initialize all cameras with a large focal length (orthogathic)\\n\",\n    \"cameras = [initialize_camera_from_params(img, mm, id_ind, exp_ind, p, q, focal_length=99999999) \\n\",\n    \"           for img, q in zip(images, qs)]\\n\",\n    \"cs = np.vstack([camera.as_vector() for camera in cameras])\\n\",\n    \"template_camera = cameras[0]\\n\",\n    \"\\n\",\n    \"# Check the initialization looks sensible (for first and last frame)\\n\",\n    \"render_initialization(images, mm, id_ind, exp_ind, template_camera, p, qs, cs, 0).view()\\n\",\n    \"render_initialization(images, mm, id_ind, exp_ind, template_camera, p, qs, cs, -1).view(new_figure=True)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## ITW Video fitting\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Actually run the optimisation.\\n\",\n    \"# Return is a list of parameters recovered per-iteration per-frame.\\n\",\n    \"#\\n\",\n    \"# E.g. to access the 3'rd frame's parameters at the 6th iteration:\\n\",\n    \"#   params[5][2]  # (lists are 0-based in Python)\\n\",\n    \"#\\n\",\n    \"params = fit_video(images, mm, id_ind, exp_ind, template_camera, \\n\",\n    \"                   p, qs, cs,\\n\",\n    \"                   lm_group='PTS', n_iters=10, \\n\",\n    \"                   c_f=3.,\\n\",\n    \"                   c_id=1. * n_images,\\n\",\n    \"                   c_exp=3.,\\n\",\n    \"                   c_l=1.,\\n\",\n    \"                   c_sm=6.,\\n\",\n    \"                   n_samples=1000, compute_costs=True)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Inspect results\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# now we render the fitting.\\n\",\n    \"frame_no = 5\\n\",\n    \"iter_no = -1\\n\",\n    \"frames[frame_no].view()\\n\",\n    \"render_iteration(mm, id_ind, exp_ind, images[0].shape, \\n\",\n    \"                 template_camera, params, frame_no, iter_no).view(new_figure=True)\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"anaconda-cloud\": {},\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.5.4\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "setup.py",
    "content": "from setuptools import setup, find_packages\n\ninstall_requires = ['menpo3d>=0.6.0']\n\nsetup(name='itwmm',\n      version='1.0.0',\n      description='ITW Morphable Model fitting',\n      author='Menpo Authors',\n      author_email='hello@menpo.org',\n      packages=find_packages(),\n      install_requires=install_requires\n      )\n"
  }
]