Physical Feature Algorithms

In the past two years, there has been an uptick in the competitions hosted for extracting and analyzing features such as facial features and posture features in people. The attention being paid to feature recognition is understandable once one looks at the projects associated with this field.

Introduction:

Facial recognition algorithms were implemented as early as in the 1960’s. At the time, it was crucial that the face was well-lit, properly angled, and had a neutral facial expression in order for the machine to recognize the person. From that point forward, facial recognition software has become more adept at recognizing people. More features of the human physiology such as posture have started to be analyzed with some degree of certainty, and features that once would make an image unrecognizable such as certain lighting conditions are now considered noise. The implications of said technology is widespread and far-reaching.

Algorithm Example:

Current technology makes it possible for one to grab their laptop and implement a simple facial visualization algorithms. There are multiple ways to capture and analyze an image. There is real-time video that can be captured and analyzed, still-image analysis, analysis of image with different types of noise attached, and more. This is an example of an algorithm that uses dlib (Be sure to install the library as it is not included in normal C++). Also, credits to Davis King for writing the original code the algorithm is based on:

  #include <.../frontal_face_detector.h>
  #include <.../gui_widgets.h>
  #include <.../image_io.h>
  #include <iostream>
  #include <fstream>
  #include <cstdlib>

  using namespace dlib;

  int main(){
    //Create an array where there are RGB pixels present.
    array2d<rgb_pixel>image_array;
    //This is a detector class for the facial features.
    auto img_detector = get_frontal_face_detector();
    //Make sure that the image is of the correct pixel type for analysis. 
    load_image(image_array, //put name of image file here.  Preferably JPEG);
    pyramid_up(image_array);
    auto detect_image = img_detector(image_array);
    //Show faces detected
    image_window image_win(image_array);
    image_win.add_overlay(detect_image, rgb_pixel(255, 0, 0));
    //Wait for user input to kill the program. 
    image_win.wait_until_closed();
  }
  

As long as dlib is installed, one can see how well dlib recognizes faces and will have an idea of how powerful the tools that exist currently are.

Current APIs and Libraries:

Currently, there are APIs and libraries that exist for physiological recognition. There are many more use cases for recognizing faces. With more interest in understanding features like gait, stance, and wounds, many of these libraries have diversified to analyze said physiological features. The preferred languages are C++ and Python. Some APIs and libraries one can use are OpenCV, dlib, Kairos, Microsoft Face API, and IBM Watson Visual Recognition.

Conclusion:

Physiological feature recognition is a field that shows much promise and prominence in the field of algorithms and visualizations. Currently, Topcoder is hosting the Human Posture Recognition Challenge. A previous challenge over this topic is the Facial Emotions Challenge. Be sure to check out upcoming challenges over this topic.