Coder Social home page Coder Social logo

shivaguntuku / python-face-client Goto Github PK

View Code? Open in Web Editor NEW

This project forked from skybiometry/python-face-client

0.0 1.0 0.0 211 KB

SkyBiometry Face Detection and Recognition REST API Python client library.

Home Page: https://www.skybiometry.com/Account

License: BSD 3-Clause "New" or "Revised" License

Python 100.00%

python-face-client's Introduction

SkyBiometry Face Detection and Recognition API client library

SkyBiometry Face Detection and Recognition REST API client library.

For more information about the API and the return values, visit the official documentation.

Example

Here is a short example demonstrating how you can use this client.

Lets say that we want to create our own private namespace and train it to recognize Guido Van Rossum.

Here are the images which we will use for training our namespace index:

And here is the image which hopefully, after training our index will be recognized as "Guido Van Rossum":

http://farm1.static.flickr.com/41/104498903_bad315cee0.jpg

  1. First we create our private namespace named testns (this can be done on the SkyBiometry page).

  2. Now we import the module and instantiate the class with our SkyBiometry API_KEY and API_SECRET (you can get them by registering your application on SkyBiometry page):

    >> from face_client import FaceClient
    >> client = FaceClient('API_KEY', 'API_SECRET')
    
  3. Before training our namespace index I just want to show you that the image is not already recognized:

    >> client.faces_recognize('guido', 'http://farm1.static.flickr.com/41/104498903_bad315cee0.jpg', namespace = 'testns')
    
    {
        u'status': u'success',
        u'photos': [{
            u'url': u'http://farm1.static.flickr.com/41/104498903_bad315cee0.jpg',
            u'width': 500,
            u'tags': [{
                u'eye_left': {u'y': 31.2, u'x': 55.6},
                u'confirmed': False,
                u'uids': [],
                u'yaw': -45,
                u'manual': False,
                u'height': 18.13,
                u'width': 13.6,
                u'mouth_center': {u'y': 43.47, u'x': 52.6},
                u'nose': {u'y': 36.53, u'x': 53.4},
                u'eye_right': {u'y': 30.93, u'x': 48.0},
                u'pitch': 0,
                u'tid': u'TEMP_F@08e31221350a43d267be01d500f10086_1d12ece6a6ea2_48.20_35.73_0_1',
                u'attributes': {
                    u'gender': {u'confidence': 47, u'value': u'male'},
                    u'smiling': {u'confidence': 85, u'value': u'false'},
                    u'glasses': {u'confidence': 27, u'value': u'false'},
                    u'dark_glasses': {u'confidence': 89, u'value': u'false'},
                    u'face': {u'confidence': 71, u'value': u'true'}
                },
                u'recognizable': True,
                u'roll': 3,
                u'center': {u'y': 35.73, u'x': 48.2}
            }],
            u'pid': u'F@08e31221350a43d267be01d572dc824b_1d12ece6a6ea2',
            u'height': 375
        }],
        u'usage': {...omitted for clarity...}
    }
    

    As you can see, the "uids" list is empty, meaning that Guido Van Rossum is not yet recognized in our testns namespace.

  4. Saving the tags and training our index. For saving the tags, we need to provide the tags_save method with the tag ids, which we are obtained by using the faces_detect or faces_recognize method. In this example, I will use faces_detect:

    >> response = client.faces_detect('http://savasplace.com/wp-content/uploads/2009/04/guido-van-rossum.jpg,http://farm1.static.flickr.com/43/104506247_c748f20b83.jpg,http://farm1.static.flickr.com/67/200126290_2798330e61.jpg')
    >> tids = [photo['tags'][0]['tid'] for photo in response['photos']]
    >> tids
    
    [
        u'TEMP_F@0bf0294f6c43162105c9bdfa00bc00ab_15e78870a332a_47.00_28.50_0_1',
        u'TEMP_F@008f7f3d4f93956f2fd24b1e01000084_e29f2ba8f58c6_51.20_35.20_0_1',
        u'TEMP_F@0d38a4e97c5c63042b5da6da00a10088_73a8fb3908097_48.35_27.20_0_1'
    ]
    
  5. Now when we have the temporary tag ids, we can use them to save the tags and train our namespace index:

    >> client.tags_save(tids = ',' . join(tids), uid = 'guido@testns', label = 'Guido Van Rossum')
    
    {
        u'status': u'success',
        u'message': u'Tags saved with uid: guido@testns, label: Guido Van Rossum',
        u'saved_tags': [
            {u'tid': u'00bc00ab_15e78870a332a', u'detected_tid': u'TEMP_F@0bf0294f6c43162105c9bdfa00bc00ab_15e78870a332a_47.00_28.50_0_1'},
            {u'tid': u'01000084_e29f2ba8f58c6', u'detected_tid': u'TEMP_F@008f7f3d4f93956f2fd24b1e01000084_e29f2ba8f58c6_51.20_35.20_0_1'},
            {u'tid': u'00a10088_73a8fb3908097', u'detected_tid': u'TEMP_F@0d38a4e97c5c63042b5da6da00a10088_73a8fb3908097_48.35_27.20_0_1'}
        ]
    }
    
    >> client.faces_train('guido@testns')
    
    {
        u'status': u'success',
        u'created': [{
            u'training_set_size': 3,
            u'last_trained': 1361651583,
            u'uid': u'guido@testns',
            u'training_in_progress': False}
        ]
    }
    
  6. We can also check that the tags were saved by using the tags_get method:

    >> client.tags_get('guido@testns')
    
    {
        u'status': u'success',
        u'photos': [
            {u'url': u'http://farm1.static.flickr.com/67/200126290_2798330e61.jpg', ...omitted for clarity...},
            {u'url': u'http://farm1.static.flickr.com/43/104506247_c748f20b83.jpg', ...omitted for clarity...},
            {u'url': u'http://savasplace.com/wp-content/uploads/2009/04/guido-van-rossum.jpg', ...omitted for clarity...}
        ],
        u'usage': {...omitted for clarity...}
    }
    
  7. Now after we have trained our index, lets check if Guido is recognized:

    >> client.faces_recognize('all', 'http://farm1.static.flickr.com/41/104498903_bad315cee0.jpg', namespace = 'testns')
    
    {
        u'status': u'success',
        u'photos': [{
            u'url': u'http://farm1.static.flickr.com/41/104498903_bad315cee0.jpg',
            u'width': 500,
            u'tags': [{
                u'eye_left': {u'y': 31.2, u'x': 55.6},
                u'confirmed': False,
                u'uids': [{u'confidence': 34, u'uid': u'guido@testns'}],
                u'width': 13.6,
                u'yaw': -45,
                u'manual': False,
                u'height': 18.13,
                u'threshold': 30,
                u'mouth_center': {u'y': 43.47, u'x': 52.6},
                u'nose': {u'y': 36.53, u'x': 53.4},
                u'eye_right': {u'y': 30.93, u'x': 48.0},
                u'pitch': 0,
                u'tid': u'TEMP_F@08e31221350a43d267be01d500f10086_1d12ece6a6ea2_48.20_35.73_0_1',
                u'attributes': {
                    u'gender': {u'confidence': 47, u'value': u'male'},
                    u'smiling': {u'confidence': 85, u'value': u'false'},
                    u'glasses': {u'confidence': 27, u'value': u'false'},
                    u'dark_glasses': {u'confidence': 89, u'value': u'false'},
                    u'face': {u'confidence': 71, u'value': u'true'}
                },
                u'recognizable': True,
                u'roll': 3,
                u'center': {u'y': 35.73, u'x': 48.2}
            }],
            u'pid': u'F@08e31221350a43d267be01d572dc824b_1d12ece6a6ea2',
            u'height': 375
        }],
        u'usage': {...omitted for clarity...}
    }
    

    As you can see by looking at the "uids" list, Guido was now recognized with a 34% confidence!

For more information about the SkyBiometry Face Detection and Recognition API and how to use it, visit the official documentation.

python-face-client's People

Contributors

hbredin avatar jimjty avatar kami avatar liuftvafas avatar snoack avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.