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.
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.
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.
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. ..
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].
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 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.
・ CPU Intel (R) Core (TM) i7-7700K 3,60 GHz
・ Windows 10 Pro 1909 ・ Python 3.6.6 ・ Opencv-Contrib-Python 4.1.1.26 ・ Anfragen 2.22.0
Das implementierte Programm wird auf [GitHub] veröffentlicht (https://github.com/sho-watari/GAN/tree/master/DCGAN).
dcgan_scraping.py
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.
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.
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