1. Kurze Einführung in das Faltungs-Neuronale Netzwerk
Bilderkennungsaufgaben verwenden hauptsächlich neuronale Netze, um Merkmale aus Bildern zu extrahieren und schließlich Merkmale und Klassifizierungsnummern über vollständig verbundene Ebenen abzubilden. Herkömmliche Netzwerke verwenden lineare Netzwerke zur Klassifizierung von Bildern. Bildinformationen sind jedoch zweidimensional. Im Allgemeinen beziehen sich Bildpixel auf umgebende Nachbarschaftspixel. Das lineare Klassifizierungsnetzwerk flacht das Bild zwangsweise in eine Dimension ab, wodurch nicht nur die räumlichen Informationen des Bildes ignoriert werden, sondern die vollständig verbundene Schicht auch die Parameter des Netzwerks erheblich erhöht.
Um die räumlichen Informationen von Bildpixeln besser zu erfassen, wird ein CNN-Faltungs-Neuronales Netzwerk vorgeschlagen, das einen Faltungskern (Filter) verwendet, um eine fensterartige Verarbeitung des Bildes durchzuführen, sodass die räumlichen Informationen des Bildes besser erfasst werden können .
Der allgemeine Verarbeitungsablauf des CNN-Faltungs-Neuronalen Netzwerks verringert die Breite und Höhe des Bildes und erhöht die Kanalinformationen des Bildes. Dies liegt daran, dass wir uns tendenziell mehr um die semantischen Informationen des Bildes kümmern. Daher reduzieren normale neuronale Netze die Bildgröße um die Hälfte und verdoppeln den Kanal. Jeder Kanal extrahiert eine Semantik. Die Größe wird durch Operationen wie das maximale Pooling um die Hälfte reduziert Die Schicht kann die Anti-Interferenz-Fähigkeit des Netzwerks erhöhen. Im klassischen VGG-Netzwerk wird beispielsweise die Feature-Map-Größe jeder Schicht halbiert und der Kanal verdoppelt.
2. Einführung in Transformer
Der Transformator wurde in der NLP-Aufgabe (Natural Language Processing) vorgeschlagen. Das vorherige sequentielle Netzwerk (RNN) kann nicht parallelisiert werden. Um N + 1 Daten zu berechnen, müssen N Daten berechnet werden. Daher entstand Transformer.
Wenn bei der Bildverarbeitung das Bild in Patches unterteilt wird, kann der Transformer das Bild wie natürliche Sprache verarbeiten.
Transformer im Vergleich zu CNN:
- Ein zentrales Thema im CNN-Netzwerk ist die Einstellung der Faltungskerngröße. Eine große Kernelgröße kann ein besseres Empfangsfeld haben und mehr globale Informationen des Bildes erfassen. Wenn die Größe jedoch zu groß ist, erhöhen sich die Parameter des Netzwerks. Als später das VGG-Netzwerk vorgeschlagen wurde, konnten kontinuierliche 3*3-Faltungen größere Faltungskerne ersetzen, sodass nachfolgende Netzwerke alle 3*3-Faltungskerne verwendeten.
Referenzen:Pytorch baut VGG-Netzwerk auf
- Transformer basiert auf globaler Verarbeitung und kann die globalen Informationen des Bildes erfassen. Daher verfügt Transformer theoretisch über bessere Funktionen zur Merkmalsextraktion als CNN.
Die Selbstaufmerksamkeit des Transformators und die Mehrkopf-Selbstaufmerksamkeit
Selbstaufmerksamkeitsteil:
Hier wird die Ähnlichkeit zwischen Q und K berechnet, der erhaltene Wert dem Gewicht ähnlich und dann mit V multipliziert
Ähnlichkeit zwischen Q und K, α abgeleitet vom Skalarprodukt
Hier ist die Übereinstimmung zwischen Q und jedem K. Die Berechnungsformel lautet beispielsweise wie folgt: q1 und k1 = 1*1+2*1 / Quadratwurzel 2 = 3/1,414= 2,12. Ähnlichkeit zwischen q1 und k2, 1*0+2*1/Wurzel 2 = 2/1,414 = 1,41
Die Berechnung von q2 ist die gleiche wie bei k1 und k2. Hier wird die Matrixberechnung verwendet, sodass der Transformer parallele Berechnungen durchführen kann.
Berechnen Sie die Gewichte und V-Werte
Mehrkopf-Selbstaufmerksamkeit: (MSA)
Teilen Sie Daten in verschiedene Köpfe auf
2.1 Vision-Transformator
Teilen Sie das Bild in verschiedene Patches auf und geben Sie diese in das Transformer-Netzwerk ein
Struktur des Transformator-Encoders:
Ähnlichkeit verschiedener Patches
Vision Transformer-Klassifizierungsprojekt:Vision Transformer-Netzwerkklassifizierung von Blumendatensätzen
2.2 Swin-Transformator
Der Unterschied zwischen Swin Transformer und Vision Transformer:
- swin Transformer hat eine hierarchische Struktur, 4-, 8- und 16-faches Downsampling
- Swin Transformer-Fensteraufteilung
Swin Transformer-Netzwerk-Framework:
Bezüglich des Patch-Merging-Teils: Halbierung der Bildgröße und Verdoppelung der Kanäle
W-MSA-Modul:
verschobenes Fenster:
3. Verwendung von Swin-Transformatoren
Code-Download:Swin-Transformer-Transferlernen zur Klassifizierung von Blumen im Datensatz
Wenn Sie den Datensatz ändern müssen, löschen Sie die Daten und platzieren Sie dann Ihren eigenen Datensatz unter Daten.
Die Hyperparameter des Trainingsprozesses müssen nicht geändert werden. Die Anzahl der Kategorien wird vom Code generiert und muss nicht selbst geändert werden!
parser = argparse.ArgumentParser()
parser.add_argument('--epochs', type=int, default=100)
parser.add_argument('--batch-size', type=int, default=32)
parser.add_argument('--lr', type=float, default=0.0001)
parser.add_argument('--lrf', type=float, default=0.1)
parser.add_argument('--freeze-layers', type=bool, default=True) # 是否冻结权重
Trainingsergebnisse: Die Genauigkeit des Testsatzes liegt bei nahezu 98 %, was großartig ist
Verwirrungsmatrix des Testsatzes:
Die Testergebnisse sind: