[PYTHON] Collecter des images pour l'apprentissage automatique (API Bing Search)

introduction

Ce sera un mémorandum de ce que vous avez fait.

Choses à faire

Un grand nombre d'images peut être nécessaire lorsque vous essayez d'étudier l'apprentissage automatique. Bing semble être le plus approprié pour la collecte d'images, et Microsoft Azure ne l'a jamais fait, j'ai donc essayé cela à titre d'étude. Si vous trébuchez lors de la collecte d'images, c'est un simple post avec une URL de référence, mais je suis tout à fait d'accord avec vous.

[URL de référence] Résumé des circonstances de la collecte d'images chez Yahoo, Bing et Google https://qiita.com/ysdyt/items/565a0bf3228e12a2c503

supposition

Microsoft: Obtention de la clé API Bing Search (vérifiez la méthode d'acquisition à l'URL de référence) https://azure.microsoft.com/ja-jp/

Date d'expiration: 30 jours gratuits

URL de référence

・ Créez un programme de collecte d'images automatique avec l'API Bing Web Search https://blog.wackwack.net/entry/2017/12/27/223755

・ Collectez un grand nombre d'images à l'aide de l'API de recherche d'images de Bing https://qiita.com/ysdyt/items/49e99416079546b65dfc

· Officiel: Démarrage rapide: recherchez des images à l'aide de l'API REST Bing Image Search et de Python https://docs.microsoft.com/ja-jp/azure/cognitive-services/bing-image-search/quickstarts/python

code

--Seule la partie de téléchargement est ajoutée au code URL de référence.

import math
import requests
import time
import OpenSSL
import urllib
import hashlib
import sha3
import os
import csv

# Divisez l'argument f en nom de fichier et extension (non compris).
def split_filename(f):
    split_name = os.path.splitext(f)
    file_name =split_name[0]
    extension = split_name[-1].replace(".","")
    return file_name,extension

def download_img(path,url):
    _,extension  = split_filename(url)
    if extension.lower() in ('jpg','jpeg','gif','png','bmp'):
        encode_url = urllib.parse.unquote(url).encode('utf-8')
        hashed_name = hashlib.sha3_256(encode_url).hexdigest()
        full_path = os.path.join(path,hashed_name + '.' + extension.lower())

        r = requests.get(url)
        if r.status_code == requests.codes.ok:
            with open(full_path,'wb') as f:
                f.write(r.content)
            print('saved image...{}'.format(url))
        else:
            print("HttpError:{0}  at{1}".format(r.status_code,image_url))

 Endpoint URL
url = "https://api.cognitive.microsoft.com/bing/v7.0/images/search"

 Bing Search API Key
APIKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

 Parameter
headers = {'Ocp-Apim-Subscription-Key':APIKey}
 count = 10 # Nombre maximum d'acquisitions par demande par défaut: 30 max: 150
 mkt = "ja-JP" # Code du pays source
 num_per = 2 # nombre de requêtes (count * num_per = nombre d'images acquises)
 offset = math.floor (count / num_per) # nombre de boucles

with open("./list.txt", "r", encoding="utf-8_sig") as f:
    reader = csv.reader(f, delimiter='\t')
    for row in reader:
        keyword = row[0]
        pathname = row[1]

 #Specify save destination
        path = "./" + pathname
 #Si la destination de sauvegarde n'existe pas
        if not os.path.exists(path):
            os.makedirs(path)

        for offset_num in range(offset):
            params = {'q':keyword, 'count':count, 'offset':offset_num*offset, 'mkt':mkt}
            r = requests.get(url, headers=headers, params=params)
            data = r.json()
            for values in data['value']:
                image_url = values['contentUrl']
                try:
                    download_img(path, image_url)
                except Exception as e:
                    print("failed to download image at {}".format(image_url))
                    print(e)
            time.sleep(0.5)

--Télécharger l'image (fujisan) png2.png

Autre

--Installation: pip install pysha3 a échoué dans la version 3.7 de python. Puisque la version 3.6 a pu s'installer sans erreur, ce programme a été exécuté avec python3.6.

Résumé

«J'ai pu éviter d'avoir à trébucher au début en étudiant l'apprentissage automatique basé sur l'image. (Merci)

―― Étant donné que les frais payés de MS Azure ne sont pas élevés, j'ai pensé qu'il serait possible de l'utiliser en fonction de la situation après la fin de l'offre gratuite. Prix: https://azure.microsoft.com/ja-jp/pricing/details/cognitive-services/search-api/

Recommended Posts

Collecter des images pour l'apprentissage automatique (API Bing Search)
[Python] Collectez des images avec Icrawler pour l'apprentissage automatique [1000 feuilles]
Amplifiez les images pour l'apprentissage automatique avec Python
Ensemble de données pour l'apprentissage automatique
Prétraitement japonais pour l'apprentissage automatique
Collectez vous-même des données d'image de formation au machine learning (API de recherche personnalisée Google Pikachu)
Collectez un grand nombre d'images à l'aide de l'API de recherche d'images de Bing
<Pour les débutants> bibliothèque python <Pour l'apprentissage automatique>
Informations sur les réunions d'apprentissage automatique pour HRTech
Comment utiliser l'API Bing Search
[Balisage recommandé pour l'apprentissage automatique # 4] Script d'apprentissage automatique ...?
Comment collecter des données d'apprentissage automatique
Premiers pas pour les débutants en apprentissage automatique (IA)
Pourquoi Python est choisi pour l'apprentissage automatique
Méthode d'encodage à chaud "utilisable" pour l'apprentissage automatique
Apprentissage automatique
[Shakyo] Rencontre avec Python pour l'apprentissage automatique
[Python] Conception d'applications Web pour l'apprentissage automatique
Une introduction à Python pour l'apprentissage automatique
Créer un environnement de développement pour l'apprentissage automatique
[Renforcer l'apprentissage] Rechercher le meilleur itinéraire
Une introduction à l'apprentissage automatique pour les développeurs de robots
Classification des images de guitare par apprentissage automatique Partie 1
Ordre d'étude recommandé pour les débutants en apprentissage automatique / apprentissage en profondeur
Apprentissage automatique à partir de 0 pour les étudiants en physique théorique # 1
Apprentissage automatique à partir de 0 pour les étudiants en physique théorique # 2
[Pour les débutants] Introduction à la vectorisation dans l'apprentissage automatique
Collectez vous-même des données d'image de formation au machine learning (API Tumblr Yoshioka Riho ed.)
[Memo] Apprentissage automatique
Classification de l'apprentissage automatique
Exemple d'apprentissage automatique
Créer un ensemble de données d'images à utiliser pour la formation
Script Python de collection d'images pour créer des ensembles de données pour l'apprentissage automatique
Créez un environnement interactif pour l'apprentissage automatique avec Python
[Balisage recommandé dans le machine learning # 2] Extension du script de scraping
[Balisage recommandé dans le machine learning # 2.5] Modification du script de scraping
Mémo d'apprentissage Python pour l'apprentissage automatique par Chainer du chapitre 2
Mémo d'apprentissage Python pour l'apprentissage automatique par Chainer chapitres 1 et 2
céleri
[Python] Conception d'applications Web pour l'apprentissage automatique
[Python] J'ai créé un classificateur pour les iris [Machine learning]
Apprentissage automatique avec des images de catégorie Caffe -1 à l'aide du modèle de référence
Méthode d'étude pour apprendre le machine learning à partir de zéro (version mars 2020)
[Apprentissage automatique] Essayez de détecter des objets à l'aide de la recherche sélective
14 newsletters par e-mail utiles pour collecter des informations sur l'apprentissage automatique
Mémo de construction d'environnement d'apprentissage automatique par Python
xgboost: modèle d'apprentissage automatique efficace pour les données de table
Tout pour que les débutants puissent faire du machine learning