1
头图

这是一个今天发生的热点话题,说是热点,其实对我来说不算是陌生的话题了,因为早在几年前,我就已经关注到一些技术论坛有类似的讨论,当时就已经上过某些博客网站的热搜,当然,由于技术社区具有垂直化的特性,因此很难引起技术圈以外的大众的注意。
图片.png

首先,得声明一下,本篇博客的写作纯粹对于技术的探究,我曾经是一名网络安全爱好者,同时近期正好在看一些法律知识,因此更加关注用户隐私,因此这篇博客不会提供任何的人脸图片,无论是任何地域的陌生人,还是某个明星。这是出于一种尊重。

技术概念

在介绍代码之前,我打算先科普一下几个相关的技术概念:

百度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的人脸技术接口,实现一个简单而有趣的颜值检测排名评分程序。通过该程序,我们可以对照片中的人脸进行颜值评分和排名,可以满足一些人对颜值的好奇心。
但是我在这里依然希望,爱美之心,人皆有之,可以好奇颜值,但是不要以违法的方式满足自己的好奇心,而是要遵守法律法规,尊重他人的隐私和权益。同时,我们应该注重内在美,相信每个人都有独特的魅力和价值,不仅仅局限于外表。因此,我们应该鼓励彼此互相尊重和包容,共同创造一个温暖和谐的社会环境。


瞿小凯
1.3k 声望593 粉丝