Dans ce script, une image typique pour une certaine requête est automatiquement collectée. Par exemple, ces dernières années, le Deep Learning est devenu populaire dans le domaine de l'imagerie (à l'origine dans le domaine de l'audio ...), et il a été vu dans diverses sociétés académiques et établi comme une tâche partagée. Cependant, les données de formation nécessitent une quantité énorme et le temps nécessaire de la collecte à l'annotation nécessite un coût considérable.
Par conséquent, nous collectons les données d'image taguées nécessaires à l'apprentissage automatique tel que le Deep Learning! J'ai créé ce script dans un tel but.
Cette fois, nous allons essayer d'automatiser la collecte d'images en utilisant la recherche d'images de Bing. Le code ci-dessous fait quelque chose comme l'exploration et le scraping, mais cette fois je l'ai implémenté sans utiliser de modules utiles (BeautifulSoup, urllib, etc.) pour étudier.
Bien qu'il soit étiqueté comme une collection d'images typique, il s'agit en fait d'un processus qui ne récupère que les N premières recherches.
collect_img.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import os
import re
import commands as cmd
#Recherche par requête Obtenir du code HTML
def get_HTML(query):
html = cmd.getstatusoutput("wget -O - https://www.bing.com/images/search?q=" + query)
return html
#Extraire l'URL de l'image jpg
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
#Enregistrer l'image localement
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]:Requête de recherche d'image, argvs[2]:Répertoire de destination(Seulement lorsque vous souhaitez enregistrer)
query = argvs[1] # some images e.g. leopard
html = get_HTML(query)
url = extract_URL(html)
for u in url:
print u
#Activer lorsque vous souhaitez enregistrer l'image localement
#get_IMG(argvs[2],url)
Exécutez comme suit à partir de la ligne de commande. Cependant, l'argument dir n'est pas spécifié lorsque get_IMG n'est pas utilisé (l'image n'est pas enregistrée).
collect_img.py
$ python collect_img.py query dir
--query: recherchez le mot pour l'image que vous voulez (par exemple, leopard) --dir: répertoire de destination de sauvegarde de l'image (./img/*)
Cette fois, nous présenterons quelques-uns des résultats collectés par la requête "leopard". Tout d'abord, la liste des URL des images acquises est la suivante. (Cependant, une partie seulement)
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 ...
Voici une partie de l'image acquise.
D'après ce qui précède, il a été constaté qu'il avait été acquis correctement. Cependant, il ne supprime pas le bruit en calculant la similitude des images, mais récupère simplement les N premiers cas. (C'est aussi un problème car il n'a pas été mis en œuvre pour collecter une grande quantité à l'infini)
Cette fois, j'ai écrit un script pour collecter des images typiques de la recherche d'images Bing dans le but de collecter automatiquement des données d'image annotées de l'apprentissage automatique. Pour les annotations, je pense que la requête peut être utilisée telle quelle. De plus, les deux questions suivantes peuvent être envisagées à l'avenir.
--Recueillir n'importe quel nombre (ou une infinité) d'images
Ce script dépend des caractéristiques du moteur de recherche d'images que le haut de la recherche d'images est souvent une image typique, il vaut donc mieux réfléchir sérieusement au deuxième problème ci-dessus. pense. Implémentons-le à nouveau la prochaine fois.
Recommended Posts