这是一个明天产生的热点话题,说是热点,其实对我来说不算是生疏的话题了,因为早在几年前,我就曾经关注到一些技术论坛有相似的探讨,过后就曾经上过某些博客网站的热搜,当然,因为技术社区具备垂直化的个性,因而很难引起技术圈以外的公众的留神。
首先,得申明一下,本篇博客的写作纯正对于技术的探索,我已经是一名网络安全爱好者,同时近期正好在看一些法律常识,因而更加关注用户隐衷,因而这篇博客不会提供任何的人脸图片,无论是任何地区的陌生人,还是某个明星。这是出于一种尊重。
技术概念
在介绍代码之前,我打算先科普一下几个相干的技术概念:
百度 AI 的人脸检测与属性剖析接口:
百度 AI 平台提供了丰盛的人脸技术接口,其中包含人脸检测与属性剖析接口。通过该接口,咱们能够将一个图片的人脸区域进行定位,并获取诸如年龄、性别、颜值等属性信息。这对于目前国内的颜值打分测评网站,软件而言,非常的要害。
为什么非常要害?几年前我读大三的时候,因为学校理科专业课程不多的缘故,我在图书馆里对这类程序的代码过后趣味的看了看,发现目前国内的颜值测评次要分为两类:
1. 伪评测
应用随机数,也就是说,给一个数值范畴,在该范畴中进行打分,给出评估,我用 c 语言代码举一个示例:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int evaluate_beauty() {
// 生成种子,用于产生随机数
srand(time(NULL));
// 随机生成颜值评分(0-100)int beauty_score = rand() % 101;
return beauty_score;
}
const char* evaluate_comment(int beauty_score) {
// 依据评分给出中文评估
if (beauty_score >= 90) {return "哇,超级美!";} else if (beauty_score >= 80) {return "很美哦!";} else if (beauty_score >= 70) {return "挺难看的!";} else if (beauty_score >= 60) {return "还能够!";} else {return "不是很美,加油!";}
}
int main() {
// 调用评分函数进行颜值测评
int score = evaluate_beauty();
// 输入评分
printf("颜值评分:%d\n", score);
// 获取中文评估
const char* comment = evaluate_comment(score);
// 输入中文评估
printf("中文评估:%s\n", comment);
return 0;
}
其实你能够发现,这类程序其实基本没有所谓的 ai 人工智能进行思考判断,相似于风行的算命求姻缘一样,并无实际意义。
2. 真评测
即应用图片上传,而后背地基于大模型计算出颜值分数。
Base64 编码:
Base64 是一种罕用的编码方式,能够将二进制数据(包含图片)转换为纯文本字符。在本例中,咱们将应用 Base64 编码将图片转换为字符串模式,以便传输给百度 AI 的接口。
代码实现
上面是我应用 Python 编写的颜值检测排名评分程序的示例代码:
import requests
import base64
import json
def get_beauty(image_path):
# 读取图片文件,将其转换为 Base64 编码
with open(image_path, 'rb') as image_file:
image_base64 = base64.b64encode(image_file.read()).decode('utf-8')
# 发送申请获取百度 AI 的 access_token
access_token_url = 'https://aip.baidubce.com/oauth/2.0/token'
access_token_params = {
'grant_type': 'client_credentials',
'client_id': 'YOUR_CLIENT_ID',
'client_secret': 'YOUR_CLIENT_SECRET'
}
response = requests.post(access_token_url, params=access_token_params)
access_token = response.json()['access_token']
# 发送图片数据进行人脸检测与属性剖析,获取颜值评分
beauty_url = 'https://aip.baidubce.com/rest/2.0/face/v3/detect'
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
beauty_params = {
'access_token': access_token,
'image': image_base64
}
response = requests.post(beauty_url, headers=headers, params=beauty_params)
beauty_score = response.json()['result']['face_list'][0]['beauty']
return beauty_score
def main():
image_folder = 'img_1' # 图片文件所在的文件夹门路
# 获取文件夹中所有图片文件名
import os
image_files = os.listdir(image_folder)
beauty_scores = []
for image_file in image_files:
image_path = os.path.join(image_folder, image_file)
beauty = get_beauty(image_path)
beauty_scores.append((image_file, beauty))
# 依据颜值评分对图片进行排序
beauty_scores.sort(key=lambda x: x[1], reverse=True)
# 打印图片排名
for i, (image_file, beauty_score) in enumerate(beauty_scores):
print(f'Rank {i+1}: {image_file} - Beauty Score: {beauty_score}')
if __name__ == '__main__':
main()
实现原理
首先,咱们定义了一个 get_beauty() 函数,该函数承受一个图片文件门路作为参数。函数首先读取图片文件,并将其转换为 Base64 编码的字符串。而后,它发送 HTTP 申请到百度 AI 的接口,应用咱们在百度 AI 平台申请的客户端 ID 和密钥获取拜访令牌(access_token)。接下来,它将蕴含图片数据和 access_token 的申请发送给百度 AI 的人脸检测与属性剖析接口,并解析返回的 JSON 数据以获取颜值评分。
接下来,咱们定义了一个 main() 函数作为程序的入口。咱们提供了一个图片文件夹的门路,并应用 os 模块获取文件夹中的所有图片文件名。而后,咱们遍历每一个图片文件,调用 get_beauty() 函数取得颜值评分,并将图片文件名和颜值评分存储在一个列表中。
最初,咱们对颜值评分进行排序,以取得图片的排名。咱们应用 Python 内置的 sort() 函数,并应用 lambda 函数作为排序算法的关键字参数,依据颜值评分进行排序并指定降序排列。最初,咱们应用一个循环来打印每个图片的排名和颜值评分。
当然,我晓得你会好奇,api 中的百度 ai 平台是如何操作的,这个咱们就不得而知了,因为这是百度人工智能的核心技术和商业秘密。
总结
本篇博客我大抵如何应用 Python 编程语言和百度 AI 的人脸技术接口,实现一个简略而乏味的颜值检测排名评分程序。通过该程序,咱们能够对照片中的人脸进行颜值评分和排名,能够满足一些人对颜值的好奇心。
然而我在这里仍然心愿,爱美之心,人皆有之,能够好奇颜值,然而不要以守法的形式满足本人的好奇心,而是要恪守法律法规,尊重别人的隐衷和权利。同时,咱们应该重视内在美,置信每个人都有独特的魅力和价值,不仅仅局限于表面。因而,咱们应该激励彼此相互尊重和容纳,独特发明一个和煦谐和的社会环境。