百度AI攻略:人臉情緒識別

首先認證受權:python

在開始調用任何API以前須要先進行認證受權,具體的說明請參考:json

http://ai.baidu.com/docs#/Auth/topapp

獲取Access Tokenide

向受權服務地址https://aip.baidubce.com/oauth/2.0/token發送請求(推薦使用POST),並在URL中帶上如下參數:函數

grant_type:?必須參數,固定爲client_credentials;測試

client_id:?必須參數,應用的API Key;編碼

client_secret:?必須參數,應用的Secret Key;url

例如:spa

https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=Va5yQRHlA4Fq5eR3LT0vuXV4&client_secret=0rDSjzQ20XUj5itV6WRtznPQSzr5pVw2&rest

具體代碼以下:

# -*- coding: utf-8 -*-

#!/usr/bin/env python

import urllib

import json

#client_id 爲官網獲取的AK, client_secret 爲官網獲取的SK

client_id =【百度雲應用的AK】

client_secret =【百度雲應用的SK】

#獲取token

def get_token():

host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + client_id + '&client_secret=' + client_secret

request = urllib.request.Request(host)

request.add_header('Content-Type', 'application/json; charset=UTF-8')

response = urllib.request.urlopen(request)

token_content = response.read()

if token_content:

token_info = json.loads(token_content)

token_key = token_info['access_token']

return token_key

人臉情緒識別

具體說明請查閱: http://ai.baidu.com/docs#/Face-Detect-V3/top

人臉識別接口分爲V2和V3兩個版本,本文檔爲V3版本接口的說明文檔,請確認您在百度雲後臺得到的是V3版本接口權限,再來閱讀本文檔。

能力介紹

人臉檢測:檢測圖片中的人臉並標記出位置信息;

人臉關鍵點:展現人臉的核心關鍵點信息,及150個關鍵點信息。

人臉屬性值:展現人臉屬性信息,如年齡、性別等。

人臉質量信息:返回人臉各部分的遮擋、光照、模糊、完整度、置信度等信息。

業務應用

典型應用場景:如人臉屬性分析,基於人臉關鍵點的加工分析,人臉營銷活動等。

調用方式

向API服務地址使用POST發送請求,必須在URL中帶上參數access_token,可經過後臺的API Key和Secret Key生成,具體方式請參考「Access Token獲取」。

請求說明

請求體格式化:Content-Type爲application/json,經過json格式化請求體。

Base64編碼:請求的圖片需通過Base64編碼,圖片的base64編碼指將圖片數據編碼成一串字符串,使用該字符串代替圖像地址。您能夠首先獲得圖片的二進制,而後用Base64格式編碼便可。須要注意的是,圖片的base64編碼是不包含圖片頭的,如data:image/jpg;base64,

圖片格式:現支持PNG、JPG、JPEG、BMP,不支持GIF圖片

HTTP方法:POST

請求URL: https://aip.baidubce.com/rest/2.0/face/v3/detect

Python3代碼以下:

#獲取人臉情緒信息

def face_detect_emotion(url):

    request_url = "https://aip.baidubce.com/rest/2.0/face/v3/detect"


    params = dict()

    params['image'] = url

    params['image_type'] = 'URL'

    params['face_field'] = 'emotion'


    params = json.dumps(params).encode('utf-8')


    access_token=get_token()

    request_url = request_url + "?access_token=" + access_token

    request = urllib.request.Request(url=request_url, data=params)

    request.add_header('Content-Type', 'application/json')

    response = urllib.request.urlopen(request)

    content = response.read()

    if content:

        #print (content)

        content=content.decode('utf-8')

        data = json.loads(content)

        #print (data)

        return data['result']['face_list'][0]['emotion']

    else:

        return ''

這個函數將根據網上圖片URL地址獲取圖片並檢測人臉的情緒。讓咱們用網上找的一張微笑的圖片進行測試:

執行代碼:

image_url='http://p0.qhimgs4.com/t0159dd32381d0c25b7.jpg'

print (face_detect_emotion(image_url))

返回:

{'type': 'happy', 'probability': 0.97}

可見檢測的仍是很準的。

相關文章
相關標籤/搜索