GAN: DCGAN Part1 - Scraping d'images Web

Cible

Nous avons résumé DCGAN à l'aide du Microsoft Cognitive Toolkit (CNTK).

La partie 1 vous prépare à former DCGAN à l'aide de Microsoft Cognitive Toolkit.

Cette fois, j'utiliserai DCGAN pour former le modèle de génération de visage de mon artiste préféré. Cela nécessite un jeu de données de formation, nous utilisons donc l'API Bing Image Search v7 de Microsoft Azure pour gratter l'image.

Je vais les présenter dans l'ordre suivant.

  1. Obtenez la clé API pour l'API Bing Image Search v7
  2. Scraping à l'aide de l'API REST Bing Image Search
  3. Détection de visage avec Haar Cascades inclus avec OpenCV
  4. Création d'un fichier à lire par le lecteur intégré fourni par CNTK

introduction

Obtention de la clé API pour l'API Bing Image Search v7

Non limité à ce thème, l'ensemble de données de formation est le goulot d'étranglement lors de l'essai du deep learning.

Et quand vous pensez à collecter des données, le grattage vient à l'esprit, mais il semble que le grattage trébuche souvent.

Azure Cognitive Services de Microsoft Azure, géré par Microsoft, offre une solution relativement bonne à ce problème. Parmi eux, nous utiliserons cette fois Bing Image Search pour collecter des images.

Bing Image Search

Consultez la page ci-dessus et cliquez sur Essayer la recherche d'images Bing pour voir vos plans. Vous pouvez créer un compte Microsoft Azure sur cette machine, ou vous pouvez obtenir une clé API d'essai de 7 jours qui ne nécessite pas de carte de crédit.

En vous connectant avec l'un des comptes Microsoft, Facebook, LiknedIn ou GitHub, vous recevrez un e-mail indiquant que vous avez obtenu une clé API pour l'adresse e-mail associée au compte que vous avez utilisé pour l'enregistrement, et vous recevrez la clé API que vous avez obtenue. Tu peux vérifier.

Scraping à l'aide de l'API REST Bing Image Search

Une fois que vous disposez de la clé d'API Azure Cognitive Services, vous pouvez utiliser l'API REST Bing Image Search pour obtenir l'URL de l'image.

Reportez-vous à Quickstart: Rechercher des images à l'aide de l'API REST Bing Image Search et Python J'ai créé un programme.

La bibliothèque de requêtes est utilisée pour les opérations HTTP.

Pour plus de détails sur les paramètres de l'API, reportez-vous à Référence API de recherche d'images v7. ..

Détection de visage avec Haar Cascades inclus avec OpenCV

Dans ce DCGAN, nous voulons nous concentrer sur le visage, nous devons donc découper uniquement le visage de l'image acquise.

Par conséquent, nous ne découperons que le visage en utilisant la détection de visage par Haar Cascades [1], qui est également introduite dans le tutoriel OpenCV. Haar Cascades se distingue par les traits rectangulaires montrés dans la figure ci-dessous et AdaBoost [2].

haar_cascade.png

La détection de visage est elle-même un détecteur basé sur l'apprentissage automatique qui nécessite beaucoup d'images de visage, mais comme le fichier XML formé a été inclus lorsque vous avez installé le package opencv-contrib-python, Il peut être traité à grande vitesse.

Création d'un fichier à lire par le lecteur intégré fourni par CNTK

Enfin, comme auparavant, créez un fichier texte pour ImageDeserializer qui charge les images utilisées pour la formation, et vous êtes prêt à partir. Cependant, nous n'utiliserons pas d'étiquettes de catégorie cette fois, laissez donc toutes les étiquettes à 0.

ImageDeserializer est introduit dans Computer Vision: Image Classification Part1 --Understanding COCO dataset.

la mise en oeuvre

Environnement d'exécution

Matériel

・ Processeur Intel (R) Core (TM) i7-7700K 3,60 GHz

Logiciel

・ Windows 10 Professionnel 1909 ・ Python 3.6.6 ・ Opencv-contrib-python 4.1.1.26 ・ Requêtes 2.22.0

Programme à exécuter

Le programme implémenté est publié sur GitHub.

dcgan_scraping.py


Commentaire

Je vais extraire et compléter certaines parties du programme à exécuter.

La clé API acquise est donnée à l'argument subscription_key, et le mot-clé de l'image à collecter est donné à l'argument search_term sous forme de chaîne de caractères. Il n'y a pas de problème même si le mot clé de recherche est japonais.

dcgan_scraping.py


subscription_key = "your-subscription-key"
search_url = "https://api.cognitive.microsoft.com/bing/v7.0/images/search"
search_term = "your-search-keyword"

La fonction bing_image_search sauvegarde les images téléchargées à partir de l'URL obtenue dans le répertoire BingImageSearch. Cette fois, j'ai utilisé 1000 comme guide.

Il est nécessaire d'implémenter plusieurs traitements d'exceptions dans le programme de scraping, mais cette fois seuls ConnectionError et Timeout sont implémentés.

bing_image_search


except ConnectionError:
    print("ConnectionError :", image_url)
    continue

except Timeout:
    print("TimeoutError :", image_url)
    continue

Après avoir téléchargé l'image, il est préférable de vérifier l'image ici une fois pour voir si l'image enregistrée est ce que vous voulez. En effet, il peut contenir des images totalement indépendantes.

Le fichier XML utilisé pour le recadrage de visage prend le PATH de haarcascade_frontalface_default.xml dans les données directement sous cv2 comme argument.

face_detection


face_cascade = cv2.CascadeClassifier(path)

L'image du visage recadrée est enregistrée dans le répertoire des visages. La taille minimale du visage à détecter est définie sur 50x50. La détection des visages par Haar Cascades peut parfois échouer, c'est donc une bonne idée de vous assurer de pouvoir à nouveau vous découper le visage.

La fonction flip_augmentation effectue un retournement gauche-droite pour ajouter ou soustraire des données d'entraînement.

La fonction dcgan_mapfile crée un fichier texte pour ImageDeserializer.

résultat

Lorsque vous exécutez le programme, il obtient l'URL de l'image, suit chaque URL pour télécharger l'image, puis applique la détection de visage pour générer l'image du visage.

./BingImageSearch/image_0000.jpg
./BingImageSearch/image_0001.jpg
...

Je voulais obtenir 1000 images, mais je ne pouvais préparer que 612 images de visage même si j'effectuais une inversion.

Maintenant que nous avons créé une image réelle et un fichier texte à utiliser pour la formation, la partie 2 entraînera DCGAN à l'aide de CNTK.

référence

Bing Image Search Quickstart: Search for images using the Bing Image Search REST API and Python Image Search API v7 reference Requests: HTTP for Humans™ Face Detection using Haar Cascades

Computer Vision : Image Classification Part1 - Understanding COCO dataset

  1. Paul Viola and Jones Michael. "Rapid Object Detection Using a Boosted Cascade of Simple Features", Proceedings of the 2001 IEEE Computer Society Conference on Computer Vision and Pattern Recognition (CVPR). 2001, pp 511–518.
  2. Yoav Freund and Robert E. Schapire. "A decision-theoretic generalization of on-line learning and an application to boosting", European Conference on Computational Learning Theory. 1995, pp 23-37.

Recommended Posts

GAN: DCGAN Part1 - Scraping d'images Web
GAN: DCGAN Part3 - Comprendre Wasserstein GAN
raclage Web
grattage Web (prototype)
Grattage de 100 images Fortnite
Python: grattage partie 1
Python: grattage, partie 2
GAN: DCGAN Part2-Training Modèle DCGAN
Télécharger automatiquement des images avec grattage
Web scraping avec python + JupyterLab
Grattage avec Selenium + Python Partie 1
Grattage immédiat des images google!
Technologie de grattage WEB et préoccupations
Compromis dans le scraping et l'exploration Web
Grattage Web facile avec Scrapy
Collection d'images avec scraping Web
Web scraping avec Selenium (Python)
Web scraping à l'aide d'AWS lambda
Grattage avec Selenium + Python Partie 2
Web scraping débutant avec python
Bibliothèque de scraping Web utilisant des algorithmes Scrapely
Grattage de bande sur une seule ligne avec du tsé
Ne collectez que des images faciales d'une personne spécifique grâce au grattage Web