face recognition

  • The method simulates human perception.
  • Has the advantages of 3D models without the complexity.
  • Robust against illumination, occlusion, facial hair, makeup, head pose and expression.
  • Automatically locates informative image regions that are used for feature extraction.
  • Invariant to some degree to translation, rotation and dilation.
  • Easy to update, low computational cost and fast.
  • Suited to both embedded and cloud application.
  • Speaker recognition also available with same APIs.


smartience solution

  • C++ library with build scripts for Windows, Qt, iOS, Android (NDK) and Azure.
  • Matlab implementation available.
  • No external dependencies, all source code available.
  • Low level functionality provided by OpenCV (BSD license).
  • Leverages active development in the open source community, e.g. for optimization with SSE3 and NEON.
  • Simple APIs for training and testing. Can use to recognize or authenticate.
  • Compact XML database.


android demo

The application has not been released to the Google Play store but the APK is available on request. Demos are also available for Windows desktop (recommended if you already have a test corpus) or Matlab.



Take or choose a photo to get to the “Face Detect” screen.

Up to 5 faces are detected, shown here so you get a sense for the detection algorithm. The faceboxes are automatically positioned and reshaped to the aspect ratio required by the database.

Normally only 1 face will be presented and this will be used for the next stage of enrollment or matching.

Face Match: The crop will be displayed at larger size. Analysis will use available watchlists in turn starting with the current one. A busy indicator shows that background processing is taking place.

The current or active database is ‘sticky’ and can be changed only on the Enroll screen.

Enroll: The crop is shown at actual pixels. First an existing or a new database is selected. The info button shows the status of the currently selected database.

The confirm button starts the processing for the enrollment with a busy indication. After a ‘completed’ message, the info button can be used to check the additional features added to the database.