Patrikhuber Eos Versions Save

A lightweight 3D Morphable Face Model library in modern C++

v0.11.1

7 years ago

A very small release with very minor updates.

  • The BFM Matlab to binary conversion script is now much faster, thanks to @NextDesign1
  • A fix that makes eos compile on clang 3.9.1 on OS X from macports, thanks @NextDesign1!
  • Minor updates and clarifications in readme's

This is the last release to support the current model format. eos is switching to Eigen for the PcaModel and MorphableModel classes, which will require users to re-download the models in the new format. The changes are already done in the devel branch and will be included in the next official release.

v0.11.0

7 years ago

This release contains a major modernisation of the CMake scripts. Most of it now follows a target-based approach. The release also contains improvements to the Python and Matlab bindings. No changes to the fitting algorithm(s) in this release.

Noteworthy changes:

  • Major CMake modernisation (and thank you to @ruslo for the PRs!)
  • gcc-4.9 and CMake 3.1.3 are the new minimum required versions
  • More Python and Matlab bindings, improvements of the bindings and the documentation
  • Added a .clang-format file - please more or less stick to the style in there for new contributions. Most notably, we switched from tabs to 4 spaces, as it improves readability on GitHub
  • Moved Mesh to core namespace (this may break current code, but is easily fixed)
  • All CMake options are now prefixed with EOS_, you may need to update your configuration (e.g. BUILD_EXAMPLES => EOS_BUILD_EXAMPLES).

The software renderer also got refactored into classes, with a more dynamic approach for vertex and pixel shaders, and rasterising, following the OpenGL paradigm. The code of the core renderer is exactly the same. The new code is very much experimental, I suggest sticking to the existing rendering functions, which are still there and work as before.

As before, 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. The bindings are created for Python 3.5 and Matlab R2016b. Linux binaries are compiled with Linux Mint 18, based on Ubuntu 16.04, gcc-5.4.

v0.10.1

7 years ago

Minor improvements of the project infrastructure: The INSTALL target copies less 3rd-party files (only the headers now), python bindings are now in a separate directory, and the python bindings are being built on travis and AppVeyor.

v0.10.0

7 years ago

Added Matlab bindings for the fitting function fit_shape_and_pose(...), which means the fitting can be run from Matlab. It returns a mesh and rendering_parameters (pose). A demo script (demo.m) is included - see the Matlab bindings section of the README.md for more details.

Set GENERATE_MATLAB_BINDINGS in CMake to build the mex file and run the INSTALL target to install everything. CMake-3.7 is required to build the bindings.

So far, only bindings for this one fitting function exists, but it's one of the key functionalities of eos. The model and needed files have to be given as filenames, which means they have to be loaded each time you call the fit_shape_and_pose(...) function. It works quite fast but is therefore not fast enough for real-time scenarios.

Another small limitation is that it currently only works with ibug landmarks, and only if all 68 of them are present. This limitation might be lifted in the future.

More bindings (e.g. for the MorphableModel itself) might be added in the future.

v0.9.1

7 years ago

This minor release brings a large speed-up of the shape-fitting, along with a couple other small improvements.

  • Speed up computation of Omega in shape fitting (e2809f13d163c3fd4b4e325a09cfd96a3a9d1153)
  • Moved sample_to_mesh out of the ::detail namespace (da0a240804ef779985155f70a2bdd9592b5b5036)
  • Fixed bug that the given num_shape_coefficients_to_fit was not forwarded to the shape-fitting function (42d1f43c17de4c79859b2f5291d45b80289df042)

v0.9.0

7 years ago

This release contains edge fitting as the main addition - this is a major improvement in the fitting quality.

  • Added edge fitting from [1]
  • Using the edge fitting to fit the contour landmarks in the fit-model app
  • Major rework of the fit-model example app: It now uses blendshapes, the new contour fitting, and iterates the different fitting stages, resulting in a major improvement in fitting quality
  • Added a single function to the library that iteratively fits pose, shape and blendshapes

[1]: A. Bas, W.A.P. Smith, T. Bolkart and S. Wuhrer, "Fitting a 3D Morphable Model to Edges: A Comparison Between Hard and Soft Correspondences", In Proc. ACCV 2016 Workshops, 2016.

Minor improvements/fixes:

  • Started a wiki and put some example fitting results: https://github.com/patrikhuber/eos/wiki
  • Added non-negative least squares blendshape fitting function
  • Renamed the old fit-model app to fit-model-simple: it shows simple pose and shape fitting, without blendshapes or contour-fitting
  • Fix: Added inline to all functions. No ODR violations anymore if the library is used from multiple translation units
  • Added travis and AppVeyor CI

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

Again there's some precompiled binaries and python bindings available. No guarantees that they'll work on many other systems though. The Python bindings are the same as in eos v0.8.0, no new additions yet.

Windows binaries are compiled for Windows 8.1 64bit, Visual Studio 2015. Linux binaries are compiled for Linux Mint 18, based on Ubuntu 16.04, gcc-5.4.

v0.8.0

7 years ago

A major release with many new features and some minor fixes and improvements!

  • Linear scaled orthographic projection camera estimate. Faster and more stable than the nonlinear and affine algorithms. fit-model uses this as new default.
  • Python bindings for parts of the library!
  • Experimental: Ceres cost functions. A landmark-fitting cost function (fitting shape, expressions and pose) and an image error cost function (the latter one requires acquiring the albedo model from CVSSP). Set -DBUILD_CERES_EXAMPLE to build an example app.

Minor improvements/fixes:

  • Faster converter script and app for the BFM (now using binary files)
  • The Mesh type and most of the rendering now uses glm types instead of cv::Vec's
  • Cleaned up RenderingParameters, it now stores the rotation as a quaternion. Its documentation needs to be improved.
  • Changed PcaModel getters to return references
  • Lots of other small improvements and fixes!

Make sure to clone the repository with git clone --recursive, or, if you're updating, run git submodule update --init!

Also there's some precompiled binaries and python bindings available. No guarantees that they'll work on many other systems though. Python bindings are for python-3.5. If you want python-2.7, you need to compile them by yourself.

Windows binaries are compiled for Windows 8.1 64bit, Visual Studio 2015. Linux binaries are compiled for Linux Mint 18, based on Ubuntu 16.04, gcc-5.4.

v0.7.1

7 years ago

A few minor updates:

  • Changed the expression blendshape names slightly to match to Ekman's terminology: anger, disgust, fear, happiness, sadness and surprise
  • Added a Matlab script to convert the Basel Face Model (BFM) to json (experimental! very slow (takes >1 hour) and results in a >1 GB file)
  • Added an app to convert a json model to a cereal binary model
  • Added num_coefficients_to_fit parameter to fit_shape functions
  • Added an app to generate random samples from the model

v0.7.0

8 years ago

A major release with many new features and some minor fixes and improvements:

  • Added expression blendshapes for the shape model, containing the 6 expressions angry, disgust, fear, happy, sad and surprised (77f6b8dcc71d2bf1d07dafa384bf36c6cb6a0d54)
  • Implemented a linear blendshape fitting to fit these blendshapes to landmarks. One very notable improvement is that it allows the model to open the mouth.
  • Added a function that alternates between PCA shape coefficient fitting and blendshape fitting until convergence (245d8e8785ba722b71514a472b1c39a802cc4a8c)
  • Added a simple contour fitting that fits the front-facing contour landmarks to the model. This results in much better correspondence.

Minor improvements/fixes:

  • Added 2D-3D mappings for all 68 ibug landmarks (597aa2967f0cf6051b5d4ec3dfe32d484554639d)
  • Replaced inv() with solve() in the linear shape and blendshape fitting (b8c5f99a158ed3e7f18b680439155ee935d43b80)
  • Implemented a workaround to make the small black line in the isomap disappear (see #4)

Note 1: The contour-landmarks fitting in contour_correspondence.hpp is a bit beta-quality and doesn't contain all necessary safety checks; for example, if given wrong correspondences, it may crash.

Note 2: I initially wanted to tidy up a few more things before officially tagging this, but it has been on GitHub for so long now and people are using it, so that we'll just make this v0.7.0.

v0.6.1

8 years ago

Minor fixes, code improvements and a lot of documentation updates.

Noteworthy changes:

  • Added vertex symmetry list of the reference model (c3cb3c7)
  • Fixed wrong filename when storing a textured obj with a relative path (4bc9917)