Skip to content
This repository

Face detection for cats in JavaScript - demo for a TXJS talk

tree: e2bcf0d2a6

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 testing
Octocat-spinner-32 training
Octocat-spinner-32 README.md
Octocat-spinner-32 features.js
Octocat-spinner-32 hog-params.json
Octocat-spinner-32 kittydar.js
Octocat-spinner-32 package.json
Octocat-spinner-32 test.js
Octocat-spinner-32 utils.js
README.md

Kittydar

Kittydar is short for kitty radar. Kittydar takes an image or a canvas and tells you the locations of all the cats in the image:

var cats = kittydar.detectCats(image);

console.log("there are", cats.length, "cats in this photo");

console.log(cats[0]);

// { x: 30, y: 200, width: 140, height: 140 }

Install

For node:

npm install kittydar

Or grab the browser file

Specifics

Kittydar takes either a fully-loaded Image or a canvas element. In node you can use the Image or Canvas element from node-canvas.

Kittydar with give an approximate rectangle around the cat's head. Each rectangle has an x and y for the top left corner, and a width and height of the rectangle.

Kittydar will miss cats sometimes, and sometimes classify non-cats as cats. It's best at detecting upright cats that are facing forward, but it can handle a small tilt or turn in the head.

How it works

Kittydar first chops the image up into many "windows" to test for the presences of a cat head. For each window, kittydar first extracts more tractable data from the image's data. Namely, it computes the Histogram of Orient Gradients descriptor of the image. This data describes the directions of the edges in the image (where the image changes from light to dark and vice versa) and what strength they are. This data is a vector of numbers that is then fed into a neural network which gives a number from 0 to 1 on how likely the histogram data represents a cat.

The neural network (the JSON of which is located in this repo) has been pre-trained with thousands of photos of cat heads and their histograms, as well as thousands of non-cats. See the repo for the node training scripts.

Something went wrong with that request. Please try again.