Anwendung von Swin-Transformer in der Bilderkennung

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:

Supongo que te gusta

Origin blog.csdn.net/qq_44886601/article/details/134997784
Recomendado
Clasificación