当前位置:首页> AI > 鲸探阿里云飞天

鲸探阿里云飞天

  • http://sssfsssf.com/http://sssfsssf.com/
  • AI
  • 2024-10-18 20:16:55
  • 0
在前一篇博客中,我们提到了使用鲸探API对阿里飞天图片进行人脸识别,并且用面部特征相似度作为筛选条件。由于该方法效果不是很好,今天我们将尝试另一条更优雅的路径:直接使用AI库进行人脸检测并进行比对。 我们首先要从阿里云飞天中爬取图片地址,这是因为所有图片都是公开的,并且有固定的命名规则。假设我们的代码能够成功地把这些图片都下载下来,我们可以直接用深度学习库来进行人脸检测然后比较特征。 但是,这个问题的难点在于每张图片可能都不止一张人脸,所以我们需要对每张图进行多次检测,每次只检测个人脸。在阿里云飞天中,一个人可能出现在很多张照片上,我们需要将这些照片都找出来并且相似度高于阈值的才算是同一个人。 最后,将所有同一个人的照片都下载下来,并保存成指定的格式即可。下面我们来看看完整的代码: ```python # -*- coding: utf-8 -*- import requests from bs4 import BeautifulSoup import time import json from PIL import Image from aip import AipFace # 阿里云AI APPID、APIKEY、SECRETKEY APP_ID = ''你的APP_ID'' API_KEY = ''你的API_KEY'' SECRET_KEY = ''你的SECRET_KEY'' class Aliyun_AIP: def __init__(self): self.client = AipFace(APP_ID, API_KEY) def faceDetect(self, image): # 人脸检测 result = self.client.faceDetection(image) return result def compareFaces(self, group1, group2): # 比较两组人脸特征 faceset_group1 = {''usergroup_id'': ''your_face_set_1'', ''faceset_group_id'': group1} faceset_group2 = {''usergroup_id'': ''your_face_set_2'', ''faceset_group_id'': group2} result = self.client.compareFaces(faceset_group1, faceset_group2) return result if __name__ == ''__main__'': aliAI = Aliyun_AIP() # 从阿里云飞天爬取人脸图片 headers = { ''User-Agent'': ''Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.3'' } url1 = "https://www.aliyun.com/video/flyover/cloud" url2 = "https://www.aliyun.com/video/flyover" for url in [url1, url2]: time.sleep(5) req = requests.get(url, headers=headers) soup = BeautifulSoup(req.text, ''lxml'') images = soup.select(''#flyover > script:nth-child(4)'') if not images: continue js_data = json.loads(images[0].text) img_url = "https://flyover.aliyun.com" + js_data[''images''][0] # 下载图片 image_response = requests.get(img_url) pil_image = Image.open(BytesIO(image_response.content)) # 人脸检测并保存成jpg图片 face_result = aliAI.faceDetect(image_response.content) if len(face_result[''result'']) > 0: img = Image.fromarray(face_result[''result''][0][''image_data'']) img.save(''temp.jpg'') # 同一个人脸比较 group1, group2 = ''your_face_set_1'', ''your_face_set_2'' compare_result = aliAI.compareFaces(group1, group2) if compare_result[''result''] == 90: print("该图片是同一人") ``` **注意事项** 在使用此代码前,请在阿里云控制台中新建一个人脸识别集和两组人脸特征,并且填入对应的APPID、APIKEY、SECRETKEY。同时,需要在阿里云控制台开启相应的API能力。 本代码主要用于抓取阿里云飞天中公开图片并进行人脸识别和比对,并不是用于商业用途,若有此类需求,请联系阿里云官方。 **使用说明** 1. 在阿里云控制台中新建一个人脸识别集和两组人脸特征,分别作为face_set_1、face_set_2。 2. 在阿里云控制台开启相应的API能力。 3. 填入对应的APPID、APIKEY、SECRETKEY。 4. 运行代码抓取图片并进行人脸识别和比对。 **注意** 本代码仅供学习参考,若有任何商业用途,请联系阿里云官方。

精彩推荐