[PYTHON] Grundlagen der CNN 1-Bilderkennung

Aidemy 2020/10/2

Einführung

Hallo, es ist ja! Ich bin eine knusprige Literaturschule, aber ich war an den Möglichkeiten der KI interessiert, also ging ich zur AI-spezialisierten Schule "Aidemy", um zu studieren. Ich möchte das hier gewonnene Wissen mit Ihnen teilen und habe es in Qiita zusammengefasst. Ich freue mich sehr, dass viele Menschen den vorherigen zusammenfassenden Artikel gelesen haben. Vielen Dank! Dies ist der erste Beitrag von CNN. Freut mich, dich kennenzulernen.

Was diesmal zu lernen ・ Informationen zur Bilderkennung ・ Implementierung von CNN ・ Hyperparameter in CNN

Über die Bilderkennung

Was ist Bilderkennung?

Über CNN

-CNN ist ein neuronales Netzwerk, das Merkmale mithilfe einer Schicht namens __ "Faltungsschicht" __ extrahiert, die eine ähnliche Struktur wie das Gesichtsfeld des menschlichen Gehirns aufweist. Es hat eine besonders hohe Leistung im Bereich der Bilderkennung.

Über die Faltschicht

-Die Faltebene ist eine Ebene, die sich auf einen Teil der __Eingabedaten konzentriert und die Merkmale des Bildes in diesem Teil untersucht (= faltet). -Die zu extrahierenden Merkmale werden automatisch aus den Trainingsdaten und dem Wert der Verlustfunktion gelernt! -Jedes Merkmal (Nase, Mund usw. für ein menschliches Gesicht) wird im Programm als Gewichtsmatrix mit dem Namen __filter (Kernel) __ behandelt, und für jedes Merkmal wird ein Filter verwendet.

Über die Pooling-Schicht

-Die Pooling-Schicht ist eine Schicht, die die Ausgabedaten der __folding-Schicht reduziert (komprimiert) und die Datenmenge __ reduziert. Der Grund für die Kontraktion besteht darin, dass unter den Merkmalen von Bilddaten dieselben Merkmale häufig an derselben Stelle gruppiert werden, während Orte ohne Merkmale häufig weit verbreitet sind. Wenn Sie sie also so falten, wie sie ist __ Dies liegt daran, dass die Ausgabe verschwenderisch wird __.

Implementierung von CNN

-Implementieren Sie CNN mit Keras + TensorFlow. Die meisten von ihnen werden in der Praxis eingesetzt. -Die Erstellungsmethode entspricht der zuvor durchgeführten "überwachten Lernmethode". __ Erstellen Sie zunächst eine sequentielle Instanz, fügen Sie dann mit der Methode add Schicht für Schicht Ebenen hinzu und kompilieren Sie schließlich mit der Kompilierungsmethode __.

#Instanz erstellen
model=Sequential()
#Ebene hinzufügen (Parameter werden später beschrieben)
model.add(Dense(128))
#Zugabe einer Faltschicht
model.add(Conv2D(filters=64, kernel_size=(3, 3)))
#Zugabe der Poolschicht
model.add(MaxPooling2D(pool_size=(2,2)))
#kompilieren
model.compile(optimizer=sgd,loss="categorical_crossentropy",metrics=["accuracy"])

Klassifizierung handschriftlicher Zeichen

-Klassifizieren Sie den handgeschriebenen Zeichendatensatz MNIST mit CNN. Obwohl Details weggelassen werden, kann das im vorherigen Abschnitt beschriebene Verfahren verwendet werden.

Hyperparameter

Übersicht der CNN-Hyperparameter

・ Hyperparameter der Faltungsschicht (Conv) -__ Filter__: Anzahl der zu extrahierenden Features -__ Kernel_size__: Kernelgröße -__ Schritte__: Entfernung, um den Kernel zu bewegen ・ Padding: Die Größe des Randes, der außerhalb des Bildes erstellt wurde ・ Hyperparameter der Pooling-Schicht (Pool) -__ Poolgröße__: Geben Sie den Bereich an, der sofort gepoolt werden soll -__ Schritte__: Entfernung, um den Poolbereich zu verschieben (Pooling-Intervall) ・ Padding: Die Größe des Randes, der außerhalb des Bildes erstellt wurde

Hyperparameter der Faltungsschicht (Conv)

filters -Filter gibt die Anzahl der zu generierenden Feature-Maps an, dh __Typ der zu extrahierenden Features __. ・ Wenn die Filter zu klein sind, können Features nicht ausreichend extrahiert werden. Wenn sie zu groß sind, tritt ein Überlernen auf.

kernel_size -Kernel_size gibt die Größe des __kernel __ an.

strides -Strides gibt das Intervall zum Extrahieren von Features an, dh den Abstand __ zum Verschieben des Kernels.

padding ・ Das Auffüllen gibt die Größe des Randes an, der außerhalb des __- Bilds erstellt wurde. Der Rand wird erstellt, um eine unbeabsichtigte Bildreduzierung beim Falten zu verhindern. Darüber hinaus gibt es verschiedene Vorteile, wie z. B. die Eigenschaften der zu berücksichtigenden Enddaten, die zunehmende Häufigkeit von Datenaktualisierungen und die einstellbare Anzahl von Eingabe- / Ausgabeeinheiten jeder Schicht.

Hyperparameter der Pooling-Schicht (Pool)

pool_size -Pool_size ist der Bereich __, der gleichzeitig zusammengefasst werden kann. Die Behandlung ist die gleiche wie beim Kernel, wie bei __lens __. -Wenn pool_size groß ist, kann gesagt werden, dass dies vorzuziehen ist, da sich die Ausgabe nicht ändert, selbst wenn sich die Position des Features ein wenig ändert. __ Im Allgemeinen sollte es (2x2) __ sein.

strides -Strides ist die Entfernung __, die den __pooling-Bereich bewegt. Es verhält sich genauso wie im Faltungsschichtkern.

padding -Padding funktioniert genauso wie das der Faltschicht. Die Einstellungsmethode ist dieselbe, beziehen Sie sich also darauf.

Zusammenfassung

・ Im Bereich der Bilderkennung wird Deep Learning mit _CNN (Convolutional Neural Network) __ durchgeführt. -In CNN wird ein Teil des Bildes extrahiert, um Merkmale __ "Faltungsschicht (Conv)" __ zu finden, und die extrahierten Informationen werden reduziert und klassifiziert, um Datenverschwendung zu reduzieren und die Genauigkeit zu verbessern _ Da ist ein Pool" __. Darüber hinaus gibt es auch die "Dichte" in "Teached Learning" gelernt. -Es gibt auch Hyperparameter. Die Hyperparameter der Faltungsschicht sind filters, die die Anzahl der zu extrahierenden Features angeben, kernel_size, die die Größe des Kernels angibt (Linse zum Extrahieren von Features), strides, die die Entfernung zum Verschieben des Kernels angibt, und der außerhalb des Bildes erstellte Rand. Es gibt padding, das die Größe angibt.

Diese Zeit ist vorbei. Vielen Dank für das Lesen bis zum Ende.

Recommended Posts

Grundlagen der CNN 1-Bilderkennung
Anwendung der CNN2-Bilderkennung
Bilderkennung
Aufbau und Grundlagen der Bilderkennungsumgebung
Python: Anwendung der Bilderkennung mit CNN
Bilderkennung mit CNN Pferden und Hirschen
Bilderkennung mit Keras
Pfeffer-Tutorial (7): Bilderkennung
Deep Learning Bilderkennung 1 Theorie
CNN (1) zur Bildklassifizierung (für Anfänger)
Bilderkennung mit Keras + OpenCV
Grundlagen der Echtzeit-Bildverarbeitung mit opencv
Python x Tensoflow x Gesichtserkennung
Deep Learning Bilderkennung 2 Modellimplementierung
Spracherkennung: Genreklassifizierung Part2-Musikgenreklassifizierung CNN
Bilderkennung von Früchten mit VGG16
Grundlagen der binärisierten Bildverarbeitung durch Python
Kategorieschätzung mit der Bilderkennungs-API von docomo
Bilderkennungsmodell mit Deep Learning im Jahr 2016
Deep Learning Bilderkennung 3 nach der Modellerstellung
Ich habe mit Jupyter eine einfache Bilderkennung versucht