[PYTHON] Sammeln Sie selbst Bilddaten für maschinelles Lernen (Google Custom Search API Pikachu).

Einführung

Das erste, was Sie tun müssen, um ein maschinelles Lernmodell für die Objekterkennung in einem Bild zu erstellen, ist das Sammeln einer großen Anzahl von Trainingsbildern. Allgemeine Elemente wie Hunde und Autos können von Diensten wie ImageNet heruntergeladen werden, aber auch Bilder von Charakteren wie Pikachu und Anpanman. es gibt kein. Dann habe ich eine Methode entwickelt, um Bilder mithilfe der Google-Suche zu sammeln. Dieses Mal werde ich vorstellen, wie Bilddaten für maschinelles Lernen mithilfe der benutzerdefinierten Such-API von Google erfasst werden.

Klicken Sie hier für die Tumblr-API

Erstellen einer benutzerdefinierten Suchmaschine

Erstellen Sie zunächst eine benutzerdefinierte Suchmaschine mit CSE.

Klicken Sie zuerst unter Suchmaschine bearbeiten auf Hinzufügen カスタム検索_-検索エンジンの編集_「Google_Custom_Search_API_を使って機械学習の画像データを1日1000枚ずつ収集する」を編集_-_Qiita.png

Geben Sie als Nächstes die entsprechenden Werte in das Formular ein. Geben Sie hier als Einschränkung einen geeigneten Wert ein, z. B. "\ * .com" für "Site suchen". Nein, ich möchte alle Websites durchsuchen! Wenn Sie "\ *" denken, können Sie für den Rest Ihres Lebens nicht fortfahren. (Ich war hier ziemlich süchtig danach) Ich werde es ändern, damit später alles durchsucht wird. Nehmen Sie die folgenden Einstellungen vor und klicken Sie auf die Schaltfläche Erstellen.

Benutzerdefinierte Suche ___ Benutzerdefinierte Suchmaschine erstellen.png

Klicken Sie auf die Schaltfläche Erstellen, um die Erstellung abzuschließen. Wählen Sie dann das Bedienfeld aus.

カスタム検索_-_作成完了しました.png

Führen Sie in diesem Bedienfeld drei Schritte aus Aktivieren Sie zunächst die Bildsuche. カスタム検索_-_基本.png

Löschen Sie als Nächstes das zuvor hinzugefügte "\ * .com" von der gesuchten Site. カスタム検索_-_基本.png

Ändern Sie abschließend "Nur hinzugefügte Websites durchsuchen" in "Das gesamte Web mit Schwerpunkt auf hinzugefügten Websites durchsuchen". カスタム検索_-_基本.png

Danke für deine harte Arbeit. Sie haben jetzt eine benutzerdefinierte Suchmaschine erstellt. *** Notieren Sie sich die ID, die angezeigt wird, wenn Sie auf "Suchmaschinen-ID" klicken. *** ***

カスタム検索_-_基本.png

Aktivieren Sie die benutzerdefinierte API-Suche und rufen Sie den API-Schlüssel ab

Aktivieren Sie dann die benutzerdefinierte Such-API. Das ist sehr einfach https://console.developers.google.com Gehen Sie zu (Erstellen Sie ein Projekt, falls es nicht vorhanden ist), wählen Sie im linken Menü Bibliothek und anschließend CustomeSearch-API. Drücken Sie am Übergangsziel auf "Aktivieren", um die API zu aktivieren.

APIs___services_-_MyFirstApp.png

Holen Sie sich nun den API-Schlüssel aus den Anmeldeinformationen auf der linken Seite. Wählen Sie den API-Schlüssel auf der Registerkarte Anmeldeinformationen erstellen aus. 認証情報_-MyFirstApp_と「Google_Custom_Search_API_を使って機械学習の画像データを1日1000枚ずつ収集する」を編集_-_Qiita.png

*** Notieren Sie sich dies, da bei Auswahl ein Schlüssel erstellt wird. *** ***

認証情報_-_MyFirstApp.png

Es war lange her, aber jetzt bin ich bereit! !!

Sammle Bilder

Sammeln Sie Bilder mit der oben erstellten benutzerdefinierten Suchmaschine und der CustomeSearch-API und dem API-Schlüssel.

Das Skript ist sehr einfach: Speichern Sie die Bilder in Form der Nummer .png in einem Verzeichnis namens images unter dem ausgeführten Verzeichnis. Geben Sie für die Suchmaschinen-ID und den API-Schlüssel die oben notierten ein. (Bitte installieren Sie die importierte Bibliothek entsprechend mit pip.)

correct_image.py


import requests
import shutil

API_PATH    = "https://www.googleapis.com/customsearch/v1"
PARAMS = {
  "cx" : "999999999999999999:abcdefghi", #Suchmaschinen-ID
  "key": "xxxxxxxxxxxxxxxxxxxxxxxxxxxx", #API-Schlüssel
  "q"  : "Pikachu", #Suchbegriff
  "searchType": "image", #Suchtyp
  "start" : 1, #Startindex
  "num" : 10   #Anzahl der Akquisitionen in einer Suche(10 standardmäßig)
}
LOOP = 100
image_idx = 0

for x in range(LOOP):
  PARAMS.update({'start': PARAMS["num"] * x + 1})
  items_json = requests.get(API_PATH, PARAMS).json()["items"]
  for item_json in items_json:
    path = "images/" + str(image_idx) + ".png "
    r = requests.get(item_json['link'], stream=True)
    if r.status_code == 200:
      with open(path, 'wb') as f:
        r.raw.decode_content = True
        shutil.copyfileobj(r.raw, f)
      image_idx+=1

Als ich das tatsächlich ausführte, bekam ich das folgende Bild. 0.png 1.png 2.png

Schließlich

Ich bemerkte später, dass ich versuchte, mit dieser Methode viele Bilder zu bekommen

Traceback (most recent call last):
  File "get_image.py", line 31, in <module>
    items_json = requests.get(API_PATH, PARAMS).json()["items"]
KeyError: 'items'

Es stellte sich heraus, dass mehr als 100 Bilder nicht erfasst werden konnten. Anscheinend erlaubt die benutzerdefinierte Such-API von Google den Erwerb von Seiten 11 und darüber hinaus nicht. (Es gab einen Link, der erwähnt wurde, aber ich habe ihn verloren.)

Recommended Posts

Sammeln Sie selbst Bilddaten für maschinelles Lernen (Google Custom Search API Pikachu).
Sammeln Sie selbst Bilddaten für maschinelles Lernen (Tumblr API Yoshioka Riho ed.)
Bildersammlung mit der benutzerdefinierten Such-API von Google
Sammeln Sie Bilder für maschinelles Lernen (Bing Search API)
Sammeln von Daten zum maschinellen Lernen
Fügen Sie Ihre eigenen Bilddaten in Deep Learning ein und spielen Sie damit
Maschinelles Lernen mit Pytorch in Google Colab
[Maschinelles Lernen] Erstellen Sie ein Modell für maschinelles Lernen, indem Sie Transferlernen mit Ihrem eigenen Datensatz durchführen
Maschinelles Lernen Aufteilung der Trainingsdaten und Lernen / Vorhersage / Verifizierung
[Python] Speichern Sie PDF von Google Colaboratory in Google Drive! -Lass uns Daten für maschinelles Lernen sammeln-