使用Google搜索创建深度学习数据集

版权声明:转载请注明出处 https://blog.csdn.net/weixin_39653948/article/details/83275743

深度学习算法,数据集的构建非常重要。但是手动收集图像数据可能是一个耗时,乏味,甚至昂贵的过程。那么是否有办法利用Google图片的强大功能来快速收集训练图像,从而缩短构建数据集所需的时间?有人已经开车了···

1.步骤

  1. 下载谷歌chrome 或者 火狐浏览器,翻墙出去谷歌图片搜索想要的数据
  2. 找到开发者工具选项
    在这里插入图片描述
  3. 选择console 控制台应用(基于JavaScript)这将能够以类似REPL的方式执行JavaScript。
  4. 开始向下继续滚动,直到找够与查询相关的所有图像。从开始一直到停止的地方,需要抓取这些图像每张的URL。切换回JavaScript控制台,然后将此JavaScript片段复制并粘贴到控制台中:
    在这里插入图片描述
  5. 得到urls.txt文件如图
    在这里插入图片描述

2.浏览器命令

代码:
1.下拉jQuery JavaScript库

// pull down jquery into the JavaScript console
var script = document.createElement('script');
script.src = "https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js";
document.getElementsByTagName('head')[0].appendChild(script);

2.使用CSS选择器来获取URL列表:

// grab the URLs
var urls = $('.rg_di .rg_meta').map(function() { return JSON.parse($(this).text()).ou; });

3.最后将URL写入文件(每行一个):

// write the URls to file (one per line)
var textToSave = urls.toArray().join('\n');
var hiddenElement = document.createElement('a');
hiddenElement.href = 'data:attachment/text,' + encodeURI(textToSave);
hiddenElement.target = '_blank';
hiddenElement.download = 'urls.txt';
hiddenElement.click();

执行上面的代码片段后,在默认的Downloads目录下有一个名为urls .txt的文件

3.使用Python下载Google图片

1 .导入所需的软件包

from imutils import paths
import argparse
import requests
import cv2
import os

2.解析命令行参数并将URL从磁盘加载 到内存中:

ap = argparse.ArgumentParser()
ap.add_argument("-u", "--urls", required=True,
    help="path to file containing image URLs")
ap.add_argument("-o", "--output", required=True,
    help="path to output directory of images")
args = vars(ap.parse_args())

rows = open(args["urls"]).read().strip().split("\n")
total = 0
  1. 遍历URL并尝试下载每个图像:
for url in rows:
    try:
        # 下载图片
        r = requests.get(url, timeout=60)
 
        # 保存图片
        p = os.path.sep.join([args["output"], "{}.jpg".format(
            str(total).zfill(8))])
        f = open(p, "wb")
        f.write(r.content)
        f.close()
 
        # 更新计数
        print("[INFO] downloaded: {}".format(p))
        total += 1
 
    # 处理在下载过程中是否抛出任何异常
    except:
        print("[INFO] error downloading {}...skipping".format(p))

4.遍历刚下载的所有文件,并尝试用OpenCV打开它们。如果文件无法用OpenCV打开,将其删除并继续:

for imagePath in paths.list_images(args["output"]):
    # 初始化是否应删除图像
    delete = False
    try:
        image = cv2.imread(imagePath)
        if image is None:
            delete = True
    except:
        print("Except")
        delete = True
        
    if delete:
        print("[INFO] deleting {}".format(imagePath))
        os.remove(imagePath)

5.打开终端并执行以下命令:可以看到来自Google Images的示例图像数据正在下载到电脑中。

$ python download_images.py --urls urls.txt --output images/messi

[INFO] downloaded: images/messi/00000000.jpg
[INFO] downloaded: images/messi/00000001.jpg

[INFO] downloaded: images/messi/00000519.jpg
[INFO] downloaded: images/messi/00000520.jpg

猜你喜欢

转载自blog.csdn.net/weixin_39653948/article/details/83275743