pico-detect 0.3.0

Pixel Intensity Comparison-based Object (PICO) detection library.
Documentation

crates-badge docs-badge license-badge

pico-detect

This library is a reimplementation of Pixel Intensity Comparison-based Object (PICO) detection algorithms in Rust:

  • Detector: Cascade of binary classifiers from pico;
  • Localizer: Localization with an ensemble of randomized trees from picojs (see lploc.js);
  • Shaper: Alignment with an ensemble of regression trees from dlib (see shape_predictor).

Example

To run CLI example, which takes an image, finds all faces, detects some landmarks and pupils:

cargo run --release --example cli -- --input tests/assets/Lenna_\(test_image\).png --output result.png

Output image result.png should be like this:

visualization example

Models

Each algorithm requires to be loaded with correspondent binary model.

model algorithm source Description
facefinder Detector pico Human face classifier
puploc Localizer puploc source Human eye pupil localizer
shaper_5_face_landmarks Shaper shape_predictor_5_face_landmarks Human 5 face landmarks

Roadmap

  • object detection;
  • object localization;
  • shape prediction;
  • cli example;
  • WebAssembly support (wasm32-unknown-unknown target) and web example.

References

  1. N. Markus, M. Frljak, I. S. Pandzic, J. Ahlberg and R. Forchheimer, "Object Detection with Pixel Intensity Comparisons Organized in Decision Trees"

  2. Eye pupil localization with an ensemble of randomized trees

  3. One Millisecond Face Alignment with an Ensemble of Regression Trees