亚洲名人人脸数据库制作

大规模亚洲人脸数据的制作

原文:https://blog.csdn.net/Alvin_FZW/article/details/82146800

在这次大规模亚洲人脸数据制作主要是亚洲明星人脸数据集,此次我爬取了大概20万张亚洲人脸图像,可以修改爬取每位明星图片的数量来获取更多的图片,过程中主要分以下几步:

  • 获取明星名字列表

(1)、首先从百度搜索栏中搜索“明星”,显示出明星栏目,地区包括内地、香港、台湾、韩国和日本,如下图:

(2)、使用python爬虫将这些明星的名字爬取下来,代码如下所示:

 import osimport timeimport jsonimport requestsdef getManyPages(pages):params=[]for i in range(0, 12*pages+12, 12):params.append({'resource_id': 28266,'from_mid': 1,'format': 'json','ie': 'utf-8','oe': 'utf-8','query': '台湾明星','sort_key': '','sort_type': 1,'stat0': '','stat1': '台湾','stat2': '','stat3': '','pn': i,'rn': 12})url = 'https://sp0.baidu.com/8aQDcjqpAAV3otqbppnN2DJv/api.php'# names = []# img_results = []x = 0f = open('starName.txt', 'w')for param in params:try:res = requests.get(url, params=param)js = json.loads(res.text)results = js.get('data')[0].get('result')except AttributeError as e:print(e)continuefor result in results:img_name = result['ename']# img_url = result['pic_4n_78']# img_result = [img_name,img_url]# img_results.append(img_result)f.write(img_name+'\n')# names.append(img_name)if x % 10 == 0:print('第%d页......'%x)x += 1f.close()if __name__ == '__main__':getManyPages(400)
  1.  

这里需要注意:params里的‘query’:‘台湾明星’;‘start1’:‘台湾’,对应台湾地区的明星,修改这两个值可以获得‘内地’、‘香港’、‘韩国’等地区的明星。从图一可以看出,每页有12位明星,getManyPages(400)是获取400页的明星名单结果,也就是12*400=4800位明星名单,通过修改获取页码值来获取更多明星的名单,将获取的明星名单保存成文本文件,在后续操作中将会用到,同时也能避免代码终止又要重新爬取。

  • 根据名单列表爬取明星图片

这里我将使用开源的网络爬虫来爬取明星图片,需要导入icrawler库,对该库的详细介绍,读者可以自己百度;由于一些小明星的照片在百度上有可能搜不到,并且百度上照片有时会很杂,所以这里我将在Bing搜索上爬取明星人脸图片,代码如下:

 import osfrom icrawler.builtin import BingImageCrawlerpath = r'BingImage'f = open('starName.txt', 'r')lines = f.readlines()for i, line in enumerate(lines):name = line.strip('\n')file_path = os.path.join(path, name)if not os.path.exists(file_path):os.makedirs(file_path)bing_storage = {'root_dir': file_path}bing_crawler = BingImageCrawler(parser_threads=2, downloader_threads=4, storage=bing_storage)bing_crawler.crawl(keyword=name, max_num=10)print('第{}位明星:{}'.format(i, name))
  1.  

其中,path为将要保存爬取的明星图片的路径,可以.txt文件为上一步爬取的明星名单文件,通过修改

bing_crawler.crawl()中的max_num的值来改变爬取每位明星的图像数目。

 

  • 对爬取的明星图片做粗略清洗

这里主要针对非人脸图像的清洗,由于爬取的图像里有可能出现非人像图片,需要对它进行删除,通过对图像人脸判断来确认是否包含人脸图像,代码如下:

其中,使用face_recognition库检测图像上是否有人脸,该库在windows上的安装比较麻烦,读者可以百度,有详细的windows安装教程,同时也使用了一些容错代码,避免出现错误,代码运行中断。path为爬取明星图片的文件目录,new_path为清洗后保存到的人脸图像目录。

 
  1. import os

  2. import face_recognition

  3. from PIL import Image

  4. from PIL import ImageFile

  5. import threading

  6. ImageFile.LOAD_TRUNCATED_IMAGES = True

  7.  
  8. def process_img(path, new_path):

  9. dirs = os.listdir(path)

  10. for pic_dir in dirs:

  11. print(pic_dir)

  12. dir_path = os.path.join(path, pic_dir)

  13. pics = os.listdir(dir_path)

  14. for pic in pics:

  15. pic_path = os.path.join(dir_path, pic)

  16. image = face_recognition.load_image_file(pic_path)

  17. face_locations = face_recognition.face_locations(image)

  18. if len(face_locations) == 0:

  19. continue

  20. img = Image.open(pic_path)

  21. new_pic_path = os.path.join(new_path, pic_dir)

  22. if not os.path.exists(new_pic_path):

  23. os.makedirs(new_pic_path)

  24. if len(img.split()) == 4:

  25. # 利用split和merge将通道从四个转换为三个

  26. r, g, b, a = img.split()

  27. toimg = Image.merge("RGB", (r, g, b))

  28. toimg.save(new_pic_path + '\\' + pic)

  29. else:

  30. try:

  31. img.save(new_pic_path + '\\' + pic)

  32. except:

  33. continue

  34. print('Finish......!')

  35.  
  36. def lock_test(path, new_path):

  37. mu = threading.Lock()

  38. if mu.acquire(True):

  39. process_img(path, new_path)

  40. mu.release()

  41.  
  42. if __name__ == '__main__':

  43. paths = [r'E:\weather_test\亚洲人脸4_1', r'E:\weather_test\亚洲人脸4_2', r'E:\weather_test\亚洲人脸4_3',

  44. r'E:\weather_test\亚洲人脸4_4', r'E:\weather_test\亚洲人脸4_5', r'E:\weather_test\亚洲人脸4_6']

  45. new_paths = [r'E:\weather_test\4_1', r'E:\weather_test\4_2', r'E:\weather_test\4_3', r'E:\weather_test\4_4',

  46. r'E:\weather_test\4_5', r'E:\weather_test\4_6']

  47. for i in range(len(paths)):

  48. my_thread = threading.Thread(target=lock_test, args=(paths[i], new_paths[i]))

  49. my_thread.start()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/25260.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【北京】亚洲微软研究院-微软游记

文章目录 微软游记黑科技交流会办公区晚餐 结束 微软游记 11月24日,身为一名初出茅庐得技术博主,有幸来到微软亚洲研究院,与CSDN一些博主们共同学习!通过这一天对微软的认识,让我有了更多的想法。今天我看到了微软在物…

CASIA-FaceV5亚洲人脸数据集以及对应的测试pairs文件

目录 一、前言 二、生成Pairs文件 三、下载资源 1、官网下载地址 2、百度网盘下载资源 一、前言 含有CASIA-FaceV5亚洲人脸数据集,以该数据集作为测试集所生成的同一人和不同人对应的测试文件。 CASIA-FaceV5亚洲人脸数据集有500人、每个人5张图片&#xff0…

【Windows系统】查看和关闭139、445端口的方法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、 Windows查看139、445端口的方法二、关闭445端口的方法三、关闭139端口的方法 前言 “航天派”公众号上一期文章介绍了“麒麟操作系统查看和关闭139、445端…

【无标题】chatgpt

演示站:https://ai.sybkxx.com/ 测试账号:demo 测试密码:12345678 源码下载:http://yp.1379.cloud:5212/s/WOco 安装方法: 上传程序到服务器 安装php扩展sg11 php支持7.3-7.4 解压程序安装 授权可以联系 你的域名…

Unix 版权争夺战 | 历史上的今天

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 3 月 6 日,在 1475 年的今天,大艺术家米开朗琪罗诞辰。米开朗琪罗是意大利文艺复兴时期的雕塑家、画家,他活到 89 岁&#x…

百度文心一言推出内测专用独立 App;暴雪回应被网易起诉:未收到相关诉状;iOS 17或支持第三方应用商店 | 极客头条...

「极客头条」—— 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 屠敏 出品 | CSDN(ID:CSDNnews) 一分钟速览新闻点&#xf…

centos7系统安装Vicuna(小羊驼)聊天机器人

准备工作: 安装vicuna之前需要做一些准备工作,比如:git、python3、升级openssl等 1、Git安装 因为要克隆项目源码所以要安装,安装过程很简单yum install git,这里不做过多介绍。如果不安装git也可以,项目…

网络安全也要迈入AI时代?微软推出Security Copilot安全助手

周二,微软宣布将要推出Security Copilot,一款由人工智能驱动的安全分析助手,据说它能够协助网络安全团队快速响应处理威胁、评估报告安全风险。 据微软官网信息,其新推出的Security Copilot把OpenAI的GPT-4人工智能和其自身安全专…

正式接入ChatGPT, 捷码智能助手重磅来袭!

捷码平台最新介绍 ChatGPT给各行各业带来的深远影响,绝对不止一款升级版的客服机器人那么简单。 以微软为例,早在3月17日,继把GPT4引入搜索引擎后,微软又重磅推出了由AI驱动的Microsoft 365 Copilot,它能自动生成电子…

震撼发布,开启全民超能 | DeepSpeed-Chat 开源了!

本博客由微软DeepSpeed组官方撰写并译制(https://github.com/microsoft/DeepSpeed/tree/master/blogs/deepspeed-chat),并授权开源社首发于中文社区,如需转载请注明出处。 #01 概述 近日来,ChatGPT 及类似模型引发了人…

AlphaGo 成名之战 | 历史上的今天

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 3 月 9 日,在 1986 年的今天,中国历史上最大的辞书《汉语大字典》编纂完成。《汉语大字典》由四川、湖北两省 300 多名专家、学者和教师…

Pandoc 从入门到精通,你也可以学会这一个文本转换利器

Pandoc 简介 如果你需要在不同的文件格式之间相互转换,多半听说或使用过文档转换的瑞士军刀——Pandoc。事实上,不仅人类知道 Pandoc,最近很火的人工智能 ChatGPT 也知道「将 Markdown 转换为 docx」,首选方案是使用 Pandoc。 ​…

DeepSpeed:通过系统优化和压缩加速大规模模型推理和训练

文章目录 DeepSpeed:通过系统优化和压缩加速大规模模型推理和训练DeepSpeed Chat: 一键式RLHF训练,让你的类ChatGPT千亿大模型提速省钱15倍1. 概述2. 简洁高效且经济的 ChatGPT 训练与推理体验使用 DeepSpeed-Chat 的 RLHF 示例轻松训练你的第一个 类ChatGPT 模型想尝试不同的…

Google Bard现已支持中文智能问答,相比chatgpt功能丰富且免费

Google Bard是谷歌人工智能(AI)推出的一款大型语言模型,现已支持进行中文问答。它使用了谷歌搜索的大量数据集进行训练,能够理解和回答中文问题,并生成高质量的文字内容。 Google Bard可以用来做什么 Google Bard可以…

ChatGPT最强入门科普:带你进入AI时代【小白必读】

我们正处在一个科技革新的时代,人工智能已经并将继续深深地影响我们的生活、工作,甚至是思考方式。ChatGPT 作为这个领域的先驱,不仅代表了当前的技术发展水平,更预示着未来可能的发展趋势。大家好,我是AI探索者Kevin&…

素材管理系统概念导入

引言 由于工作上的调整安排,有幸参加营销素材管理系统的产品建设工作中,营销宣传领域一直是我的知识盲区,所以素材管理系统的产品建设对我来说是个富有挑战性的工作,在这过程中,我也秉持着“好记性不如烂笔头”的原则&…

chatgpt赋能python:Python关联规则Apriori算法

Python关联规则Apriori算法 介绍 Apriori算法是一个常用的关联规则挖掘算法,用于挖掘商品之间的关联关系。该算法的基本思想是先通过扫描数据集,找到满足最小支持度的所有项集,再通过计算置信度,从而得到满足最小置信度的强关联…

电影推荐算法2

模型创建 title _ count, title _ set, genres2int, features, targets _ values, ratings, users, movies, data, movies _ orig, users _ orig pickle.load (open (‘preprocess.p’, mode ‘rb’)) 加载数据后定义神经网络的模型结构: 1)定义参数…

5、电影推荐系统

实验资源 u.user u.item u.data 实验环境 VMware Workstation Ubuntu 16.04 Jupyter Notebook Pyspark 实验内容 本实验使用其中三个文件,用户信息、影片信息、评分数据 用户信息 (u.user) 用户id年龄性别职业邮政编码 影片信息(u.it…

推荐系统-电影推荐系统

本文的代码-源于《推荐系统开发实战》 数据源:train.json, 含有用户看过的所有的电影,以及他对电影的评分 使用算法: 皮尔逊相关系数 公式: 皮尔逊相关系数的取值范围是[-1,1],1表示完全正相关,-1表示完…