Von nun an möchte ich Deep Learning ernsthaft studieren. Vorher müssen wir uns überlegen, wo wir die große Datenmenge erhalten, die zum Lernen benötigt wird.
Eine der Methoden, die ich mir ausgedacht habe, ist das Sammeln von Bildern vom Twitter-Bildbot. Die andere verwendet Bildsuchmaschinen wie Google und Bing. Es wird einige Zeit dauern, einen guten Bot zu finden. Verwenden wir also zuerst die Such-API. Die Bing-Such-API scheint Ende dieses Jahres zu enden, daher werde ich dieses Mal Google wählen.
Erstellen Sie eine neue Suchmaschine mit Benutzerdefinierte Suche. Die Einstellungen sind wie folgt.
① Aktivieren Sie die Bildsuche ② Wählen Sie "Das gesamte Web durchsuchen". ③ Löschen Sie die Suchseite ④ ID von Suchmaschinen-ID abrufen Die ID ist vom Typ "Zahlenzeichenfolge: alphabetische Zeichenfolge". Es scheint, dass die Zahlenzeichenfolge die Benutzer-ID und die alphabetische Zeichenfolge die Engine-ID ist.
Aktivieren Sie die benutzerdefinierte Such-API in der Google Cloud Platform Console (https://console.cloud.google.com/apis) und erstellen Sie einen API-Schlüssel mit Ihren Anmeldeinformationen.
https://www.googleapis.com/customsearch/v1?key=[API_KEY]&cx=[CUSTOM_SEARCH_ENGINE]&q=[search_item]
Sie können mit suchen.
Fügen Sie searchType = image
hinzu, um nach Bildern zu suchen.
num = xx & start = yy
ist eine Seitennation, um eine große Anzahl von Bildern zu erhalten.
Laut der Referenz (https://developers.google.com/custom-search/json-api/v1/reference/cse/list?hl=ja) ist num eine Ganzzahl von 1 bis 10.
Mit anderen Worten, Sie können bis zu 10 gleichzeitig suchen.
Das Skript basiert auf tukiyo3s Code.
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("Hund", 5)
print(img_list)
getImage("dog", img_list)
Der Code ist nicht so hübsch, aber ich werde ihn teilen. Ich habe es auch in Github eingefügt.
Die benutzerdefinierte Such-API von Google ist praktisch, aber die kostenlose Nutzungsstufe beträgt 100 Anfragen pro Tag, und ich habe 70% nur zum Testen des Skripts verwendet. Wenn Sie es tatsächlich benutzen, müssen Sie dafür bezahlen. Schließlich möchte ich Bilder kostenlos sammeln, also werde ich einige andere Methoden ausprobieren (wie z. B. Twitter).
Update 2016/11/24 Ich habe einen guten Weg gefunden, um Bilder zu sammeln! ↓ http://d.hatena.ne.jp/shi3z/20160309/1457480722 Das Python-Skript im obigen Link wurde geändert, um Python3 zu unterstützen. → GitHub
Recommended Posts