需要源碼請點(diǎn)贊關(guān)注收藏后評論區(qū)留下QQ~~~
本系統(tǒng)根據(jù)已有的模型上改寫,添加了在給照片打分的同時(shí)可以顯示照片,這樣顯得更加直觀和真實(shí)
一、百度API文檔
如需要請自行前往官網(wǎng)查詢文檔相關(guān)內(nèi)容
百度API官網(wǎng)
部分內(nèi)容如下
接口能力
- 人臉檢測:檢測圖片中的人臉并標(biāo)記出位置信息。
- 人臉關(guān)鍵點(diǎn):展示人臉的核心關(guān)鍵點(diǎn)信息,及150個(gè)關(guān)鍵點(diǎn)信息。
- 人臉屬性值:展示人臉屬性信息,如年齡、性別等。
- 人臉質(zhì)量信息:返回人臉各部分的遮擋、光照、模糊、完整度、置信度等信息。
-
業(yè)務(wù)應(yīng)用
典型應(yīng)用場景:如人臉屬性分析,基于人臉關(guān)鍵點(diǎn)的加工分析,人臉營銷活動(dòng)等。
說明:檢測響應(yīng)速度,與圖片中人臉數(shù)量相關(guān),人臉數(shù)量較多時(shí)響應(yīng)時(shí)間會(huì)有些許延長。
質(zhì)量檢測
如果需要判斷一張圖片中的人臉,是否符合后續(xù)識別或者對比的條件,可以使用此接口,在請求時(shí)在
face_field
參數(shù)中請求quality
。基于返回結(jié)果quality
中,以下字段及對應(yīng)閾值,進(jìn)行質(zhì)量檢測的判斷,以保證人臉質(zhì)量符合后續(xù)業(yè)務(wù)操作要求。指標(biāo) 字段與解釋 推薦數(shù)值界限 遮擋范圍 occlusion,取值范圍[0~1],0為無遮擋,1是完全遮擋
含有多個(gè)具體子字段,表示臉部多個(gè)部位
通常用作判斷頭發(fā)、墨鏡、口罩等遮擋left_eye : 0.6, #左眼被遮擋的閾值
right_eye : 0.6, #右眼被遮擋的閾值
nose : 0.7, #鼻子被遮擋的閾值
mouth : 0.7, #嘴巴被遮擋的閾值
left_cheek : 0.8, #左臉頰被遮擋的閾值
right_cheek : 0.8, #右臉頰被遮擋的閾值
chin_contour : 0.6, #下巴被遮擋閾值模糊度范圍 blur,取值范圍[0~1],0是最清晰,1是最模糊 小于0.7 光照范圍 illumination,取值范圍[0~255]
臉部光照的灰度值,0表示光照不好
以及對應(yīng)客戶端SDK中,YUV的Y分量大于40 姿態(tài)角度 Pitch:三維旋轉(zhuǎn)之俯仰角度[-90(上), 90(下)]
Roll:平面內(nèi)旋轉(zhuǎn)角[-180(逆時(shí)針), 180(順時(shí)針)]
Yaw:三維旋轉(zhuǎn)之左右旋轉(zhuǎn)角[-90(左), 90(右)]分別小于20度 人臉完整度 completeness(0或1),0為人臉溢出圖像邊界,
1為人臉都在圖像邊界內(nèi)視業(yè)務(wù)邏輯判斷 人臉大小 人臉部分的大小
建議長寬像素值范圍:80*80~200*200人臉部分不小于100*100像素
二、結(jié)果展示
世界杯正在如火如荼的進(jìn)行中 讓我們看看球星C羅的顏值打分評價(jià)
可見系統(tǒng)里可以測出人物的相當(dāng)多特征,包括年齡 性別 種族 表情等等
別驚訝 在AI的認(rèn)知里 57.28分已經(jīng)不低了
?再讓我們看看下一張照片的評分
籃球傳奇巨星科比呢 看看他的評價(jià) 可見對于種族的判斷還是十分準(zhǔn)確
?在看一看著名港星的 也是經(jīng)典梗的出處? ?評分暫且不論 對于種族的判斷依然準(zhǔn)確
?三、代碼
部分代碼如下
全部源碼請點(diǎn)贊關(guān)注收藏后評論區(qū)留下QQ~~~文章來源:http://www.zghlxwxcb.cn/news/detail-497377.html
import tkinter as tk
from tkinter import filedialog, ttk
import base64
import json
import requests
from PIL import Image,ImageTk
win = tk.Tk()
win.title("顏值檢測")
#root=tk.Tk()
#root.title("展示圖片")
photo=None
img=None
# 打開文件對話框
def getfile():
file_path = filedialog.askopenfilename()
to
global img
file_path = filedialog.askopenfilename()
fpath.set(file_path)
img=Image.open(file_path)
photo=ImageTk.PhotoImage(img)
imglabel=tk.Label(win,image=photo)
imglabel.grid(row=0,column=0,columnspan=3)
def face_baidu():
class BaiduPicIndentify:
def __init__(self, img):
self.AK = "juqVLsljMBigcM4soXoVmMGr"
self.SK = "g5EgLoGOxEs3jogREqGVWUYl1e5tLkUL"
self.img_src = img
self.headers = {
"Content-Type": "application/json; charset=UTF-8"
}
def get_accessToken(self):
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + self.AK + '&client_secret=' + self.SK
response = requests.get(host, headers=self.headers)
json_result = json.loads(response.text)
return json_result['access_token']
def img_to_BASE64(slef, path):
with open(path, 'rb') as f:
base64_data = base64.b64encode(f.read())
return base64_data
def detect_face(self):
# 人臉檢測與屬性分析
img_BASE64 = self.img_to_BASE64(self.img_src)
request_url = "https://aip.baidubce.com/rest/2.0/face/v3/detect"
post_data = {
"image": img_BASE64,
"image_type": "BASE64",
"face_field": "gender,age,beauty,gender,race,expression",
"face_type": "LIVE"
}
access_token = self.get_accessToken()
request_url = request_url + "?access_token=" + access_token
response = requests.post(url=request_url, data=post_data, headers=self.headers)
json_result = json.loads(response.text)
if json_result['error_msg'] != 'pic not has face':
t1 = tk.Label(win, text=json_result['result']['face_num']).grid(row=4, column=1)
t2 = tk.Label(win, text=json_result['result']['face_list'][0]['age']).grid(row=5, column=1)
t3 = tk.Label(win, text=json_result['result']['face_list'][0]['beauty']).grid(row=6, column=1)
t4 = tk.Label(win, text=json_result['result']['face_list'][0]['gender']['type']).grid(row=7, column=1)
t5 = tk.Label(win, text=json_result['result']['face_list'][0]['race']['type']).grid(row=8, column=1)
t6 = tk.Label(win, text=json_result['result']['face_list'][0]['expression']['type']).grid(row=9,
column=1)
if __name__ == '__main__':
img_src = fpath.get()
baiduDetect = BaiduPicIndentify(img_src)
baiduDetect.detect_face()
#win = tk.Tk()
#win.title("顏值檢測")
win.geometry("400x200")
fpath = tk.StringVar()
#ttk.Button(root,text='show',command=show).grid(row=1,column=1)
#root.mainloop()
l = tk.Label(win, text='顏值檢測系統(tǒng)-由百度AI提供', bg='brown', font='黑體,20,bold', fg='white')
l.grid(row=1, column=0)
command=show()).grid(row=2,column=1)
ttk.Entry(win, textvariable=fpath).grid(row=2, column=1)
l1 = tk.Label(win, text='人臉數(shù):')
l1.grid(row=4, column=0)
l2 = tk.Label(win, text='人物年齡:')
l2.grid(row=5, column=0)
l3 = tk.Label(win, text='人物顏值評分:')
l3.grid(row=6, column=0)
l4物表情:')
l6.grid(row=9, column=0)
b = tk.Button(win, text="點(diǎn)我檢測", width=15, height=2, command=face_baidu)
b.grid(row=10, column=0)
win.mainloop()
創(chuàng)作不易 覺得有幫助請點(diǎn)贊關(guān)注收藏~~~文章來源地址http://www.zghlxwxcb.cn/news/detail-497377.html
到了這里,關(guān)于【Python+百度API】實(shí)現(xiàn)人臉識別和顏值檢測系統(tǒng)(包括人臉數(shù)量、年齡、顏值評分、性別、種族、表情檢測)(超詳細(xì) 附源碼)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!