from keras import layers, models
model = models.Sequential()
model.add(layers.Conv2D(32,(3,3),activation="relu",input_shape=(150,150,3)))
Wenn Sie nach "keras Conv2D" suchen, finden Sie "2D-Faltungsschicht". Was ist also eine "zweidimensionale Faltungsschicht"? Es gibt auch den Begriff "eindimensionales Faltungsnetzwerk". Als Voraussetzung für das Verständnis "Was ist der Unterschied zwischen 1. Dimension und 2. Dimension?" Es ist notwendig, "Faltungs-Neuronales Netzwerk" und "Faltung" zu verstehen.
Faltungs-Neuronales Netz.
Faltung: Faltung Neuronales Netz: Neuronales Netz
CNN ist also ein "Faltungs-Neuronales Netzwerk".
https://www.atmarkit.co.jp/ait/articles/1804/23/news138.html Gemäß:
Bilddateien wie jpg haben eine feste Anzahl von Pixeln für jede Breite und Höhe. Angenommen, Sie haben ein Foto mit einer Breite von 300 Pixel und einer Höhe von 200 Pixel. Wenn ein Pixel durch ■ (Quadrat) dargestellt wird Das Foto ist eine Anordnung von 300 x 200 = 60.000. Wenn also Breite: 5 Pixel und Höhe: 5 Pixel und insgesamt 25 ■ vorhanden sind, entspricht dies der Abbildung unten.
Darüber hinaus bei Schwarzweißfotografien
Im Fall von "Zeichnen von x (x) mit schwarzen Zeichen auf weißem Hintergrund" ist dies wie in der folgenden Abbildung dargestellt.
Wenn es sich um ein Pluszeichen (+) handelt,
Und wenn es ein Minuszeichen (-) ist,
Und wenn es ein gleiches Symbol ist (=),
Ist.
X mit schwarzen Buchstaben auf weißem Hintergrund
Was passiert, wenn Sie "die Merkmale untersuchen, indem Sie sich auf kleine Unterteilungen konzentrieren" für die Bilddaten? Achten Sie beispielsweise auf den Teil, der vom roten und blauen Rahmen umgeben ist.
Dieser Bereich ist alles
Ist. Mit anderen Worten ist ersichtlich, dass "der rote Rahmenteil und der blaue Rahmenteil die gleichen Eigenschaften haben". Hier,
"Daten, die Merkmale zeigen (Merkmaldetektor)" wie z
(Wird manchmal als Filter bezeichnet. Die Bedeutung ist dieselbe.) Mit anderen Worten, wenn Sie die Eigenschaften des Originalbildes von "5 x 5" verstehen möchten. Das Originalbild sollte unterteilt und jeweils mit dem Kernel "2 x 2" verglichen werden. Dies ist die Idee, "ein Bild zu bestimmen" oder "die Merkmale eines Bildes oder seinen Unterschied zu anderen Bildern zu identifizieren".
Um Conv2D zu verstehen, ist es notwendig, "zweidimensionale Faltungsschicht" zu verstehen. Dazu müssen wir zuerst die "Faltschicht" verstehen. Was ist also "Falten"?
Grob gesagt ist es wie folgt.
Wenn Sie eine Faltung an einem 5 x 5-Originalbild mit einem 3 x 3-Kernel durchführen Verschiebung um 1 Quadrat (dies wird als "Schritt (Anzahl der zu verschiebenden Pixel) ist 1" bezeichnet). Anschließend werden insgesamt 9 Matrixberechnungen durchgeführt. Wenn die Berechnungsergebnisse ausgegeben und angeordnet werden, beträgt sie daher das 9-fache, dh "Feature-Map besteht aus 9 Quadraten".
Der rote Rahmen ist das Objekt, das mit dem Kernel verglichen werden soll, dh der "interessierende Bereich (als Fenster bezeichnet)". Die Matrixberechnung wird wiederholt, indem ein Quadrat (1 Pixel) von links oben nach rechts unten im Originalbild verschoben wird. In diesem Fall wird die Feature-Map zu 9 Quadraten (3 x 3), da die Berechnung neunmal durchgeführt wird. Es wird "Schritt ist 1" genannt, um durch Verschieben von jeweils einem Pixel zu berechnen. Wenn Sie durch Verschieben um 2 Pixel rechnen, wird gesagt, dass der Schritt 2 ist.
Versuchen wir tatsächlich die "erste Matrixoperation" in der obigen Abbildung. Das Verfahren zur Matrixberechnung ist wie folgt. Die Matrixberechnung wird für den roten Rahmenteil (Fenster) in der linken Abbildung und der rechten Abbildung (Kernel) durchgeführt.
Der hier erwähnte Kernel ist übrigens nur ein Beispiel. In der tatsächlichen Faltung "kann die vertikale und horizontale Größe des Kernels beliebig anders als 3x3 angegeben werden." Beachten Sie außerdem, dass "nicht nur ein Kerneltyp, sondern mehrere Typen zum Falten verwendet werden" (Details werden später beschrieben).
Nun, die Matrixoperation ist
Infolgedessen kann das Ausgabeergebnis erhalten werden. Der Klarheit halber werde ich einige Zahlen eingeben. Hier, Schwarz -1 1 weiß Und.
Von der oberen linken Zelle zur unteren rechten Zelle wird die Berechnung in der Reihenfolge (insgesamt 9 Mal) durchgeführt, wie unten gezeigt.
-1 x 1 = -1 (multiplizieren Sie die linke Seite der oberen Reihe)
1 x 1 =1 (multiplizieren Sie die oberen Zentren)
1 x 1 =1 (multiplizieren Sie die rechte Seite der oberen Reihe)
1 x -1 = -1 (multiplizieren Sie die linke Seite der mittleren Reihe)
-1 x -1 =1 (multiplizieren Sie die Zentren in der mittleren Reihe)
1 x -1 = -1 (multiplizieren Sie die rechte Seite der mittleren Reihe)
1 x 1 =1 (multiplizieren Sie die linke Seite der unteren Reihe)
1 x 1 =1 (multipliziere die unteren Zentren)
-1 x 1 = -1 (multiplizieren Sie die unteren rechten Seiten)
Die linke Seite ist "der Wert einer Zelle in einem Teil des Originalbildes", Die rechte Seite ist "der Wert einer Zelle im Kernel". Und "addiere alle" die Antwort,
SUM(-1, 1, 1, -1, 1, -1, 1, 1, -1)
Daher ist das Ergebnis 1. Da diese 1 in der "oberen linken Ecke der Feature-Map" angeordnet ist, Die Feature-Map ist wie folgt.
Wenn Sie die Berechnung auf diese Weise fortsetzen, werden die Werte in die verbleibenden 8 Quadrate der Feature-Map eingegeben. Eine solche Berechnung durchzuführen ist "Falten". Mit anderen Worten: "Faltung ist die Arbeit, die Matrix des Originalbilds und des Kernels zu berechnen und das Ergebnis an die Feature-Map auszugeben."
Es ist jedoch schwierig, eine solche Faltung manuell durchzuführen (Matrixberechnung). Daher wird es mit einer Funktion wie Conv2D von Keras berechnet.
Über den Beispielcode am Anfang.
from keras import layers, models
model = models.Sequential()
model.add(layers.Conv2D(32,(3,3),activation="relu",input_shape=(150,150,3)))
Conv2D () wird hier verwendet
Conv2D(32,(3,3),activation="relu",input_shape=(150,150,3))
Untersuchen Sie, was das Argument von gemeint ist. Sie übergeben vier Argumente.
Conv2D(
32,
(3,3),
activation="relu",
input_shape=(150,150,3)
)
offizielle Keras Dokumentation https://keras.io/ja/layers/convolutional/#conv2d Die Beschreibung von ist wie folgt.
keras.layers.Conv2D(
filters,
kernel_size,
strides=(1, 1),
padding='valid',
data_format=None,
dilation_rate=(1, 1),
activation=None,
use_bias=True,
kernel_initializer='glorot_uniform',
bias_initializer='zeros',
kernel_regularizer=None,
bias_regularizer=None,
activity_regularizer=None,
kernel_constraint=None,
bias_constraint=None
)
Beginnen wir mit dem ersten Argument. Die Beschreibung des offiziellen Dokuments lautet wie folgt.
filters :Eine Ganzzahl, die Dimension des Ausgaberaums (dh die Anzahl der Ausgabefilter in der Faltung).
In diesem Code übergeben wir 32. Mit anderen Worten, "die Anzahl der Ausgabefilter beträgt 32" wird angegeben. Was ist ein "Ausgangsfilter"?
"Was ist ein Kernel?" In Faltung wurde oben erwähnt. Es ist wichtig zu wissen, dass der "Kernel" hier manchmal als "Filter" bezeichnet wird. Mit anderen Worten, das erste Argument, Filter, ist ein "Filter" und ein "Kernel". Sie können sehen, dass es sich um einen Einstellungswert handelt, der sich auf den Kernel bezieht.
https://qastack.jp/stats/154798/difference-between-kernel-and-filter-in-cnn Anschließend werden die folgenden Fragen und Antworten gestellt.
Frage: Was ist der Unterschied zwischen einem "Kernel" und einem "Filter" in einem Faltungsnetzwerk?
Antwort: Es hat die gleiche Bedeutung. Der Kernel wird manchmal als Filter bezeichnet.
Daher abschließend
Wird sein.
Wenn ja, bedeutet "die Anzahl der Ausgabefilter 32" "die Anzahl der Ausgabekernel 32".
5x5 Eingabebild
Auf der anderen Seite 3x3-Filter (auch Kernel genannt)
Beim Einklappen. Wenn Sie berechnen, indem Sie jeweils ein Quadrat verschieben (siehe Abbildung unten), lautet die Antwort (Feature-Map) 9 Quadrate (3x3), da die Berechnung insgesamt 9 Mal durchgeführt wird.
(Übrigens wird eine solche Faltung, die jeweils um ein Quadrat gleitet, als "Schritt ist 1" ausgedrückt. Je höher der Schrittwert, desto weniger Berechnungen)
Wie viele Quadrate möchten Sie verschieben und berechnen? Der schlampige Wert.
Wenn der Schritt 1 ist
Wird sein.
Wenn der Schritt 2 ist
Wird sein.
Wie groß sind dann die vertikalen und horizontalen Abmessungen der Feature-Map, wenn sie unter den folgenden Bedingungen gefaltet werden?
Die Antwort ist 11 x 11. Sie können es verstehen, indem Sie ein Raster in eine Tabelle usw. schreiben und zählen, während Sie es tatsächlich von Hand verschieben. Es gibt 25 x 25 Quadrate. Dies wird als Eingabebild verwendet. Der überlappende rosa Rahmen (5x5) ist der Filter (Kernel). Da der Schritt 2 ist, berechnen wir durch Verschiebung um 2 Quadrate. In der 11. Berechnung erreichen Sie das rechte Ende. Da die Vertikale gleich ist, beträgt die Feature-Map 11 x 11.
Berücksichtigen Sie auf der Grundlage der obigen Kenntnisse die Parameter, die zum Ausführen der Faltung erforderlich sind. Insbesondere müssen die folgenden Fragen beantwortet werden.
Es mag andere Fragen geben, aber die Antwort auf diese Fragen besteht darin, "den Wert des Arguments zu bestimmen, das an die Funktion übergeben werden soll".
https://child-programmer.com/ai/keras/conv2d/ Auszug aus der Beschreibung von.
Conv2D(16, (3, 3)Kommentar
: Bedeutet die Verwendung von 16 "3x3" -Filtern (16 Arten von "3x3" -Filtern).
Es scheint, dass ungerade Zahlen, die das Zentrum bestimmen können, wie "5x5" und "7x7", einfach zu verwenden sind.
Es scheint, dass die Anzahl der Filter tendenziell "16, 32, 64, 128, 256, 512" usw. beträgt.
Es scheint eine große Anzahl von Filtern für Probleme zu versuchen, die kompliziert erscheinen, und eine kleine Anzahl von Filtern für Probleme, die einfach erscheinen.
Hier ist der auf den Filter bezogene Wert
Wann
Achten Sie darauf, es nicht zu verwechseln. Die vertikalen und horizontalen Größen sind wie bisher erläutert. Im folgenden Beispiel beträgt die vertikale und horizontale Größe des Filters "5 x 5" (der rosa Bereich ist ein Quadrat von 5 x 5 = 25 Pixel).
Was bedeutet also "die Anzahl der Filter (wie viele? Diese Anzahl)"? Es gibt mehr als einen Filtertyp zum Durchführen einer Faltung. "Ein Typ" zeigt nur "eine Funktion" an. Wenn Sie beispielsweise einen 3x3-Filter haben, lautet der Filtertyp beispielsweise.
Und so weiter. Dies ist der "Filtertyp" und die "Anzahl der Filter", dh die "Anzahl der Filter".
Zusammenfassung,
Conv2D(16, (3, 3)
"Falten mit 16 (16 Typen) Filtern mit 3x3 vertikalen und horizontalen Pixeln" Ist der Befehl.
Wenn Sie mehr über die Bedeutung von "Falten mit mehreren Filtern, z. B. 16 Typen (16 Blatt)" erfahren möchten https://products.sint.co.jp/aisia/blog/vol1-16 Siehe "Faltungsschicht" in. Das Folgende ist ein Auszug.
"Die Anzahl der Feature-Maps gibt so viele aus wie die Anzahl der Filter" bedeutet Nach dem Falten mit 16 Arten (16 Blatt) Filter, Dies bedeutet, dass 16 "Feature-Maps" ausgegeben werden.
Hier der Einfachheit halber Betrachten Sie den Fall "Falten mit drei Filtern".
In der folgenden Abbildung ist der Filter (rosa Bereich) beispielsweise 2x2. Die Feature-Map (grüner Bereich) ist 3x3.
Wenn es nur einen Filtertyp gibt (rosa Bereich) Es wird nur eine Feature-Map (grüner Bereich) ausgegeben.
Wenn Sie jedoch drei Arten von Filtern vorbereiten, Weil jeder Typ eine Matrixberechnung durchführt Da jede Feature-Map unterschiedliche Ergebnisse hat, werden drei Feature-Maps ausgegeben.
Beispielcode am Anfang
from keras import layers, models
model = models.Sequential()
model.add(layers.Conv2D(32,(3,3),activation="relu",input_shape=(150,150,3)))
Dann
Conv2D(32,(3,3)
es ist so geschrieben. Dies ist ein Befehl zum "Falten mit 32 Typen (32 Blatt) von 3x3-Filtern (Kerneln)".
Über,
Ich habe verstanden, wie man die Antwort auf entscheidet (wie man das Argument weitergibt).
Weiter
Erwägen.
https://child-programmer.com/ai/keras/conv2d/ Das Folgende ist ein Auszug aus.
input_shape=(28, 28, 1)Kommentar
: Eine Graustufe (Schwarzweißbild) mit 28 Pixel vertikal und 28 Pixel horizontal wird eingegeben.
Mit anderen Worten, im Beispielcode am Anfang
input_shape=(150,150,3)
Wenn "Die vertikalen und horizontalen Pixel des Eingabebildes sind 150 x 150" Wird sein. Was bedeutet 3?
Offizielle Dokumentation https://keras.io/ja/layers/convolutional/#conv2d Zu
Eingabe im RGB-Bild_shape=(128, 128, 3)Es wird.
ein.
1 für Schwarzweißbilder 3 für RGB
Daher wird die Anzahl der Farben berücksichtigt (3 Arten von Rot, Grün und Blau für RGB). Wenn es sich um ein normales Foto (.jpg) handelt, handelt es sich um RGB. Wenn Sie also 3 festlegen, gibt es kein Problem.
Beispielcode
model.add(layers.Conv2D(32,(3,3),activation="relu",input_shape=(150,150,3)))
Geschrieben in
activation="relu"
Was macht
https://child-programmer.com/ai/keras/conv2d/ Die Erklärung in ist unten.
activation=Erklärung von relu
: Aktivierungsfunktion "ReLU (Rectified Linear Unit)"-Rampenfunktion ".
Wird für das gefilterte Bild ausgeführt. Die Ausgabe ist 0, wenn die Eingabe 0 oder weniger ist. Wenn der Eingang größer als 0 ist, wird er so ausgegeben, wie er ist.
https://keras.io/ja/layers/convolutional/#conv2d Die Erklärung in ist unten.
activation:Name der zu verwendenden Aktivierungsfunktion (siehe Aktivierungen)
Wenn nichts angegeben ist, wird keine Aktivierung angewendet
Mit anderen Worten activation="relu" Ist eine Anweisung, "ReLU als Aktivierungsfunktion zu verwenden".
Die Aktivierungsfunktion ist die "Aktivierungsfunktion". Was ist "Aktivierung"? Im Folgenden finden Sie eine Sammlung von Kontexten zum Verständnis der Aktivierung.
Zusammenfassung, "Wenn Sie die Aktivierungsfunktion angeben, erhöht sich die Ausdruckskraft des Modells (Sie können eine intelligente KI erstellen). Geben Sie also die Aktivierungsfunktion an." Und "ReLU wird standardmäßig verwendet, nicht wahr?"
Aber das ist
strides = 1
Geben Sie an als. Detail ist https://keras.io/ja/layers/convolutional/#conv2d Sehen.
Wie oben erwähnt
model.add(layers.Conv2D(32,(3,3),activation="relu",input_shape=(150,150,3)))
Was machst du? Was bedeutet jedes Argument? Ich konnte ungefähr verstehen. Da der Zweck dieses Kapitels "Grundlegendes zu Keras Conv2D (2D Convolution Layer)" ist Einmal hier. Wir werden Sequential () und MaxPooling2D () in einem anderen Kapitel untersuchen.
Recommended Posts