npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

picoface

v3.0.1

Published

A small JavaScript library for detecting faces using the PICO algorithm

Readme

PICO Face Detector

A small JavaScript library for detecting faces using the PICO algorithm with the face rotation invariant implementation.

DEMO

Usage

An example of using the basic functions of the library:

// load cascade
fetch('./data/classifier.dat')
  .then(function(response) {
    if (!response.ok) throw Error(response.statusText || 'Request error');
    return response.arrayBuffer();
  })
  .then(function(cascade) {
    // create face detector with options
    return PicoFace(cascade, {
      shiftfactor: 0.1, // move the detection window by 10% of its size
      scalefactor: 1.1, // resize the detection window by 10% when moving to the higher scale
      initialsize: 0.1, // minimum size of a face (10% of image area)
      rotation: [0, 30, 330], // rotation angles in degrees
      threshold: 0.2, // overlap threshold
      memory: 3 // number of images in the memory
    });
  })
  .then(function(detect) {
    // image = ImageData
    return detect(image);
  })
  .then(function(dets) {
    // dets = [{ r: rows, c: cols, s: size, q: quality, a: angle }]
    console.log(dets);
  });

All parameters of the library are set in the constructor, here is their description:

| Parameter | Default | Description | |-------------|--------------|---------------------------------------------------------------------------------------| | shiftfactor | 0.1 | Sliding window movement step as a percentage (10%) of the image size | | scalefactor | 1.1 | Sliding window resizing step as a percentage (10%) of image size | | initialsize | 0.1 | Initial size of the sliding window as a percentage (10%) of the image size | | threshold | 0.2 | Percentage (20%) of intersections of found candidates for grouping them into one area | | rotation | [0] | Array of rotation angles to be searched (0 to 360 in 1 degree increments) | | memory | 1 | Number of images (frames) in memory to improve detection quality |

The output is an array of areas where the algorithm assumes there are faces. Here is a description of this area:

| Feature | Description | |-------------|--------------------------------------------------------------------------------------| | c | X-coordinate of the center of the found face area | | r | Y-coordinate of the center of the found face area | | s | Size of found area (width and height or diameter) | | q | Detection quality (higher is better quality) | | a | Rotation angle of the image (the most likely one listed in the rotation parameter) |

Build and run

Build the library bundle in the directory ./dist/:

npm install
npm run build

Start the demo webserver:

npm run dev

Related projects

  • PICO: https://github.com/nenadmarkus/pico
  • picojs: https://github.com/tehnokv/picojs
  • tracking.js: https://github.com/eduardolundgren/tracking.js