Désormais, j'aimerais commencer à étudier sérieusement le Deep Learning. Avant cela, nous devons réfléchir à l'endroit où obtenir la grande quantité de données nécessaires à l'apprentissage.
L'une des méthodes que j'ai proposées est de collecter des images à partir du bot d'images Twitter. L'autre utilise des moteurs de recherche d'images tels que Google et Bing. Il faudra un certain temps pour trouver un bon bot, alors utilisons d'abord l'API de recherche. L'API de recherche Bing semble se terminer à la fin de cette année, je vais donc choisir Google cette fois.
Créez un nouveau moteur de recherche avec Recherche personnalisée. Les paramètres sont les suivants.
① Activez la recherche d'images ② Sélectionnez "Rechercher sur tout le Web" ③ Supprimer le site de recherche ④ Obtenir l'ID à partir de l'ID du moteur de recherche L'ID est du type "chaîne numérique: chaîne alphabétique". Il semble que la chaîne numérique soit l'ID utilisateur et la chaîne alphabétique l'ID moteur.
Activez l'API de recherche personnalisée dans la console Google Cloud Platform (https://console.cloud.google.com/apis) et créez une clé API avec vos informations d'identification.
https://www.googleapis.com/customsearch/v1?key=[API_KEY]&cx=[CUSTOM_SEARCH_ENGINE]&q=[search_item]
Vous pouvez rechercher avec.
Ajoutez searchType = image
pour rechercher des images,
num = xx & start = yy
est une page nation pour obtenir un grand nombre d'images.
Selon la référence (https://developers.google.com/custom-search/json-api/v1/reference/cse/list?hl=ja), num est un entier de 1 à 10.
En d'autres termes, vous pouvez rechercher jusqu'à 10 à la fois.
Le script est basé sur le code de tukiyo3.
get_image.py
#-*- coding:utf-8 -*-
#[email protected] 2016/11/21
import urllib.request
from urllib.parse import quote
import httplib2
import json
import os
API_KEY = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
CUSTOM_SEARCH_ENGINE = "12345648954985648968:xxxxxxxxx"
def getImageUrl(search_item, total_num):
img_list = []
i = 0
while i < total_num:
query_img = "https://www.googleapis.com/customsearch/v1?key=" + API_KEY + "&cx=" + CUSTOM_SEARCH_ENGINE + "&num=" + str(10 if(total_num-i)>10 else (total_num-i)) + "&start=" + str(i+1) + "&q=" + quote(search_item) + "&searchType=image"
print (query_img)
res = urllib.request.urlopen(query_img)
data = json.loads(res.read().decode('utf-8'))
for j in range(len(data["items"])):
img_list.append(data["items"][j]["link"])
i=i+10
return img_list
def getImage(search_item, img_list):
opener = urllib.request.build_opener()
http = httplib2.Http(".cache")
for i in range(len(img_list)):
try:
fn, ext = os.path.splitext(img_list[i])
print(img_list[i])
response, content = http.request(img_list[i])
with open(search_item+str(i)+ext, 'wb') as f:
f.write(content)
except:
print("failed to download images.")
continue
if __name__ == "__main__":
img_list = getImageUrl("chien", 5)
print(img_list)
getImage("dog", img_list)
Le code n'est pas si joli, mais je vais le partager. Je l'ai également mis dans Github.
L'API Google Custom Search est pratique, mais le niveau d'utilisation gratuit est de 100 requêtes / jour, et j'ai utilisé 70% uniquement pour tester le script. Lorsque vous l'utilisez réellement, vous devez le payer. Après tout, je souhaite collecter des images gratuitement, je vais donc essayer d'autres méthodes (comme Twitter).
Mise à jour du 24/11/2016 J'ai trouvé un bon moyen de collecter des images! ↓ http://d.hatena.ne.jp/shi3z/20160309/1457480722 Le script python dans le lien ci-dessus a été modifié pour prendre en charge python3. → GitHub
Recommended Posts