目的
此脚本自动收集典型图像以进行查询。
例如,近年来,深度学习已在成像领域(最初在音频领域...)变得很流行,并且已在各种学术团体中被广泛接受并被确定为一项共同任务。
然而,训练数据需要大量,并且从收集到注释的时间需要相当大的成本。
因此,收集诸如深度学习之类的机器学习所需的标记图像数据!我创建此脚本的目的是为了达到这一目的。
典型图像集
这一次,我们将尝试使用bing的图像搜索自动执行图像收集。
下面的代码执行爬网和抓取之类的操作,但是这次我没有使用有用的模块(BeautifulSoup,urllib等)来进行学习。
尽管它被标记为典型的图像集合,但实际上它是仅获取前N个搜索结果的过程。
collect_img.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | #!/usr/bin/env python # -*- coding: utf-8 -*- import sys import os import re import commands as cmd # クエリ検索したHTMLの取得 def get_HTML(query): html = cmd.getstatusoutput("wget -O - https://www.bing.com/images/search?q=" + query) return html # jpg画像のURLを抽出 def extract_URL(html): url = [] sentences = html[1].split('\n') ptn = re.compile('<a href="(.+\.jpg)" class="thumb"') for sent in sentences: if sent.find('<div class="item">') >= 0: element = sent.split('<div class="item">') for j in range(len(element)): mtch = re.match(ptn,element[j]) if mtch >= 0: url.append(mtch.group(1)) return url # ローカルに画像を保存 def get_IMG(dir,url): for u in url: try: os.system("wget -P " + dir + " " + u) except: continue if __name__ == "__main__": argvs = sys.argv # argvs[1]: 画像検索のクエリ, argvs[2]: 保存先のディレクトリ(保存したい時のみ) query = argvs[1] # some images e.g. leopard html = get_HTML(query) url = extract_URL(html) for u in url: print u # 画像をローカルに保存したいときに有効にする #get_IMG(argvs[2],url) |
跑
执行方法
从命令行执行以下操作。
但是,当不使用get_IMG时,不指定参数dir(不保存图像)。
collect_img.py
1 | $ python collect_img.py query dir |
- 查询:在单词中搜索所需的图像(例如,豹子)
- dir:图像保存目标目录(./img/*)
执行结果
这次,我们将介绍查询"豹"收集的一些结果。
首先,获取的图像的URL列表如下。 (但是,只有一部分)
http://images.china.cn/attachement/jpg/site1007/20120720/00016c8b5de01172f9e82e.jpg
http://farm2.static.flickr.com/1254/1174179702_fe9c9a5d2c_b.jpg
http://www.katzen-und-kater.de/Grosskatzen/Leopard/Leopard5.jpg
...
这是所获取图像的一部分。
从上面发现,它是正确获取的。
但是,这并不意味着可以通过计算图像的相似度来消除噪声,而只是获取前N种情况。 (这也是一个问题,因为它没有实现无休止地大量收集)
概要
这次,我编写了一个脚本来从bing图像搜索中收集典型图像,目的是自动收集机器学习的带注释的图像数据。
对于注释,我认为查询可以原样使用。
另外,将来可以考虑以下两个问题。
- 收集任意数量(或无限多)的图像
- 根据图像之间的相似度等标准删除引起噪音的图像
该脚本取决于图像搜索引擎的特征,即顶部图像搜索通常是典型图像,因此我认真考虑了上述第二个问题,我认为这更好。
下次再次实现它。