人脸识别

    QuickStart

    人脸识别应用案例

    作为大型商圈客户经理的张经理管理着占地面积20万平米的购物中心,品牌线丰富,目标客户群体广泛。但一方面,由于线下门店导购难以分辨新老顾客进店,导致VIP会员没有享受到该有的定制化优质服务,购物体验满意度不高;而且由于店铺没能打造精准的会员体系,个性化营销策略吸引力不够,客户回头率不高,导致消费者与品牌粘度较低,营业额难以维持日常运维成本。

    另一方面,由于线上网购平台同等商品有价格便宜、透明,方便挑选比对等特点,客户逐渐养成网购的消费习惯,商场客流量和营业额都相应锐减。

    张经理认为只有通过优化智能零售运营才能提供更优质的会员服务,提升客户回购率,促进精细化数据管理。通过将市面上多家厂商的能力互相比较,张经理选择了百度的人脸会员识别解决方案。通过实时追踪门店摄像视频流中的人脸,当消费者进入店面时,自动识别出会员身份信息并汇总,提供会员到店提醒和会员属性分析(如年龄、性别、颜值),提供更精准的流量统计分析,并且结合促销信息,实现更生动的互动营销体验。

    下面看看如何使用百度AI开放平台的人脸检测能力帮助客户经理解决这个问题

    实现步骤

    只需三步1小时内即可完成人脸检测接口的调用。

    Step1:成为百度AI开放平台的开发者

    要调用百度AI开放平台的人脸识别能力先要成为百度AI开放平台的开发者,首先让我们花5分钟来注册百度AI开放平台的开发者,并新建一个人脸识别应用。

    先点击此处注册百度账户进入 如下图 的页面快速的建立一个百度账号吧。

    图片

    我们有账号之后登录,并且点击此处创建一个应用如下图

    图片

    然后就能看到创建完的应用和 API KEY 以及 Secret KEY

    图片

    Step2:准备数据

    人脸检测主要针对的是用户的图片中出现的人脸进行检测,同时给出被检测出人脸的属性信息,如年龄、性别等:

    待分析人群属性的图片:

    Step3: 编写一个示例程序

    第一步API KEY 以及 Secret KEY,以及第二步的数据,我们就可以写一个示例代码调用百度AI开放平台的人脸识别能力

    准备开发环境

    我们选择用python来快速搭建一个原型,关于如何安装python。可以参考下表列出的不同操作系统的安装方法进行安装。

    Python的官方下载地址:下载python

    Windows 快速测试包

    windows平台的用户如果对上述的python安装感到困难,可以下载我们的一键测试包,下载地址:windows测试包

    解压zip文件后,双击run.bat即可测试。

    编写代码

    新建一个 main.py

    粘贴以下内容,不要忘记替换你的 API_KEY 以及 SECRET_KEY

    # coding=utf-8
    
    import sys
    import json
    import base64
    
    
    # make it work in both python2 both python3
    IS_PY3 = sys.version_info.major == 3
    if IS_PY3:
        from urllib.request import urlopen
        from urllib.request import Request
        from urllib.error import URLError
        from urllib.parse import urlencode
        from urllib.parse import quote_plus
    else:
        import urllib2
        from urllib import quote_plus
        from urllib2 import urlopen
        from urllib2 import Request
        from urllib2 import URLError
        from urllib import urlencode
    
    # skip https auth
    import ssl
    ssl._create_default_https_context = ssl._create_unverified_context
    
    API_KEY = 'oWx5qAVA89FRPbjhbbGrKYX7'
    
    SECRET_KEY = 'WPsbvyKP9ZDKATbZyM05sROUt2OGiskk'
    
    
    FACE_DETECT = "https://aip.baidubce.com/rest/2.0/face/v3/detect"
    
    """  TOKEN start """
    TOKEN_URL = 'https://aip.baidubce.com/oauth/2.0/token'
    
    
    """
        get token
    """
    def fetch_token():
        params = {'grant_type': 'client_credentials',
                  'client_id': API_KEY,
                  'client_secret': SECRET_KEY}
        post_data = urlencode(params)
        if (IS_PY3):
            post_data = post_data.encode('utf-8')
        req = Request(TOKEN_URL, post_data)
        try:
            f = urlopen(req, timeout=5)
            result_str = f.read()
        except URLError as err:
            print(err)
        if (IS_PY3):
            result_str = result_str.decode()
    
    
        result = json.loads(result_str)
    
        if ('access_token' in result.keys() and 'scope' in result.keys()):
            if not 'brain_all_scope' in result['scope'].split(' '):
                print ('please ensure has check the  ability')
                exit()
            return result['access_token']
        else:
            print ('please overwrite the correct API_KEY and SECRET_KEY')
            exit()
    
    """
        read file
    """
    def read_file(image_path):
        f = None
        try:
            f = open(image_path, 'rb')
            return f.read()
        except:
            print('read image file fail')
            return None
        finally:
            if f:
                f.close()
    
    
    """
        call remote http server
    """
    def request(url, data):
        req = Request(url, data.encode('utf-8'))
        has_error = False
        try:
            f = urlopen(req)
            result_str = f.read()
            if (IS_PY3):
                result_str = result_str.decode()
            return result_str
        except  URLError as err:
            print(err)
    
    if __name__ == '__main__':
    
        # get access token
        token = fetch_token()
    
        # concat url
        url = FACE_DETECT + "?access_token=" + token
    
        file_content = read_file('./faces.jpg')
        response = request(url, urlencode(
        {
            'image': base64.b64encode(file_content),
            'image_type': 'BASE64',
            'face_field': 'gender,age',
            'max_face_num': 10
        }))
    
        data = json.loads(response)
        num = 65;
    
        if data["error_code"] == 0:
            face_num = data["result"]["face_num"]
            if face_num == 0:
                # could not find face
                print("no face in the picture")
            else:
                # get face list
                face_list = data["result"]["face_list"]
                for face in face_list:
                    # male face
                    if face["gender"]["type"] == "male":
                        gender = "男"
                    # female face
                    if face["gender"]["type"] == "female":
                        gender = "女"
    
                    print("顾客" + chr(num))
                    print("   性别: " + gender + " 年龄: " + str(face["age"]))
                    num = num + 1
    
        else:
            # print error response
            print(response)

    运行代码

    在命令行中运行python main.py

    结果

    若代码正确运行,命令行界面上会显示出运行结果:

    顾客A
       性别: 男 年龄: 26
    顾客B
       性别: 女 年龄: 24
    顾客C
       性别: 男 年龄: 24
    顾客D
       性别: 女 年龄: 23

    我们还可以通过返回结果标记出这些人脸在原图的位置:

    可以看到结果中返回了人脸识别服务中的人脸检测接口对于图片的识别结果,更详细的返回结果说明可以参考文档 人脸检测REST API文档

    总结

    张经理通过使用百度AI开放平台的人脸检测能力在客户无感知的情况下获取了顾客的人群属性的信息,帮助商场实现了更高效、准确的客群分析,提高了商场整体的运营效率。

    了解更多

    除上文提到的场景外,人脸识别还可以集成到安防监控、身份核验等场景,实现高效的智能监控、以及高效率的活体检测防止作弊。

    了解更多

    示例源代码

    您可以在我们的官方github上下载示例源码

    https://github.com/Baidu-AIP/QuickStart/tree/master/FACE_DETECT

    产品特色

    百万量级人脸库规模:支持百万量级规模的人脸库管理和搜索,检索速度业内领先,可应对各种业务需求

    识别精度高:人脸识别技术国际领先,识别准确率超过99%,识别效果国际领先

    易于集成:提供SDK+API能力和人脸识别开发套件,并支持适配多种软硬件环境,可根据业务需求灵活使用

    更多参考

    人脸识别导览文档

    如何获取API Key及Secret Key

    上一篇
    文档导览
    下一篇
    更新日志