[PYTHON] Collectez vous-même des données d'image de formation au machine learning (API de recherche personnalisée Google Pikachu)

introduction

La première chose que vous devez faire pour créer un modèle d'apprentissage automatique pour la reconnaissance d'objets dans une image est de collecter une grande quantité d'images d'entraînement. Les éléments généraux tels que les chiens et les voitures peuvent être téléchargés à partir de services tels que ImageNet, mais des images de personnages tels que Pikachu et Anpanman, par exemple. il n'y a pas. Ensuite, j'ai trouvé une méthode pour collecter des images à l'aide de la recherche Google. Cette fois, je vais vous présenter comment collecter des données d'image pour l'apprentissage automatique à l'aide de l'API Google Custom Search.

Cliquez ici pour l'API Tumblr

Créer un moteur de recherche personnalisé

Commencez par créer un moteur de recherche personnalisé avec CSE.

Cliquez d'abord sur Ajouter sous Modifier le moteur de recherche カスタム検索_-検索エンジンの編集_「Google_Custom_Search_API_を使って機械学習の画像データを1日1000枚ずつ収集する」を編集_-_Qiita.png

Ensuite, remplissez les valeurs appropriées dans le formulaire. En guise d'avertissement ici, entrez une valeur appropriée telle que "\ * .com" pour "Rechercher sur le site". Non, je veux rechercher tous les sites! Si vous pensez "\ *", vous ne pourrez pas continuer pour le reste de votre vie. (J'étais assez accro ici) Je vais le changer pour que tout soit fouillé plus tard. Définissez les paramètres suivants comme il convient et appuyez sur le bouton Créer.

Recherche personnalisée - Créer un moteur de recherche personnalisé.png

Cliquez sur le bouton Créer pour terminer la création. Sélectionnez ensuite le panneau de commande.

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

Faites trois choses dans ce panneau de configuration Tout d'abord, activez la recherche d'images. カスタム検索_-_基本.png

Ensuite, supprimez le "\ * .com" que vous avez ajouté précédemment du site à rechercher. カスタム検索_-_基本.png

Enfin, remplacez "Rechercher uniquement les sites ajoutés" par "Rechercher sur l'ensemble du Web en mettant l'accent sur les sites ajoutés". カスタム検索_-_基本.png

Je vous remercie pour votre travail acharné. Vous venez de créer un moteur de recherche personnalisé. *** Notez l'ID qui apparaît lorsque vous appuyez sur "Search Engine ID". *** ***

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

Activer la recherche API personnalisée et obtenir la clé API

Activez ensuite l'API de recherche personnalisée. C'est très simple https://console.developers.google.com Accédez à (Créer un projet s'il n'existe pas), sélectionnez Bibliothèque dans le menu de gauche, puis sélectionnez API CustomeSearch. Appuyez sur "Activer" à la destination de la transition pour activer l'API.

APIs___services_-_MyFirstApp.png

Maintenant, récupérez la clé API à partir des informations d'identification sur la gauche. Sélectionnez la clé API dans l'onglet Créer des informations d'identification. 認証情報_-MyFirstApp_と「Google_Custom_Search_API_を使って機械学習の画像データを1日1000枚ずつ収集する」を編集_-_Qiita.png

*** Notez ceci car une clé sera créée lorsque vous la sélectionnez. *** ***

認証情報_-_MyFirstApp.png

Cela faisait longtemps, mais maintenant je suis prêt! !!

Collectez des images

Collectez des images à l'aide du moteur de recherche personnalisé créé ci-dessus et de l'API et de la clé API CustomeSearch.

Le script est très simple: Enregistrez les images sous forme de nombre .png dans un répertoire appelé images sous le répertoire exécuté. Pour l'ID du moteur de recherche et la clé API, saisissez ceux que vous avez notés ci-dessus. (Veuillez installer la bibliothèque importée avec pip le cas échéant.)

correct_image.py


import requests
import shutil

API_PATH    = "https://www.googleapis.com/customsearch/v1"
PARAMS = {
  "cx" : "999999999999999999:abcdefghi", #ID du moteur de recherche
  "key": "xxxxxxxxxxxxxxxxxxxxxxxxxxxx", #Clé API
  "q"  : "Pikachu", #Rechercher un mot
  "searchType": "image", #Type de recherche
  "start" : 1, #Index de départ
  "num" : 10   #Nombre d'acquisitions en une seule recherche(10 par défaut)
}
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

Quand j'ai réellement exécuté cela, j'ai eu l'image suivante. 0.png 1.png 2.png

finalement

J'ai remarqué plus tard que lorsque j'ai essayé d'obtenir beaucoup d'images avec cette méthode

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

Il s'est avéré que plus de 100 images n'ont pas pu être acquises. Apparemment, l'API Google Custom Search ne permet pas l'acquisition des pages 11 et au-delà. (Il y avait un lien qui a été mentionné, mais je l'ai perdu.)

Recommended Posts

Collectez vous-même des données d'image de formation au machine learning (API de recherche personnalisée Google Pikachu)
Collectez vous-même des données d'image de formation au machine learning (API Tumblr Yoshioka Riho ed.)
Collection d'images à l'aide de l'API Google Custom Search
Collecter des images pour l'apprentissage automatique (API Bing Search)
Comment collecter des données d'apprentissage automatique
Mettez vos propres données d'image dans Deep Learning et jouez avec
Apprentissage automatique avec Pytorch sur Google Colab
[Apprentissage automatique] Créez un modèle d'apprentissage automatique en effectuant un apprentissage par transfert avec votre propre ensemble de données
Division des données de formation en apprentissage automatique et apprentissage / prédiction / vérification
[Python] Enregistrez le PDF de Google Colaboratory sur Google Drive! -Collectons des données pour l'apprentissage automatique