Faltungsneurales Netzwerk und seine Integration in iOS (Teil 2)



Im vorherigen Teil haben wir die Daten vorbereitet und auch die Implementierungswerkzeuge und die Architektur des neuronalen Netzwerks ( Link ) untersucht. Beginnen wir die nächste Entwicklungsstufe mit der Datenvorverarbeitung.

Upgrades

Keras bietet eine breite Palette von Tools für die Datenvorverarbeitung, insbesondere für Bilder. Mit der ImageDataGenerator-Methode (Abb. 7) können Sie den Datensatz mit künstlichen Transformationen erweitern.


Abb. 7. - Datengenerator.

Die erste Zahl rotationsbereich ist eine Zufallszahl für rotierende Bilder im Generator. Width_shift_range - Zeigt an, um wie viel Sie die Pixelwerte in der Breite reduzieren können. Height_shift_range - Der Koeffizient, mit dem jedes Pixel multipliziert wird, um die Höhe zu komprimieren. Shear_range - Schergeschwindigkeit, Verschiebungswinkel gegen den Uhrzeigersinn in Grad. Zoom_range - Bereich für die zufällige Skalierung. Horizontal_flip - Zufällige Bildanzeige horizontal. Vertical_flip - zufällige vertikale Bildanzeige. Fill_mode - Punkte außerhalb der Eingabedaten werden gemäß dem angegebenen Modus gefüllt. Datenformat - Bilddatenformat. Somit hat das neuronale Netzwerk eine bessere Verallgemeinerung, da der ursprüngliche Datensatz im Grunde genommen saubere Pixel aufweist und die Zahlen in der Mitte liegen.In realen Fotos sind andere Situationen möglich, wenn sich die Geste in einer Ecke befindet oder verschwommen ist. Der Lernprozess wird mit neuen Daten neu geschrieben.

In Abb. 8 begann das Testdiagramm abzunehmen, sodass das Training abgebrochen wurde. Wenn die val_acc-Metrik nicht zum Stoppen verwendet würde, würde der Algorithmus weiter funktionieren, was zu einem umgeschulten neuronalen Netzwerk führen würde.

Im Vergleich zu früheren Ergebnissen nahm der Wert der Verlustfunktion ab und daher nahm der Grad des Vertrauens des Algorithmus in Vorhersagen zu. Die Genauigkeit stieg um etwas mehr als 2% (Abb. 8, Abb. 9).


Abb. 8 - Trainingsplan für neue Daten.


Abb. 9. - Modellmetriken.

Konvertierung

Für die Integration in eine iOS-Anwendung benötigen Sie ein neuronales Netzwerk eines bestimmten Formats. Auf diese Weise können Sie das CoreML-Framework erstellen. Sie können trainierte Modelle für maschinelles Lernen in einem Format ausführen. mlmodel in Anwendungen. Für die Arbeit mit Bildern arbeitet das Vision-Framework auf der Basis von Core ML und hilft bei der Verfolgung und Erkennung von Gesichtern, Text, Objekten und Barcodes. Horizontbestimmung und Matrixerfassung zur Bildausrichtung sind ebenfalls verfügbar.

So konvertieren Sie ein Modell von .h5 nach. mlmodel wird von der Bibliothek in Python Coremltools verwendet. Diese Bibliothek unterstützt die Konvertierung in das mlmodel-Format.

Für die korrekte Schlussfolgerung des Modells wird ein Wörterbuch angegeben, das 10 Ziffern entspricht. In der nächsten Zeile wird angegeben, dass Model_check.h5 der Name des Modells ist. Es wird außerdem angegeben, dass Bilder auf der Eingabeschicht des neuronalen Netzwerks empfangen werden. Das Feld image_scale führt zur Standardisierung der Pixelmatrix. (Abb. 10) Abb. 10


. - Umstellung.

App. Arbeiten Sie mit einem vorbereiteten Modell.

Ein Beispiel von der offiziellen Website der Apple-Entwickler wird als Grundlage für das Projekt verwendet. Die neueste Xcode-Entwicklungsumgebung, die Programmiersprache, ist die fünfte Swift-Version.

Dateien (Abb. 11), die den Code im Projekt enthalten, werden berücksichtigt. AppDelegate.swift öffnet das Startfenster der Anwendung und initialisiert alle mit dem Projekt verbundenen Dateien.


Abb. 11. - Die Struktur der Anwendung.

Nach der Konvertierung von sign_lang.mlmodel wird dem Projekt ein vorbereitetes Modell hinzugefügt (Abb. 12).


Abb. 12. - Modell in Xcode.

Die Zeile Typ zeigt an, dass das dem Projekt hinzugefügte Modell für maschinelles Lernen tatsächlich ein klassifizierendes neuronales Netzwerk ist. Um das Modell vorherzusagen, werden Schwarzweißbilder mit grauen Elementen der Größe 64x64 eingegeben und vom Programm mit Vision in dieses Format konvertiert. Die Ausgabe ist ein Wörterbuch, in dem die Paare die Zeile mit der Bezeichnung sind, die während der Konvertierung angegeben wurde, und das Vertrauen (die Wahrscheinlichkeit), mit dem das Neuronale es vorhersagt.

Die Hauptanwendungsdateien.

Die Hauptdatei wird berücksichtigt - Image Classification View Controller.swift

ImageView - ein Fenster zum Anzeigen des aktuellen Bilds auf dem Telefonbildschirm, das an die Modelleingabe gesendet wird.

CameraButton - Wenn Sie auf eine Schaltfläche klicken, wird ein Kontextmenü aufgerufen, in dem der Benutzer die folgenden Aktionen ausführen kann: Foto aufnehmen, Foto auswählen. Die erste Aktion öffnet die Kamera des Smartphones, in der der Fotomodus verfügbar ist. (Abb. 13)

Wenn Sie eine alternative Aktion auswählen, wählen Sie Foto. Eine interne Galerie wird geöffnet. Durch Drücken der Schaltfläche Foto verwenden kehrt der Benutzer zum Hauptbildschirm zurück, auf dem das neuronale Netzwerk die Bilder analysiert und ihre Vorhersage gibt, wie in Abb. 1 dargestellt. 14.

Nach dem Wort Klassifizierung sehen wir die Schlussfolgerung der beiden wahrscheinlichsten Ergebnisse, die das Modell vorhergesagt hat. Die Zahl in Klammern ist das Vertrauen des neuronalen Netzwerks, dass seine Vorhersage korrekt ist. Aus Fig. 14 ist ersichtlich, dass der Algorithmus mit einer Zuverlässigkeit von 0,99 besagt, dass die Zahl 0 gezeigt ist. Und dies stimmt mit der Realität überein. Kein Algorithmus für maschinelles Lernen kann eine 100% ige Genauigkeit für reale Daten liefern, und das aufgebaute neuronale Netzwerk ist keine Ausnahme, und falsche Vorhersagen sind möglich, wie in Abb. 1 zu sehen ist. 15.


Abb. 13. - Arbeiten Sie mit der Kamera.


Abb. 14. - Vorhersage des neuronalen Netzes.


Abb. 15. - Falsche Vorhersage.

Als Ergebnis haben wir die Architektur eines Faltungsnetzwerks zum Erkennen von Ziffern der Gebärdensprache entworfen. Es wurde ein neuronales Netzwerktraining durchgeführt, und als Ergebnis der Erweiterung der Trainingsdaten und der Auswahl von Hyperparametern wurde eine Genauigkeit von 81% für einen Testdatensatz erhalten. Der Algorithmus wurde erfolgreich für die Portierung auf ein Smartphone konvertiert. Es wurde eine mobile Anwendung entwickelt, in die ein neuronales Netzwerk integriert war.

Code Link

All Articles