All Projects → nenadmarkus → Pico

nenadmarkus / Pico

Licence: mit
A minimalistic framework for real-time object detection (with a pre-trained face detector)

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Pico

Brfv4 javascript examples
BRFv4 - HTML5/Javascript - examples project. Reference implementation for all other platform example packages.
Stars: ✭ 460 (-18%)
Mutual labels:  face, detection
timeline
Timeline - A photo organizer
Stars: ✭ 39 (-93.05%)
Mutual labels:  detection, face
Jeelizfacefilter
Javascript/WebGL lightweight face tracking library designed for augmented reality webcam filters. Features : multiple faces detection, rotation, mouth opening. Various integration examples are provided (Three.js, Babylon.js, FaceSwap, Canvas2D, CSS3D...).
Stars: ✭ 2,042 (+263.99%)
Mutual labels:  face, detection
Mtcnn
MTCNN face detection implementation for TensorFlow, as a PIP package.
Stars: ✭ 1,689 (+201.07%)
Mutual labels:  face, detection
jeelizPupillometry
Real-time pupillometry in the web browser using a 4K webcam video feed processed by this WebGL/Javascript library. 2 demo experiments are included.
Stars: ✭ 78 (-86.1%)
Mutual labels:  detection, face
Face landmark factory
These are a set of tools using OpenCV, Tensorflow and Keras, with which you can generate your own model of facial landmark detection and demonstrate the effect of newly-generated model easily.
Stars: ✭ 120 (-78.61%)
Mutual labels:  face, detection
Raspberrypi Facedetection Mtcnn Caffe With Motion
MTCNN with Motion Detection, on Raspberry Pi with Love
Stars: ✭ 204 (-63.64%)
Mutual labels:  face, detection
Dockerface
Face detection using deep learning.
Stars: ✭ 173 (-69.16%)
Mutual labels:  face, detection
jeelizGlanceTracker
JavaScript/WebGL lib: detect if the user is looking at the screen or not from the webcam video feed. Lightweight and robust to all lighting conditions. Great for play/pause videos if the user is looking or not, or for person detection. Link to live demo.
Stars: ✭ 68 (-87.88%)
Mutual labels:  detection, face
ARFaceFilter
Javascript/WebGL lightweight face tracking library designed for augmented reality webcam filters. Features : multiple faces detection, rotation, mouth opening. Various integration examples are provided (Three.js, Babylon.js, FaceSwap, Canvas2D, CSS3D...).
Stars: ✭ 72 (-87.17%)
Mutual labels:  detection, face
Mtcnn
face detection and alignment with mtcnn
Stars: ✭ 66 (-88.24%)
Mutual labels:  face, detection
Php Opencv Examples
Tutorial for computer vision and machine learning in PHP 7/8 by opencv (installation + examples + documentation)
Stars: ✭ 333 (-40.64%)
Mutual labels:  face, detection
Tensorflow Face Detection
A mobilenet SSD based face detector, powered by tensorflow object detection api, trained by WIDERFACE dataset.
Stars: ✭ 711 (+26.74%)
Mutual labels:  face, detection
Opennpd
C++ detect and train of "A Fast and Accurate Unconstrained Face Detector".
Stars: ✭ 126 (-77.54%)
Mutual labels:  face, detection
brfv4 android examples
Android Studio project (Java)
Stars: ✭ 43 (-92.34%)
Mutual labels:  detection, face
brfv4 win examples
Windows C++ examples utilizing OpenCV for camera access and drawing the face tracking results.
Stars: ✭ 13 (-97.68%)
Mutual labels:  detection, face
Face Track Detect Extract
💎 Detect , track and extract the optimal face in multi-target faces (exclude side face and select the optimal face).
Stars: ✭ 434 (-22.64%)
Mutual labels:  face, detection
Vrn
👨 Code for "Large Pose 3D Face Reconstruction from a Single Image via Direct Volumetric CNN Regression"
Stars: ✭ 4,391 (+682.71%)
Mutual labels:  face
Multi Human Parsing
🔥🔥Official Repository for Multi-Human-Parsing (MHP)🔥🔥
Stars: ✭ 507 (-9.63%)
Mutual labels:  detection
Face Pose Net
Estimate 3D face pose (6DoF) or 11 parameters of 3x4 projection matrix by a Convolutional Neural Network
Stars: ✭ 464 (-17.29%)
Mutual labels:  face

Pixel Intensity Comparison-based Object detection (pico)

This repository contains the code for real-time face detection. Check out a demo video at http://www.youtube.com/watch?v=1lXfm-PZz0Q to get the better idea.

The pico framework is a modifcation of the standard Viola-Jones method. The basic idea is to scan the image with a cascade of binary classifers at all reasonable positions and scales. An image region is classifed as an object of interest if it successfully passes all the members of the cascade. Each binary classifier consists of an ensemble of decision trees with pixel intensity comparisons as binary tests in their internal nodes. This enables the detector to process image regions at very high speed. The details are given in http://arxiv.org/abs/1305.4537.

Some highlights of pico are:

  • high processing speed;
  • there is no need for image preprocessing prior to detection;
  • there is no need for the computation of integral images, image pyramid, HOG pyramid or any other similar data structure;
  • all binary tests in internal nodes of the trees are based on the same feature type (not the case in the V-J framework);
  • the method can easily be modified for fast detection of in-plane rotated objects.

It can be said that the main limitation of pico is also its simplicity: pico should be avoided when there is a large variation in appearance of the object class. This means, for example, that pico should not be used for detecting pedestrians. Large, modern convolutional neural networks are suitable for such cases.

However, pico can be used for simple object classes (e.g., faces or templates) when real-time performance is desired.

Detecting objects in images and videos

The folder rnt/ contains all the needed resources to perform object detection in images and video streams with pre-trained classification cascades. Specifically, sample applications that perform face detection can be found in the folder rnt/samples/.

Note that the library also enables the detection of rotated objects without the need of image resampling or classification cascade retraining. This is achieved by rotating the binary tests in internal tree nodes, as described in the paper.

Embedding the runtime within your application

To use the runtime in your own application, you have to:

  • Include a prototype of find_objects(...) in your code (for example, by adding #include picornt.h)
  • Compile picornt.c with your code
  • Load/include a classification cascade generated with picolrn (e.g., rnt/cascades/facefinder)
  • Invoke find_objects(...) with appropriate parameters

Notice that there are no specific library dependencies, i.e., the code can be compiled out-of-the-box with a standard C compiler.

To get a feel for how the library works, we recommend that you look at rnt/samples/native/sample.c as is was specifically written to be used as documentation.

Learning custom object detectors

The program picolrn.c (available in the folder gen/) enables you to learn your own (custom) object detectors. The training data has to be provided in a specific format. The details are printed to the standard output when picolrn is invoked without parameters. It is often convenient to pipe this information into a text file:

$ ./picolrn > howto.txt

A tutorial that guides you through the process of learning a face detector can be found in the folder gen/sample/.

Citation

If you use the provided code/binaries for your work, please cite the following paper:

N. Markus, M. Frljak, I. S. Pandzic, J. Ahlberg and R. Forchheimer, "Object Detection with Pixel Intensity Comparisons Organized in Decision Trees", http://arxiv.org/abs/1305.4537

Contact

For any additional information contact me at [email protected].

Copyright (c) 2013, Nenad Markus. All rights reserved.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].