Giter Club home page Giter Club logo

website's Introduction

menpo

PyPI Release BSD License Code style: black
Python 3.6 Support Python 3.7 Support Python 3.8 Support Python 3.9 Support

Menpo. The Menpo Project Python package for handling annotated data.

What is Menpo?

Menpo is a Menpo Project package designed from the ground up to make importing, manipulating and visualizing image and mesh data as simple as possible. In particular, we focus on annotated data which is common within the fields of Machine Learning and Computer Vision. All core types are Landmarkable and visualizing these landmarks is very simple. Since landmarks are first class citizens within Menpo, it makes tasks like masking images, cropping images inside landmarks and aligning images very simple.

Menpo were facial armours which covered all or part of the face and provided a way to secure the top-heavy kabuto (helmet). The Shinobi-no-o (chin cord) of the kabuto would be tied under the chin of the menpo. There were small hooks called ori-kugi or posts called odome located on various places to help secure the kabuto's chin cord.

--- Wikipedia, Menpo

Installation

Here in the Menpo Team, we are firm believers in making installation as simple as possible. Unfortunately, we are a complex project that relies on satisfying a number of complex 3rd party library dependencies. The default Python packing environment does not make this an easy task. Therefore, we evangelise the use of the conda ecosystem, provided by Anaconda. In order to make things as simple as possible, we suggest that you use conda too! To try and persuade you, go to the Menpo website to find installation instructions for all major platforms.

If you feel strongly about using Menpo with the most commonly used Python package management system, pip, then you should be able to install Menpo as follows:

> pip install menpo

We strongly advocate the use of conda which does not require compilation for installing Menpo or it's dependencies such as Numpy, SciPy or Matplotlib. Installation via conda is as simple as

> conda install -c conda-forge menpo

Build Status

And has the added benefit of installing a number of commonly used scientific packages such as SciPy and Numpy as Menpo also makes use of these packages.

CI Host OS Build Status
CircleCI linux/amd64 menpo

Usage

Menpo makes extensive use of Jupyter Notebooks to explain functionality of the package. These Notebooks are hosted in the menpo/menpo-notebooks repository. We strongly suggest that after installation you:

  1. Download the latest version of the notebooks
  2. Conda install Jupyter notebook and IPython: conda install jupyter ipython notebook
  3. Run jupyter notebook
  4. Play around with the notebooks.

Want to get a feel for Menpo without installing anything? You can browse the notebooks straight from the menpo website.

Other Menpo projects

Menpo is designed to be a core library for implementing algorithms within the Machine Learning and Computer Vision fields. For example, we have developed a number of more specific libraries that rely on the core components of Menpo:

  • menpofit: Implementations of state-of-the-art deformable modelling algorithms including Active Appearance Models, Constrained Local Models and the Supervised Descent Method.
  • menpo3d: Useful tools for handling 3D mesh data including visualization and an OpenGL rasterizer. The requirements of this package are complex and really benefit from the use of conda!
  • menpodetect: A package that wraps existing sources of object detection. The core project is under a BSD license, but since other projects are wrapped, they may not be compatible with this BSD license. Therefore, we urge caution be taken when interacting with this library for non-academic purposes.

Documentation

See our documentation on ReadTheDocs

Testing

We use pytest for unit tests.

After installing pytest, mock and pytest-mock, running

>> pytest .

from the top of the repository will run all of the unit tests.

Some small parts of Menpo are only available if the user has some optional dependency installed. These are:

  • 3D viewing methods, only available if menpo3d is installed
  • menpo.feature.dsift only available if cyvlfeat is installed
  • Some warping unit tests are only available if opencv is installed

website's People

Contributors

jabooth avatar nontas avatar patricksnape avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

Forkers

nontas

website's Issues

Update website to reflect new project structure more accurately.

Since we split menpo, menpofit, menpo3d and menpodetect into separate projects, the website should better reflect this.

Each project should have its own section of the website, and we need to be very clear about the following:

  • Menpo is the name of the team (and project as a whole). menpo (lowercase 'm') is the name of the image manipulation library.
  • menpo underlies all of the other projects.
  • Clear distinction between the responsibilities of each project.

new website release process - rough sketch

Firstly, I was thinking we could have the following structure in this repo:

./sources
    ./menpo  # submodule to menpo/menpo
    ./notebooks  # submodule to menpo/menpo-notebooks
    ./content  # our actual site content in Markdown
    ./html  # the theme used, Pellican stuff etc
./website  # submodule to menpo/menpo.github.io
./build
    ...  # stuff in here required to actually create the site 
    ... #  the build scripts themselves

By adding everything as submodules we can have a unified build command in here for pushing new releases to the website. Something like:

  1. We tag menpo/menpo with a new release number in setup.py and add git tag.
  2. Ensure the notebooks are all correct for this version. Tag the menpo/menpo-notebooks with same release tag.
  3. Upload new release to pypi, conda, brew, deb
  4. In here, bump both submodules to the new release tag.
  5. Run the build script - which reaches into the submodules to generate the site
  6. Commit the changes in the ./website submodule, pushing the new website live

The build script itself would be something along the lines of:

  1. Generate the normal static site using markdown stored in ./sources/content dumping to ./website
  2. Generate docs from ./sources/menpo dumping to ./website/docs/VERSION_NO
  3. Generate HTML from notebooks in ./sources/menpo-notebooks dumping to ./website/notebooks/VERSION_NO

The static site generated would be structured to link to docs/notebooks so the final build would seem like a contiguous whole.

I'm sure this won't be exactly what we do (for instance if we just want to write a blog post you don't want to generate all the docs/notebooks for the current version again so the static site generation has to be independent of this new release workflow) but as a general idea what do we think?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.