Skip to content

v0.12.0

Choose a tag to compare

@patrikhuber patrikhuber released this 08 Mar 22:15
· 859 commits to master since this release

This is mainly a maintenance release but contains quite a number of improvements. There are some breaking changes in this release and models have to be re-downloaded in the new format.

Major changes:

  • Changed PcaModel, MorphableModel and blendshapes to use Eigen for matrices and vectors instead of OpenCV's cv::Mat. This change was motivated by the fact that we need Eigen already anyway for solving linear systems. And since Eigen is a header-only library, the core of eos becomes more independent of OpenCV and easier to compile in the near future.
    This change means that the model format has changed as well, so users will have to re-download the models and blendshapes in the new model format.
  • Changed PcaModel constructor to take an orthonormal basis (4662c59)
    This introduces a breaking change: If you're currently using the PcaModel constructor and are passing it a PCA basis matrix, your code will (probably silently) break: The function now expects an orthonormal basis matrix, whereas before, it expected a rescaled basis matrix. However it makes more sense for the function to take an orthonormal basis matrix, as this is usually the result after computing a PCA on data.
  • Furthermore, "unnormalised" basis has been renamed to "orthonormal", and "normalised" basis to "rescaled", and the getters have been modified accordingly. This should clear up confusion and make the descriptions good and unambiguous ("normalised" and "unnormalised" was really not a good choice!). (0fdd8a1)

Minor changes:

  • Updated all apps and utilities to reflect all the changes in this release
  • We now only store the orthonormal basis in the model files - the rescaled basis is computed when models are loaded. This halves the file size of all models. (50c059c)
  • Renamed get_*_pca_basis(int) to get_*_pca_basis_at_point(int) (354deb3)
  • The mean, basis and eigenvalues of PcaModel are now returned by const reference (8901c11)
  • Added a setup.py file for python's pip:
    This means eos's python bindings can now be built and installed with pip install ./eos, and packages can be created with python setup.py sdist and python setup.py bdist_wheel. A setup.cfg.template exists to set library paths to OpenCV and Boost.
  • Added various python bindings: write_obj, save_model, functionality to construct new models, draw_sample, and more
  • Added Eigen as git submodule. This was required because Ubuntu 14.04 only ships with Eigen 3.2.2, while pybind11's new Eigen bindings requires at least 3.2.7. This way, we're also more independent with regards to Python's sdist package. An external Eigen can still be used by setting EIGEN3_INCLUDE_DIR.
  • Added cereal as submodule, removed local copy (f38ac62)
  • Added better warnings and errors as to the use of fit-model-ceres
  • Minor documentation fixes and improvements.

eos python bindings are now available on PyPI! There's a wheel for python 3.5 on Windows, and a source dist. The source dist needs CMake's find_package to be able to find OpenCV and Boost automatically for it to work (so install it beforehand from a package manager).
If there are issues, you can always clone the repo and do pip install ./eos locally, after adjusting the paths in setup.cfg.

As always, make sure to clone the repository with git clone --recursive, or, if you're updating, run git submodule update --init --recursive.

Windows binaries are compiled with Windows 8.1 64bit, Visual Studio 2015. A .whl with python bindings for python 3.5 is available on PyPI. The Matlab bindings are created for Matlab R2016b.
Linux binaries are compiled with Linux Mint 18, based on Ubuntu 16.04, gcc-5.4.