[PYTHON] Träumt das neuronale Netz von einer elektrischen Maus?

Dieser Artikel ist der Artikel zum 23. Tag von Tech-Circle Hands im Adventskalender 2016. Die Veröffentlichung wurde verzögert.

Der Artikel am 22. ist @ morio36 "Theta-Automatikaufnahme bei Annäherung an einen bestimmten Ort mit Wikitude" (http://qiita.com/morio36/items/3a461e2f26f82e23d059 "Bei Annäherung an einen bestimmten Ort mit Wikitude" Es war Theta Automatikschießen "). Ein sehr interessanter Artikel namens AR mit Theta!

Einführung

Magst du Pokemon? Pokemon hat kürzlich einen neuen Titel veröffentlicht, aber es scheint, dass derzeit 801 Typen erscheinen.

Wenn die Anzahl steigt, wird ein ähnliches Pokemon herauskommen. Ist es nicht schwierig, Pokemon unter ihnen richtig zu identifizieren? 1482519198rtKJeZJsIj6v83T1482518933.gif Von unten zitiert http://www.pokemon.co.jp/ex/sun_moon/ http://www.pokemon.jp/

Verwenden Sie also Deep Learning, was heutzutage sehr beliebt ist In diesem Artikel geht es darum, Pokemon zu identifizieren.

Überblick

Der Zweck dieses Artikels ist es, Deep Learning zum ersten Mal zu implementieren und auszuführen. Es gibt keine detaillierte Erklärung der Methode, sondern anhand der Punkte, die ich beim tatsächlichen Verschieben gefunden habe, und der Punkte, auf die ich gestoßen bin Ich hoffe du wirst interessiert sein.

Ziel

Lerne die Bilder von "Pikachu" und "Dedenne" Ziel ist es, die beiden im Test korrekt unterscheiden zu können.

Umgebung

Die folgende Umgebung wurde verwendet. ・ Mac (OS X El Capitan 10.11.6) ・ Python 3.5.0

Vorbereitung

Tensorflow von Google als Deep-Learning-Bibliothek veröffentlicht, Stellt OpenCV als Bilderkennungsbibliothek zur Verfügung.

Anaconda Installation

Installieren Sie Anaconda, das Python-Paketverwaltungssystem. Python-Paketverwaltungssysteme enthalten pip, aber Anaconda wird in Bezug auf die Verwendung von OpenCV empfohlen. (Ich habe hier versehentlich ein paar Stunden meiner Wahl verloren.) Der Grund wird später beschrieben.

Für die Installationsmethode habe ich auf [hier] verwiesen (http://qiita.com/oct_itmt/items/2d066801a7464a676994). Installieren Sie die Python3-Serie Anaconda.

Ich muss auch Homebrew und pyenv installieren, aber ich konnte ohne Probleme fortfahren.

Für eine Einführung und Erklärung zu Python wird außerdem der Artikel hier empfohlen. Schauen Sie also bitte mal rein!

Tensorflow-Installation

Sie können sich auch mit Scratch entwickeln, wenn Sie Deep Learning implementieren. Verwenden Sie den Bibliothekstensorflow. Ich habe auf [hier] verwiesen (http://pythondatascience.plavox.info/tensorflow%E3%81%A7%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97 % E3% 83% A9% E3% 83% BC% E3% 83% 8B% E3% 83% B3% E3% 82% B0 / Ubuntu-Linux% E3% 81% AB% E3% 82% A4% E3% 83 % B3% E3% 82% B9% E3% 83% 88% E3% 83% BC% E3% 83% AB /).

Eines der Dinge, die ein wenig stolperten, war die Aktivierung der Umwelt. In meiner Umgebung konnte ich nicht gemäß dem Artikel aktivieren, daher habe ich Folgendes getan.

source ~/.pyenv/versions/Anaconda-Version/bin/Aktivieren Sie den Namen der virtuellen Umgebung

Da der entsprechende Artikel für Linux bestimmt ist, muss bei der Installation von Tensorflow die Version für Mac gelesen werden.

OK, wenn Sie Tensorflow im interaktiven Python-Modus importieren können.

$ python
Python 3.5.2 |Continuum Analytics, Inc.| (default, Jul  2 2016, 17:52:12) 
[GCC 4.2.1 Compatible Apple LLVM 4.2 (clang-425.0.28)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
>>> 

OpenCV-Installation

Dies ist das am meisten verpackte. Für die Python3-Serie müssen Sie OpenCV3 installieren. (OpenCV2 für Python2-Serie)

Sie können OpenCV3 auch mit dem folgenden Befehl in Homebrew installieren: Ich konnte es einfach nicht lösen. (Soweit ich es im Internet finden kann, scheinen es einige Leute zu können)

 brew install opencv3 --with-python3

Hier kommt Anaconda ins Spiel. Da OpenCV3 bereits als Anaconda-Bibliothek vorbereitet ist, Sie können es schnell lösen, indem Sie mit dem folgenden Befehl installieren!

conda install -c https://conda.anaconda.org/menpo opencv3

Als ich es nach der Installation überprüft habe, scheint es zu funktionieren. (Importieren Sie sowohl OpenCV2 als auch OpenCV3 als cv2)

$ python
Python 3.5.2 |Continuum Analytics, Inc.| (default, Jul  2 2016, 17:52:12) 
[GCC 4.2.1 Compatible Apple LLVM 4.2 (clang-425.0.28)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'3.1.0'
>>> 

Die Umgebung ist jetzt bereit!

Implementierung

Apropos Bilder im Deep Learning: Die Methode Convolutional Neural Network (CNN) ist orthodox, daher werde ich auch dieses Mal mit CNN ein Urteil fällen. Außerdem wird OpenCV verwendet, um die Größe des Lehrerbilds zu vereinheitlichen.

Dieses Mal werde ich der Einfachheit halber fast den Code von Identifizieren Sie die Produktionsfirma der Animation Yuruyuri mit TensorFlow verwenden und ihn implementieren. tat.

Ursprünglich war es eine wahre Freude, wie man es umsetzt, aber wir haben es uns zum ersten Ziel gemacht, es zu bewegen. Die Genauigkeit ändert sich abhängig von den Filtereinstellungen und der Schichtkonfiguration, die der Schlüssel zu CNN sind. Ich hoffe, mein Verständnis zu vertiefen, indem ich es mit der Implementierung vergleiche und gleichzeitig das Studium in der Zukunft ermutige.

Korrekturpunkte

Der Teil, der sich auf die Beschreibung für das Python2-System und den Pfad zur Laufzeit bezieht, wurde behoben.

・ Zeilen 156 und 175 Da die Lehrerdaten und Testdaten für Bilder waren, die in derselben Ebene angeordnet waren, wurden sie an beliebige Stellen korrigiert. ・ Zeile 214 Bei der Entscheidung, welches Training für jede Stapelgröße ausgeführt werden soll, wird der dem Bereich zugewiesene Typ float und es tritt ein Fehler auf. Setzen Sie ihn daher in den Typ int um ・ Zeilen 228 und 238 Da es in Python3 zu einer Druckfunktion wurde, werden Klammern hinzugefügt

Lehrerbild / Testbild

Die Lehrerbilddaten werden in dem Verzeichnis abgelegt, das in den obigen Korrekturpunkten angegeben ist. Wir haben 100 Bilder in insgesamt 2 Bildern (Pikachu Dedenne) platziert, die mit der Google Bildsuche aufgenommen wurden. Ich habe Bilder ausgeschlossen, die in den Keyword-Suchergebnissen irrelevant sind, aber das war ziemlich schwierig.

Zusätzlich zum Lehrerbild haben wir insgesamt 100 Testbilder vorbereitet.

[Was ich diesmal nicht machen konnte] ・ Die Anzahl der Lehrerdaten ist überwiegend unzureichend. Es gibt eine Methode zur Bildverarbeitung (Umkehrung, Helligkeitsanpassung usw.) als Aufblasmethode, um die Anzahl der Daten zu erhöhen. Diesmal wird dies jedoch nicht durchgeführt.

Lehrerdaten / Testdaten

Es befindet sich in derselben Ebene wie die Ausführungsdatei wie train.txt und test.txt. Das Format ist wie folgt.

Dateiname Beschriftungsname

Lauf

Machen wir das!

$ python pika_pre.py
step 0, training accuracy 0.590909
step 1, training accuracy 0.409091
step 2, training accuracy 0.654545
step 3, training accuracy 0.7
step 4, training accuracy 0.745455
step 5, training accuracy 0.772727
step 6, training accuracy 0.827273
step 7, training accuracy 0.890909
step 8, training accuracy 0.918182
step 9, training accuracy 0.845455
step 10, training accuracy 0.881818
step 11, training accuracy 0.954545
step 12, training accuracy 0.954545
step 13, training accuracy 0.954545
step 14, training accuracy 0.972727
step 15, training accuracy 0.972727
step 16, training accuracy 0.972727
step 17, training accuracy 0.963636
step 18, training accuracy 0.963636
step 19, training accuracy 0.972727
step 20, training accuracy 0.972727
step 21, training accuracy 0.981818
step 22, training accuracy 0.990909
step 23, training accuracy 1
step 24, training accuracy 1

Kürzung

test accuracy 0.838095

Der Prozentsatz der richtigen Antworten während des Trainings wird als Trainingsgenauigkeit ausgegeben. In Schritt 0 sind es 59%, Es war 100% nach Schritt 23.

Darüber hinaus ergab die Beurteilung der Testdaten nach Abschluss des Lernens eine korrekte Antwortrate von 83%.

Das fühlt sich etwas verdächtig an. Angesichts der Quantität und Qualität der Lehrerdaten hatte ich erwartet, dass sie in so kurzer Zeit nicht sehr genau sein würden.

Mit Tensorflow können Sie den Lernprozess und den Datenfluss mithilfe einer Funktion namens Tensorboard einfach visualisieren. Überprüfen wir dies also ebenfalls. Führen Sie den folgenden Befehl aus und öffnen Sie die angezeigte URL in Ihrem Browser.

tensorboard --logdir /tmp/data
Starting TensorBoard b'29' on port 6006
(You can navigate to http://192.168.11.7:6006)

スクリーンショット 2016-12-23 23.21.10.png

Hmmm, ist es so genau? Es scheint notwendig zu sein, zu prüfen, ob es wie beabsichtigt funktioniert.

Zusammenfassung

Ich konnte Folgendes lernen, als ich es dieses Mal zum ersten Mal versuchte. ・ Umweltvorbereitung (Anaconda, Tensorflow, OpenCV) ・ Schwierigkeiten bei der Vorbereitung von Lehrerdaten ・ Verwendung von Tensorboard

Der nächste Ort, den ich ausprobieren möchte, ist wie folgt. ・ Implementierung von 0 ・ Tensorflow verstehen ・ CNN verstehen und damit experimentieren ・ Vorverarbeitung von Lehrerdaten

"Sie sind es jetzt! Wir haben den ersten Schritt zur Implementierung von Deep Learning getan!" Also werde ich weiterhin maschinelles Lernen studieren.

Referenz

http://qiita.com/icoxfog417/items/02a80b93b5f1e95f2795 http://qiita.com/icoxfog417/items/5fd55fad152231d706c2 http://qiita.com/bohemian916/items/9630661cd5292240f8c7 http://qiita.com/icoxfog417/items/65e800c3a2094457c3a0 http://qiita.com/shim0mura/items/b0ec437206ed3d19d878 http://qiita.com/icoxfog417/items/fb5c24e35a849f8e2c5d


Morgen oder am 24. Tag wird "Natural Language Processing Technology, die das Dialogsystem unterstützt" von @shiraco sein! freue mich auf!

Recommended Posts

Träumt das neuronale Netz von einer elektrischen Maus?
Bildgebung eines neuronalen Netzwerks, das MNIST erkennt
Richtlinien für das Design der Ausgangsschicht neuronaler Netze
[PyTorch Tutorial ③] NEURALE NETZWERKE