12 June 2013

Congratulations to hackathons winners

We would like to dedicate this blog entry to new members of our growing community of developers who use computer vision in their products. Thanks to cloud API hub Mashape we had an opportunity to open our face detection and recognition API for free usage during several recent hackathons: AngelhackNYC and APIDays Mediterranea.

AngelhackNYC winner

During the AngelhackNYC “OrderCandy” team (Vache Asatryan, Pasha Riger, Antonio Pellegrino and others) built an ad system which used our face detection API to start the interaction with a person automatically when the person is detected in front of the ad screen. A short welcome message is followed by an offer to make an order from the local coffee shop menu. The order is made by using hand gestures on LeapMotion. Our API is also used to capture the picture of client face for giving the order out to the right person. Additionally, expression recognition is used to unlock an “Easter egg” (discounts, etc.) with a smile.

APIDays Mediterranea winner

During the APIDays Mediterranea “LoveHere” team (Javier Abadia, Jaime Nieves Martinez, and Francesc Puigvert Pell) in 7 hours built a dating platform which allows users to connect with nearby people without compromising personal information. After taking a picture of him/herself the user is registered in the system. The photo is analyzed to estimate age and gender (that’s where our API was really useful). The app also uses the ArcGIS Online hosted map service for storing user’s location and finding other nearby users. Additionally, the user can perform phone calls to nearby potential dates without revealing the personal phone number. Another great Twillio API was used for that. Check out the demo video here.

We wish nice, fun and productive days for the teams, Mashape and all of you guys.

23 April 2013

Face recognition in action

Last week we have rolled out some updates to our face recognition functionality. First of all the demo on our website was updated with a recognition page.
Here you can pick two photos from a set of provided ones or use your own images to see recognition results between them. By default two most similar faces from the photos are selected, but you can click or tap around to see one face (with dotted rectangle) similarity score with all others.

Faces/group improvements

The demo uses new functionality we added to faces/group method - a similarity matrix. The method now takes optional return_similarities parameter, and if it has a value of true then for each detected face tag, within the response, we return similarity scores with all other tags in all photos in the request (except for the zero scores as we want to keep the response size reasonable small). With this new functionality you now have 3 options to group people in the photos: fully automatic; automatic with specifying your own threshold value for grouping (instead of default value of 70) and manual by examining the similarity matrix and adding you own logic on top for greatest flexibility. The third option also allows image verification scenario, when you need an answer to a question like "How similar are two persons in these two photos?".
Faces/group works great when there are small finite set of photos to compare. But if you need to compare a person in a photo with a database of two million people or group people in several hundreds or thousands of photos then faces/recognize is your choice.

The recognition workflow

Recognition scenario has a slightly more complicated workflow. People have to be enrolled to a database first: their faces have to be saved by the means of tags/save method and the user have to be prepared for recognition using faces/train method. Additional face impressions can be added or some of them can be removed in the future using tags/save or tags/remove methods and faces/train have to be re-run on the user to update its information for recognition. Note that the more impressions of the user you add (with different head rotation, expression, lightning conditions, with and without glasses, beard, etc.), the more likely it will be reliably recognized later. Also note that if you want to remove a user from the database you have to remove all user tags from the system (call tags/remove with tag list obtained from tags/get for the user) and call faces/train for the same user to remove its information from the recognition system.
Recognition results for each tag in response from faces/recognize method contain list of value pairs: a user id it was matched with and a confidence value of the match (similarity score). You should compare the confidence with a threshold value of the tag to decide if the match is reliable or not. The threshold value depends on quality of the face itself and also the database size it was matched against.
That is the second improvement we have rolled out - dynamic tag threshold value along with more natural (for a human) matching similarity score normalization. You may notice that the confidence values you receive in the response now feel (and are) more accurate.
Because faces/recognize (and faces/group if requested) can be used to match a person against very large databases that can potentially yield a lot of matched users to be returned. You can now use limit parameter to return the specified maximum number of top matching results. If not specified a value of 100 is used.

The meaning of label

We see from the support requests that there is a bit of misunderstanding about label field value in the response. The thing is that the label returned with a tag in the results is the same label (if) used during tags/save or tags/add for the same tag for the same photo. It is not a recognition result, the same label faces/detect may return for the same tag in the same photo. It is saved for the tag, not for the user. If you need to store some additional information for a user and retrieve it along with recognition results, you have to store it in information system of yours and pull it from there after obtaining recognized user ids.

18 December 2012

Smile and glasses: the new attributes

Today we introduce the welcome addition to detected attributes family in Face Detection and Recognition API: smiling and glasses. These attributes enable new scenarios for automatic photo processing such us: selecting photos with smiling faces, filtering out photos with sunglasses during upload, offering glasses only to a customer already wearing ones, and many more.
When you ask for glasses attribute we actually return two: glasses and dark_glasses. The second one additionally allows to differentiate between clear and dark glasses.
Check out the demo and see the attributes detection in action! The algorithms behind them are quite new and your feedback on these attributes would be very welcome.
If you are using our NuGet package, please update it to the latest version.
If you think that other facial attributes could add value to your applications, let us know.

12 December 2012

Paid subscription plans are available

After we released our Face Detection and Recognition API about two months ago we receive a lot of feedback on the service. And the most popular requests are: "How we can perform more than 5000 API calls per month?", "How can we pay for additional API usage?", "Are there any paid subscription plans available?" and so on. We understand that you need to use our service in a production environment and the free plan feature set may be insufficient for your application. And today we are proud to present our paid subscription plans for you:

P2
P1
FREE
Subscription
€100/mo
€50/mo
€0/mo
Calls per month
100000
40000
5000
Each additional call
€0.01
€0.0125
-
Calls per day
1-100000
1-40000
5000
Calls per hour
1-100000
1-40000
100
Trained tags per account
1000
1000
1000
Support
2 business days
2 business days

You can upgrade to a higher level subscription plan any time your application needs to grow. And if your application needs outgrow our existing subscription plans feel free to contact us.
Regardless of the availability of the paid plans, the free one is not gone. We are planning to continue providing it in the foreseeable future for evaluation purposes and small-scale applications.

07 December 2012

Using BeginDetect and other methods in FCClient

Our official Face Detection and Recognition API client for the .NET Framework follows Asynchronous Programming Model. This model enables non-blocking calls to potentially long-running operations such as web service calls. In the case of Silverlight it is the only available way to call a web service (synchronous GetRequestStream, GetResponse and other operations are missing from HttpWebRequest class). Our client is a portable library, i.e. it has to work not only on full .NET Framework but also on Silverlight and Windows Phone. And we, like Silverlight, want to encourage you to follow good practices and not to block the UI thread during web service calls.
That is why the methods in the FCClient class support only asynchronous operations.
However we understand that for rapid prototyping and research purposes following APM model could be an overkill. Also we understand from support request that many developers are not familiar with APM. Fortunately there is an easy way to perform an asynchronous operations synchronously. Just pass null for callback and state in the call to Begin* method and pass its result to the corresponding End* method like in the following example:

FCClient client = new FCClient(yourApiKey, yourApiSecret);
FCResult result = client.Account.EndAuthenticate(

    client.Account.BeginAuthenticate(null, null));

Similarly face detection operation can be performed like this:

Stream stream = System.IO.File.OpenRead(@"C:\image.jpg");
FCResult result = client.Faces.EndDetect(

    client.Faces.BeginDetect(null, new Stream[] { stream },
    Detector.Default, Attributes.Default, null, null));

The result.Photos[0].Tags collection will contain the detected faces.

In case you are using the async feature of C# 5 (or corresponding VB.NET version) the APM pattern can be easily converted to Task<FCResult> to be awaited on:

Task<FCResult> = Task.Factory.FromAsync<FCResult>(
    client.Faces.BeginDetect(null, new Stream[] { stream },
    Detector.Default, Attributes.Default, null, null),
    client.Faces.EndDetect);

UPD: We have updated the client library to include async methods for supported platforms (.NET Framework 4.5,  .NET for Windows Store Apps and Windows Phone 8) and they can be used as follows:

FCResult result = await client.Faces.DetectAsync(
    null, new Stream[] { stream },
    Detector.Default, Attributes.Default);

08 October 2012

REST Face Detection and Recognition API released


Today SkyBiometry introduces cloud-based Face Detection and Recognition API. At the core of the product is one of the worlds best algorithms for the detection and recognition of faces that is successfully used in many commercial products around the globe.
We think face.com team did a great job at creating a REST-like API for face detection, face attributes classifications and face recognition. We decided to help the developers who invested time and money in creating applications which use this soon to be discontinued API. Our product is intended to be a drop-in replacement for your applications. However, SkyBiometry uses completely different computer vision algorithms for face detection and recognition and, therefore, the results may differ.
Even if you haven't used any other cloud-based face recognition API yet it is very easy to explore the capabilities and get started. It's free! Follow easy and straightforward instructions and start enjoying new cloud face detection and recognition API provider. We have a NuGet package ready for Visual Studio developers and we will have more client libraries ready in the coming weeks.
Note that classification of some facial attributes is not implemented yet. If you need them desperately, please, let us know and we will do our best to implement them as the first additions to already used algorithms.
SkyBiometry is committed to improve the product and make new cloud-based biometric products, but we need your feedback. It will help us prioritize development of features that you need. Feel free to provide it here or on our user voice site.

04 October 2012

Welcome to SkyBiometry Blog

Welcome to SkyBiometry blog - the official source of information about SkyBiometry company and its products.
SkyBiometry is a spin-off of a successful biometric company with the goal to provide biometric technology as a service. The technology behind us is a result of continuous algorithm research and software development in the areas of biometrics and object recognition that is delivered all around the world for more than 20 years. Members of our team are professionals having 5-15 years of experience in biometric solution development as well as algorithm research and consultancy. We believe that the rapid growth of cloud technologies open opportunities to deliver better products faster and scale out easier for our customers. And now we are ready to deliver the technology we know in the form you need.
Stay tuned to this blog for information about our current and future products, research & development and general thoughts about biometric industry. Or if you prefer, join us on
Facebook, follow us on Twitter or Google+.
For more information
contact us directly.