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.
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.
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.
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. ..
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].
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.
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.
・ Processeur Intel (R) Core (TM) i7-7700K 3,60 GHz
・ Windows 10 Professionnel 1909 ・ Python 3.6.6 ・ Opencv-contrib-python 4.1.1.26 ・ Requêtes 2.22.0
Le programme implémenté est publié sur GitHub.
dcgan_scraping.py
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.
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.
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
Recommended Posts