GAN: DCGAN Part1 - Webbilder abkratzen

Ziel

Wir haben DCGAN mit dem Microsoft Cognitive Toolkit (CNTK) zusammengefasst.

Teil 1 bereitet Sie darauf vor, DCGAN mit dem Microsoft Cognitive Toolkit zu trainieren.

Dieses Mal werde ich DCGAN verwenden, um das Gesichtsgenerierungsmodell meines Lieblingskünstlers zu trainieren. Dafür ist ein Trainingsdatensatz erforderlich. Daher verwenden wir die Bing Image Search API v7 von Microsoft Azure, um das Image zu entfernen.

Ich werde sie in der folgenden Reihenfolge vorstellen.

  1. Beziehen Sie den API-Schlüssel für die Bing Image Search API v7
  2. Scraping mit der REST-API von Bing Image Search
  3. Gesichtserkennung mit Haar Cascades, die in OpenCV enthalten sind
  4. Erstellen einer Datei, die von dem von CNTK bereitgestellten integrierten Reader gelesen werden soll

Einführung

Abrufen des API-Schlüssels für die Bing Image Search API v7

Der Trainingsdatensatz ist nicht auf dieses Thema beschränkt, sondern der Engpass beim Ausprobieren von Deep Learning.

Und wenn Sie daran denken, Daten zu sammeln, fällt Ihnen das Scraping ein, aber es scheint, dass das Scraping oft stolpert.

Azure Cognitive Services von Microsoft Azure, das von Microsoft ausgeführt wird, bietet eine relativ gute Lösung für dieses Problem. Unter diesen verwenden wir diesmal die Bing-Bildsuche zum Sammeln von Bildern.

Bing Image Search

Gehen Sie zur obigen Seite und klicken Sie auf Try Bing Image Search, um Ihre Pläne anzuzeigen. Sie können auf diesem Computer ein Microsoft Azure-Konto erstellen oder einen 7-Tage-Test-API-Schlüssel erhalten, für den keine Kreditkarte erforderlich ist.

Wenn Sie sich mit einem Microsoft-, Facebook-, LiknedIn- oder GitHub-Konto anmelden, erhalten Sie eine E-Mail mit dem Hinweis, dass Sie einen API-Schlüssel für die E-Mail-Adresse erhalten haben, die dem Konto zugeordnet ist, das Sie für die Registrierung verwendet haben, und Sie erhalten den API-Schlüssel, den Sie erhalten haben. Du kannst nachschauen.

Scraping mit der Bing Image Search REST-API

Sobald Sie über den Azure Cognitive Services-API-Schlüssel verfügen, können Sie die REST-API für die Bing-Bildsuche verwenden, um die URL des Bildes abzurufen.

Siehe Schnellstart: Suchen nach Bildern mit der REST-API von Bing Image Search und Python Ich habe ein Programm erstellt.

Die Anforderungsbibliothek wird für HTTP-Vorgänge verwendet.

Ausführliche Informationen zu API-Parametern finden Sie unter Referenz zur Image Search API v7. ..

Gesichtserkennung mit Haar Cascades in OpenCV enthalten

In diesem DCGAN möchten wir uns auf das Gesicht konzentrieren, daher müssen wir nur das Gesicht aus dem aufgenommenen Bild ausschneiden.

Daher werden wir nur das Gesicht mit der Gesichtserkennung von Haar Cascades [1] ausschneiden, die auch im OpenCV-Tutorial vorgestellt wird. Haar Cascades unterscheidet sich durch die in der folgenden Abbildung gezeigten rechteckigen Merkmale und AdaBoost [2].

haar_cascade.png

Die Gesichtserkennung ist selbst ein auf maschinellem Lernen basierender Detektor, der viele Gesichtsbilder erfordert. Da die trainierte XML-Datei jedoch bei der Installation des Pakets opencv-contrib-python enthalten war, Es kann mit hoher Geschwindigkeit verarbeitet werden.

Erstellen einer Datei zum Lesen durch den von CNTK bereitgestellten integrierten Reader

Erstellen Sie schließlich wie zuvor eine Textdatei für ImageDeserializer, in die die für das Training verwendeten Bilder geladen werden, und Sie können loslegen. Diesmal werden jedoch keine Kategorielabels verwendet. Belassen Sie daher alle Labels bei 0.

ImageDeserializer wird in Computer Vision: Bildklassifizierung Teil 1 - COCO-Datensatz verstehen eingeführt.

Implementierung

Ausführungsumgebung

Hardware-

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

Software

・ Windows 10 Pro 1909 ・ Python 3.6.6 ・ Opencv-Contrib-Python 4.1.1.26 ・ Anfragen 2.22.0

Programm zum Ausführen

Das implementierte Programm wird auf [GitHub] veröffentlicht (https://github.com/sho-watari/GAN/tree/master/DCGAN).

dcgan_scraping.py


Kommentar

Ich werde einige Teile des auszuführenden Programms extrahieren und ergänzen.

Der erhaltene API-Schlüssel wird an das Argument subscription_key übergeben, und das Schlüsselwort des zu erfassenden Bildes wird an das Argument search_term als Zeichenfolge übergeben. Es gibt kein Problem, auch wenn das Suchwort japanisch ist.

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"

Die Funktion bing_image_search speichert die Bilder, die von der im BingImageSearch-Verzeichnis erhaltenen URL heruntergeladen wurden. Dieses Mal habe ich 1000 als Leitfaden verwendet.

Es ist erforderlich, verschiedene Ausnahmebehandlungen im Scraping-Programm zu implementieren, diesmal sind jedoch nur ConnectionError und Timeout implementiert.

bing_image_search


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

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

Nach dem Herunterladen des Bildes ist es besser, das Bild hier einmal zu überprüfen, um festzustellen, ob das gespeicherte Bild Ihren Wünschen entspricht. Dies liegt daran, dass es möglicherweise Bilder enthält, die in keiner Beziehung zueinander stehen.

Die XML-Datei, die zum Zuschneiden von Gesichtern verwendet wird, verwendet als Argument den Pfad von haarcascade_frontalface_default.xml in den Daten direkt unter cv2.

face_detection


face_cascade = cv2.CascadeClassifier(path)

Das zugeschnittene Gesichtsbild wird im Gesichtsverzeichnis gespeichert. Die zu erkennende Mindestgesichtsgröße ist auf 50 x 50 eingestellt. Die Gesichtserkennung durch Haar Cascades kann manchmal fehlschlagen. Stellen Sie daher sicher, dass Sie Ihr Gesicht wieder ausschneiden können.

Die Funktion flip_augmentation führt einen Links-Rechts-Flip durch, um Trainingsdaten zu addieren oder zu subtrahieren.

Die Funktion dcgan_mapfile erstellt eine Textdatei für ImageDeserializer.

Ergebnis

Wenn Sie das Programm ausführen, erhält es die URL des Bildes, folgt jeder URL, um das Bild herunterzuladen, und wendet dann die Gesichtserkennung an, um das Gesichtsbild zu generieren.

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

Ich wollte 1000 Bilder erhalten, konnte aber nur 612 Gesichtsbilder erstellen, selbst wenn ich eine Inversion durchführte.

Nachdem wir ein reales Bild und eine Textdatei für das Training erstellt haben, wird Teil 2 DCGAN mit CNTK trainieren.

Referenz

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 - Webbilder abkratzen
GAN: DCGAN Part3 - Wasserstein GAN verstehen
Web Scraping
Web Scraping (Prototyp)
100 Fortnite-Bilder kratzen
Python: Scraping Teil 1
Python: Scraping Teil 2
GAN: DCGAN Part2-Training DCGAN-Modell
Laden Sie Bilder automatisch mit Scraping herunter
Web Scraping mit Python + JupyterLab
Schaben mit Selen + Python Teil 1
Sofort von Google-Bildern abkratzen!
WEB-Scraping-Technologie und Bedenken
Kompromisse beim Web Scraping & Crawlen
Einfaches Web-Scraping mit Scrapy
Bildersammlung mit Web Scraping
Web Scraping mit Selenium (Python)
Web Scraping mit AWS Lambda
Schaben mit Selen + Python Teil 2
Web Scraping Anfänger mit Python
Web-Scraping-Bibliothek mit Algorithmen Scrapely
Einzeiliges Web-Scraping mit tse
Sammeln Sie nur Gesichtsbilder einer bestimmten Person mit Web Scraping