Changelog

0.5.0 (2015/06/25)

This release of Menpo makes a number of very important BREAKING changes to the format of Menpo’s core data types. Most importantly is #524 which swaps the position of the channels on an image from the last axis to the first. This is to maintain row-major ordering and make iterating over the pixels of a channel efficient. This made a huge improvement in speed in other packages such as MenpoFit. It also makes common operations such as iterating over the pixels in an image much simpler:

for channels in image.pixels:
    print(channels.shape)  # This will be a (height x width) ndarray

Other important changes include:

  • Updating all widgets to work with IPython 3
  • Incremental PCA was added.
  • non-inplace cropping methods
  • Dense SIFT features provided by vlfeat
  • The implementation of graphs was changed to use sparse matrices by default. This may cause breaking changes.
  • Many other improvements detailed in the pull requests below!

If you have serialized data using Menpo, you will likely find you have trouble reimporting it. If this is the case, please visit the user group for advice.

Github Pull Requests

  • #598 Visualize sum of channels in widgets (@nontas, @patricksnape)
  • #597 test new dev tag behavior on condaci (@jabooth)
  • #591 Scale around centre (@patricksnape)
  • #596 Update to versioneer v0.15 (@jabooth, @patricksnape)
  • #495 SIFT features (@nontas, @patricksnape, @jabooth, @jalabort)
  • #595 Update mean_pointcloud (@patricksnape, @jalabort)
  • #541 Add triangulation labels for ibug_face_(66/51/49) (@jalabort)
  • #590 Fix centre and diagonal being properties on Images (@patricksnape)
  • #592 Refactor out bounding_box method (@patricksnape)
  • #566 TriMesh utilities (@jabooth)
  • #593 Minor bugfix on AnimationOptionsWidget (@nontas)
  • #587 promote non-inplace crop methods, crop performance improvements (@jabooth, @patricksnape)
  • #586 fix as_matrix where the iterator finished early (@jabooth)
  • #574 Widgets for IPython3 (@nontas, @patricksnape, @jabooth)
  • #588 test condaci 0.2.1, less noisy slack notifications (@jabooth)
  • #568 rescale_pixels() for rescaling the range of pixels (@jabooth)
  • #585 Hotfix: suffix change led to double path resolution. (@patricksnape)
  • #581 Fix the landmark importer in case the landmark file has a ‘.’ in its filename. (@grigorisg9gr)
  • #584 new print_progress visualization function (@jabooth)
  • #580 export_pickle now ensures pathlib.Path save as PurePath (@jabooth)
  • #582 New readers for Middlebury FLO and FRGC ABS files (@patricksnape)
  • #579 Fix the image importer in case of upper case letters in the suffix (@grigorisg9gr)
  • #575 Allowing expanding user paths in exporting pickle (@patricksnape)
  • #577 Change to using run_test.py (@patricksnape)
  • #570 Zoom (@jabooth, @patricksnape)
  • #569 Add new point_in_pointcloud kwarg to constrain (@patricksnape)
  • #563 TPS Updates (@patricksnape)
  • #567 Optional cmaps (@jalabort)
  • #559 Graphs with isolated vertices (@nontas)
  • #564 Bugfix: PCAModel print (@nontas)
  • #565 fixed minor typo in introduction.rst (@evanjbowling)
  • #562 IPython3 widgets (@patricksnape, @jalabort)
  • #558 Channel roll (@patricksnape)
  • #524 BREAKING CHANGE: Channels flip (@patricksnape, @jabooth, @jalabort)
  • #512 WIP: remove_all_landmarks convienience method, quick lm filter (@jabooth)
  • #554 Bugfix:visualize_images (@nontas)
  • #553 Transform docs fixes (@nontas)
  • #533 LandmarkGroup.init_with_all_label, init_* convenience constructors (@jabooth, @patricksnape)
  • #552 Many fixes for Python 3 support (@patricksnape)
  • #532 Incremental PCA (@patricksnape, @jabooth, @jalabort)
  • #528 New as_matrix and from_matrix methods (@patricksnape)

0.4.4 (2015/03/05)

A hotfix release for properly handling nan values in the landmark formats. Also, a few other bug fixes crept in:

  • Fix 3D Ljson importing
  • Fix trim_components on PCA
  • Fix setting None key on the landmark manager
  • Making mean_pointcloud faster

Also makes an important change to the build configuration that syncs this version of Menpo to IPython 2.x.

Github Pull Requests

  • #560 Assorted fixes (@patricksnape)
  • #557 Ljson nan fix (@patricksnape)

0.4.3 (2015/02/19)

Adds the concept of nan values to the landmarker format for labelling missing landmarks.

Github Pull Requests

  • #556 [0.4.x] Ljson nan/null fixes (@patricksnape)

0.4.2 (2015/02/19)

A hotfix release for landmark groups that have no connectivity.

Github Pull Requests

  • #555 don’t try and build a Graph with no connectivity (@jabooth)

0.4.1 (2015/02/07)

A hotfix release to enable compatibility with landmarker.io.

Github Pull Requests

  • #551 HOTFIX: remove incorrect tojson() methods (@jabooth)

0.4.0 (2015/02/04)

The 0.4.0 release (pending any currently unknown bugs), represents a very significant overhaul of Menpo from v0.3.0. In particular, Menpo has been broken into four distinct packages: Menpo, MenpoFit, Menpo3D and MenpoDetect.

Visualization has had major improvements for 2D viewing, in particular through the use of IPython widgets and explicit options on the viewing methods for common tasks (like changing the landmark marker color). This final release is a much smaller set of changes over the alpha releases, so please check the full changelog for the alphas to see all changes from v0.3.0 to v0.4.0.

Summary of changes since v0.4.0a2:

  • Lots of documentation rendering fixes and style fixes including this changelog.
  • Move the LJSON format to V2. V1 is now being deprecated over the next version.
  • More visualization customization fixes including multiple marker colors for landmark groups.

Github Pull Requests

  • #546 IO doc fixes (@jabooth)
  • #545 Different marker colour per label (@nontas)
  • #543 Bug fix for importing an image, case of a dot in image name. (@grigorisg9gr)
  • #544 Move docs to Sphinx 1.3b2 (@patricksnape)
  • #536 Docs fixes (@patricksnape)
  • #530 Visualization and Widgets upgrade (@patricksnape, @nontas)
  • #540 LJSON v2 (@jabooth)
  • #537 fix BU3DFE connectivity, pretty JSON files (@jabooth)
  • #529 BU3D-FE labeller added (@jabooth)
  • #527 fixes paths for pickle importing (@jabooth)
  • #525 Fix .rst doc files, auto-generation script (@jabooth)

v0.4.0a2 (2014/12/03)

Alpha 2 moves towards extending the graphing API so that visualization is more dependable.

Summary:

  • Add graph classes, PointUndirectedGraph, PointDirectedGraph, PointTree. This makes visualization of landmarks much nicer looking.
  • Better support of pickling menpo objects
  • Add a bounding box method to PointCloud for calculating the correctly oriented bounding box of point clouds.
  • Allow PCA to operate in place for large data matrices.

Github Pull Requests

  • #522 Add bounding box method to pointclouds (@patricksnape)
  • #523 HOTFIX: fix export_pickle bug, add path support (@jabooth)
  • #521 menpo.io add pickle support, move to pathlib (@jabooth)
  • #520 Documentation fixes (@patricksnape, @jabooth)
  • #518 PCA memory improvements, inplace dot product (@jabooth)
  • #519 replace wrapt with functools.wraps - we can pickle (@jabooth)
  • #517 (@jabooth)
  • #514 Remove the use of triplot (@patricksnape)
  • #516 Fix how images are converted to PIL (@patricksnape)
  • #515 Show the path in the image widgets (@patricksnape)
  • #511 2D Rotation convenience constructor, Image.rotate_ccw_about_centre (@jabooth)
  • #510 all menpo io glob operations are now always sorted (@jabooth)
  • #508 visualize image on MaskedImage reports Mask proportion (@jabooth)
  • #509 path is now preserved on image warping (@jabooth)
  • #507 fix rounding issue in n_components (@jabooth)
  • #506 is_tree update in Graph (@nontas)
  • #505 (@nontas)
  • #504 explicitly have kwarg in IO for landmark extensions (@jabooth)
  • #503 Update the README (@patricksnape)

v0.4.0a1 (2014/10/31)

This first alpha release makes a number of large, breaking changes to Menpo from v0.3.0. The biggest change is that Menpo3D and MenpoFit were created and thus all AAM and 3D visualization/rasterization code has been moved out of the main Menpo repository. This is working towards Menpo being pip installable.

Summary:

  • Fixes memory leak whereby weak references were being kept between landmarks and their host objects. The Landmark manager now no longer keeps references to its host object. This also helps with serialization.
  • Use pathlib instead of strings for paths in the io module.
  • Importing of builtin assets from a simple function
  • Improve support for image importing (including ability to import without normalising)
  • Add fast methods for image warping, warp_to_mask and warp_to_shape instead of warp_to
  • Allow masking of triangle meshes
  • Add IPython visualization widgets for our core types
  • All expensive properties (properties that would be worth caching in a variable and are not merely a lookup) are changed to methods.

Github Pull Requests

  • #502 Fixes pseudoinverse for Alignment Transforms (@jalabort, @patricksnape)
  • #501 Remove menpofit widgets (@nontas)
  • #500 Shapes widget (@nontas)
  • #499 spin out AAM, CLM, SDM, ATM and related code to menpofit (@jabooth)
  • #498 Minimum spanning tree bug fix (@nontas)
  • #492 Some fixes for PIL image importing (@patricksnape)
  • #494 Widgets bug fix and Active Template Model widget (@nontas)
  • #491 Widgets fixes (@nontas)
  • #489 remove _view, fix up color_list -> colour_list (@jabooth)
  • #486 Image visualisation improvements (@patricksnape)
  • #488 Move expensive image properties to methods (@jabooth)
  • #487 Change expensive PCA properties to methods (@jabooth)
  • #485 MeanInstanceLinearModel.mean is now a method (@jabooth)
  • #452 Advanced widgets (@patricksnape, @nontas)
  • #481 Remove 3D (@patricksnape)
  • #480 Graphs functionality (@nontas)
  • #479 Extract patches on image (@patricksnape)
  • #469 Active Template Models (@nontas)
  • #478 Fix residuals for AAMs (@patricksnape, @jabooth)
  • #474 remove HDF5able making room for h5it (@jabooth)
  • #475 Normalize norm and std of Image object (@nontas)
  • #472 Daisy features (@nontas)
  • #473 Fix from_mask for Trimesh subclasses (@patricksnape)
  • #470 expensive properties should really be methods (@jabooth)
  • #467 get a progress bar on top level feature computation (@jabooth)
  • #466 Spin out rasterization and related methods to menpo3d (@jabooth)
  • #465 ‘me_norm’ error type in tests (@nontas)
  • #463 goodbye ioinfo, hello path (@jabooth)
  • #464 make mayavi an optional dependency (@jabooth)
  • #447 Displacements in fitting result (@nontas)
  • #451 AppVeyor Windows continuous builds from condaci (@jabooth)
  • #445 Serialize fit results (@patricksnape)
  • #444 remove pyramid_on_features from Menpo (@jabooth)
  • #443 create_pyramid now applies features even if pyramid_on_features=False, SDM uses it too (@jabooth)
  • #369 warp_to_mask, warp_to_shape, fast resizing of images (@nontas, @patricksnape, @jabooth)
  • #442 add rescale_to_diagonal, diagonal property to Image (@jabooth)
  • #441 adds constrain_to_landmarks on BooleanImage (@jabooth)
  • #440 pathlib.Path can no be used in menpo.io (@jabooth)
  • #439 Labelling fixes (@jabooth, @patricksnape)
  • #438 extract_channels (@jabooth)
  • #437 GLRasterizer becomes HDF5able (@jabooth)
  • #435 import_builtin_asset.ASSET_NAME (@jabooth)
  • #434 check_regression_features unified with check_features, classmethods removed from SDM (@jabooth)
  • #433 tidy classifiers (@jabooth)
  • #432 aam.fitter, clm.fitter, sdm.trainer packages (@jabooth)
  • #431 More fitmultilevel tidying (@jabooth)
  • #430 Remove classmethods from DeformableModelBuilder (@jabooth)
  • #412 First visualization widgets (@jalabort, @nontas)
  • #429 Masked image fixes (@patricksnape)
  • #426 rename ‘feature_type’ to ‘features throughout Menpo (@jabooth)
  • #427 Adds HDF5able serialization support to Menpo (@jabooth)
  • #425 Faster cached piecewise affine, Cython varient demoted (@jabooth)
  • #424 (@nontas)
  • #378 Fitting result fixes (@jabooth, @nontas, @jalabort)
  • #423 name now displays on constrained features (@jabooth)
  • #421 Travis CI now makes builds, Linux/OS X Python 2.7/3.4 (@jabooth, @patricksnape)
  • #400 Features as functions (@nontas, @patricksnape, @jabooth)
  • #420 move IOInfo to use pathlib (@jabooth)
  • #405 import menpo is now twice as fast (@jabooth)
  • #416 waffle.io Badge (@waffle-iron)
  • #415 export_mesh with .OBJ exporter (@jabooth, @patricksnape)
  • #410 Fix the render_labels logic (@patricksnape)
  • #407 Exporters (@patricksnape)
  • #406 Fix greyscale PIL images (@patricksnape)
  • #404 LandmarkGroup tojson method and PointGraph (@patricksnape)
  • #403 Fixes a couple of viewing problems in fitting results (@patricksnape)
  • #402 Landmarks fixes (@jabooth, @patricksnape)
  • #401 Dogfood landmark_resolver in menpo.io (@jabooth)
  • #399 bunch of Python 3 compatibility fixes (@jabooth)
  • #398 throughout Menpo. (@jabooth)
  • #397 Performance improvements for Similarity family (@jabooth)
  • #396 More efficient initialisations of Menpo types (@jabooth)
  • #395 remove cyclic target reference from landmarks (@jabooth)
  • #393 Groundwork for dense correspondence pipeline (@jabooth)
  • #394 weakref to break cyclic references (@jabooth)
  • #389 assorted fixes (@jabooth)
  • #390 (@jabooth)
  • #387 Adds landmark label for tongues (@nontas)
  • #386 Adds labels for the ibug eye annotation scheme (@jalabort)
  • #382 BUG fixed: block element not reset if norm=0 (@dubzzz)
  • #381 Recursive globbing (@jabooth)
  • #384 Adds support for odd patch shapes in function extract_local_patches_fast (@jalabort)
  • #379 imported textures have ioinfo, docs improvements (@jabooth)

v0.3.0 (2014/05/27)

First public release of Menpo, this release coincided with submission to the ACM Multimedia Open Source Software Competition 2014. This provides the basic scaffolding for Menpo, but it is not advised to use this version over the improvements in 0.4.0.

Github Pull Requests

  • #377 Simple fixes (@patricksnape)
  • #375 improvements to importing multiple assets (@jabooth)
  • #374 Menpo’s User guide (@jabooth)