专栏首页python3python爬取人脸识别图片数据集/py

python爬取人脸识别图片数据集/py

前言

最近在做机器学习下的人脸识别的学习,机器学习这个东西有点暴力,很大程度上靠训练的数据量来决定效果。为了找数据,通过一个博客的指导,浏览了几个很知名的数据集。

几个大型数据集是通过发邮件申请进行下载,几个小型数据集直接在网页的链接下载,还有一个Pubfig数据集则是提供了大量图片的链接来让我们自己写程序来下载。

权衡了数据量的需求,最后选择Pubfig的数据集,于是就自己写了一个python图片采集程序,里面用了urllib和requests两种方法.

分析Pubfig提供的下载文件的特点

这个数据文件提供了在数据集中出现的所有人物

这个数据文件提供了每个人的urls

可以看出来这个数据集的处理其实非常简单了,可以通过readlines的方式存进列表用空格分开一下数据就可以把urls提取出来了。

处理一下urls文件

urls在文件的中后部,写个文件把它单纯地提取出来,方便使用。 我单独把Miley_Cyrus的部分提取出来放了一个txt文件

pic_url = []
with open('./Miley_Cyrus.txt') as f:
    for i in f.readlines():
        pic_url.append(i.strip('\r\n'))

urls = []
for s in pic_url:
    _, _, _, url, _, _ = s.split()
    urls.append(url)

# 写入到文件里面
with open('url.data', 'w') as f:
    for i in urls:
        f.write(i)
        f.write('\n')

爬取urls图片

1. Urllibs方法

import urllib.request as request
import socket
import os

# 在同级目录新建文件夹存图片
os.mkdir('./img')

# 为请求增加一下头
user_agent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Safari/537.36'
headers = ('User-Agent', user_agent)
opener = request.build_opener()
opener.addheaders = [headers]
request.install_opener(opener)

# 设定一下无响应时间,防止有的坏图片长时间没办法下载下来
timeout = 20
socket.setdefaulttimeout(timeout)

# 从文件里面读urls
urls = []
with open('./url.data') as f:
    for i in f.readlines():
        if i != '':
            urls.append(i)
        else:
            pass

# 通过urllibs的requests获取所有的图片
count = 1
bad_url = []
for url in urls:
    url.rstrip('\n')
    print(url)
    try:
        pic = request.urlretrieve(url, './img3/%d.jpg' % count)
        print('pic %d' % count)
        count += 1
    except Exception as e:
        print(Exception, ':', e)
        bad_url.append(url)
    print('\n')
print('got all photos that can be got')

# 把没有抓取到的urls保存起来
with open('bad_url3.data', 'w') as f:
    for i in bad_url:
        f.write(i)
        f.write('\n')
    print('saved bad urls')

2. Requests方法

import requests
import socket
import os

# 在同级目录新建文件夹存图片
os.mkdir('./img')

# 设定一下无响应时间,防止有的坏图片长时间没办法下载下来
timeout = 20
socket.setdefaulttimeout(timeout)

# 从文件里面读urls
urls = []
with open('./url.data') as f:
    for i in f.readlines():
        if i != '':
            urls.append(i)
        else:
            pass

# 为请求增加一下头,获取图片
user_agent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Safari/537.36'
headers = {
    'User-Agent': user_agent
}
bad_url = []
count = 1
for url in urls:
    url.rstrip('\n')
    print(url)
    try:
        pic = requests.get(url, headers=headers)
        with open('./img2/%d.jpg' % count, 'wb') as f:
            f.write(pic.content)
            f.flush()
        print('pic %d' % count)
        count += 1
    except Exception as e:
        print(Exception, ':', e)
        bad_url.append(url)
    print('\n')
print('got all photos that can be got')

# 保存坏链接
with open('bad_url.data', 'w') as f:
    for i in bad_url:
        f.write(i)
        f.write('\n')
    print('saved bad urls')

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • NeurIPS 2019最佳论文出炉,今年增设“新方向奖”,微软华人学者获经典论文奖

    第32届神经信息处理系统大会(NeurIPS 2019)今天在加拿大温哥华正式召开。

    量子位
  • Michael Jordan获得2020年IEEE冯诺依曼奖,吴恩达曾是其学生

    Michael I. Jordan是美国计算机科学和统计学领域的知名学者,目前担任加州大学伯克利分校电机工程与计算机系和统计学系教授,也是美国国家科学院院士、I...

    量子位
  • 我用飞桨做了一个AI智能小车

    我在观察历届智能车竞赛以及教学实验中发现,采用传统视觉算法的视觉智能车只能在特定赛道中行驶,一旦赛道环境改变,必须修改大量的代码才能运行。算法适应性差是制约智能...

    用户1386409
  • B站收藏 6.1w+!GitHub 标星 3.9k+!这门神课拯救了我薄弱的计算机基础

    作为一个所谓的计算机科班出身的人来说,特别难为情的是自己的计算机基础很差,比如计算机网络当年一度差点挂掉,多亏当时的老师手下留情,给我一个刚及格的分数,但也因为...

    Rocky0429
  • 【NLP】知识图谱简史:从1950到2019

    地址:http://knowledgegraph.today/paper.html

    yuquanle
  • 英特尔为决战英伟达这次真的拼了!20亿美元收购AI芯片公司Habana Labs

    12月16日,英特尔正式宣布以20亿美元收购Habana Labs。这是继153亿美元收购Mobileye、3.5亿美元收购Nervana之后,英特尔第三次收购...

    新智元
  • AI啊,我这里有些羞羞的东西,你要不要看一眼?

    没错,这是个正经研究,出自挪威奥斯陆城市大学,甚至还发了一篇Nature Science Reports。

    量子位
  • PLEK:转录本蛋白编码潜能预测工具

    在之前的文章中,我们介绍过CPC和CNCI这两款软件,可以用于预测lncRNA序列。其中CPC基于序列比对的方式,对于注释信息相对全面的物种分类效果较好,但是运...

    生信修炼手册
  • ICLR论文盲审大反转:三个“8”完美过关,又来两个“1”彻底拒绝

    新模型将随机-梯度MCMC和循环自编码变分贝叶斯相结合。不仅能够捕获句子内的单词依赖性,还可以捕获句子和句子内部主题依赖性的时间迁移。

    量子位
  • 港中文提出全新点云上采样方法,破解自动驾驶感知难题

    作为三维世界更为真实有效的表达,点云在近年来受到了学界和业界的广泛关注。激光雷达和深度相机的大规模应用也为点云的发展创造了丰富的数据条件。

    量子位

扫码关注云+社区

领取腾讯云代金券