Face recognition has gone mainstream, and is used to power a wide range of use cases. Developers have integrated face recognition into phones, laptops and a growing number of apps that use face recognition to protect personal data. Retailers use face recognition to prevent crime and fraud. Banks are using the technology to facilitate secure transactions. Even marine biologists are getting in on the act by using facial recognition to track individual dolphins.
Facial recognition adoption is also transforming enterprises. Gartner reports that the number of business using biometric authentication on smartphone apps for workforce access will grow from fewer than 5 percent in 2018 to 70 percent in 2022.
Building a facial recognition algorithm from scratch is no simple task. In particular, it is incredibly difficult to create an algorithm that works well across demographics, from a distance, with large databases and in challenging lighting conditions. This is why most developers choose to use a proven algorithm rather than creating their own.
Fortunately, there are face recognition software development kits (SDKs) available that empower developers to integrate facial recognition capabilities into enterprise and consumer-facing solutions. For those who don’t know, an SDK is a set of tools used for developing applications provided by hardware and software providers, usually comprised of application programming interfaces (APIs), sample code, documentation, and other resources.
Since no two face recognition SDKs are alike, here are five of the most important features that developers should look for when choosing a face recognition SDK.
Highly Accurate Face Detection in the Wild
A face recognition SDK should include an algorithm that has been proven to accurately detect faces in-the-wild scenarios. Even algorithms that work well in 1:1 cooperative matching scenarios might not be able to detect multiple faces in wild environments (commonly referred to as 1:N matching). To work well in the wild, the algorithm must be able to detect faces at odd angles, in crowds and in challenging lighting conditions.
Once the face recognition SDK has detected a face, it can then assign a numerical score to the image that indicates the level of quality of that facial image in terms of image resolution, amount of facial occlusion, and other features. This can be used to apply different confidence intervals for matches.
A confidence value allows you to set a threshold that measures how close a probe image matches an enrolled image template generated by the neural net. The value can be set in a way that minimizes false positives or false negatives. Having a higher confidence threshold will show fewer false positives and more false negatives. While having a lower confidence threshold will show more false positives and fewer false negatives. This is a trade off, but it adds flexibility to apply to different use cases. Since it’s essential for humans to verify all potential matches, the confidence value can control the amount of potential matches that humans need to verify.
Enrollment and Probing
When a facial image is stored in a database, it is converted to a numerical representation of that image known as a template. Face recognition typically works by capturing an image of a person’s face (once detected) and algorithmically comparing that person’s facial template to those templates that have been previously stored in a database. The result is either a “hit” (i.e. a match) or a “miss.”
After images are enrolled, a face recognition SDK should offer the ability to probe the database of enrolled images. “Probing” refers to the function in which the software analyzes the facial data of a captured face, usually from live video, and compares it to the other facial templates stored in the database to decide whether you have a match, thus establishing whether the captured face matches the person of interest.
Lastly, a facial recognition SDK should provide tools to ensure your software is highly flexible and scalable. This means providing flexible applications such as REST APIs, which are accessible over the internet and can utilize any language, allowing your software to be platform agnostic. Compiled libraries, by comparison, are far less flexible. Flexibility is crucial for face recognition software development because it often must be integrated with other software and hardware and be used in multiple locations.
These are just a few of the fundamental features developers should prioritize when selecting a facial recognition SDK. At FaceFirst, we offer an SDK that provides a full face recognition solution used by world class organizations across retail, transportation, government and many other industries. If you’re building a face recognition solution or interested in integrating facial recognition into an existing solution, feel free to contact us to find out how to be one of our facial recognition partners.