Showing posts with label facestorm. Show all posts
Showing posts with label facestorm. Show all posts

Monday, May 12, 2014

Binary classification performance

It is a frequent task to decide if specific object belongs to one of two classes. This task is called binary classification.

For example if we want to implement face detection (FD) algorithm we will first split image into number of fragments. After that we perform binary classification for each of them. Such classification will decide to which class (face / non-face) each fragment belongs to.

It seems to be a trivial task for humans, but for computer it's not so easy. So, if we want to achieve good results - it is very important to measure performance of our classification algorithm.

Let's agree that our binary classifier gives positive result if it believes that given fragment is a face and negative, if given fragment is not a face.

From the performance point of view, every classification attempt can produce one of four outcomes:
  • true positive - fragment is a face and classification result is positive
  • false positive  (or Type I error) - fragment is not a face but classification result is positive. 
  • true negative - fragment is not a face and classification result is negative
  • false negative (or Type II error) - fragment is a face and classification result is negative
Visually it can be represented as a confusion matrix:




Let's define TP, FP, TN and FN as a total number of true positive, false positive, true negative and false negative classification outcomes, correspondingly.

Having this 4 variables we can define following equations:

True positive rate (Recall):
    TPR = TP / (TP + FN)

True negative rate (Specificity):
    TNR = TN / (TN / FP)

Concept behind them is very simple - TPR tells how well our classification algorithm can pick real human faces and TNR says how resistant is our algorithm to fragments which are not faces.

In the next blog entry I will write about ROC curve, and how it can be used to tune binary classification algorithm performance.

Wednesday, April 30, 2014

FaceStorm Announcement

After almost two years of joint work SUPREMATIC and Smilart are proud to announce FaceStorm.

FaceStorm is platform, which uses facial recognition algorithms to reliably identify humans in cooperative and non-cooperative real-time scenarios.

With FaceStorm we able to match single face against gallery of 10,000 faces in about 80ms, using single, consumer grade, GPU accelerator.

Behind the scenes FaceStorm uses OSGi as a modularization technology, AMQP (RabbitMQ) for messaging, ZooKeeper for cluster coordination and MongoDB as a database. We also use CUDA for parallel computations.

FaceStorm uses our internally developed algorithms, which are able to robustly identify faces and be tolerant to natural and artificial distortions.

Images below are examples of faces acquired from the camera (left) which has been properly matched against gallery portraits (right).