Elektroniknet Logo

Mit Pruning zum Erfolg

KI-Modelle auf SoCs implementieren


Fortsetzung des Artikels von Teil 1

Versuchsergebnisse

Modell-Training

Als ein funktionierendes Beispiel wurde ein gänzlich individuelles »MobileNetV2« SSD gewählt. Es enthält das Solectrix-Firmenlogo und erkennt es – unabhängig von Ausrichtung, Größe und Hintergrund. Zur Illustration ist ein Beispiel in Bild 3 zu sehen. Vorgesehen waren zwölf MobileNetV2-Blocks mit einer maximalen Tiefe von 512 Filtern pro Schicht. Weiterhin enthält das Inferenzmodell die kompletten Feature-Extractor-Backbone und Convolution-Schichten, die von den SSD-Detektoren verwendet werden. Später sind die SSD-Box-Ergebnisse in der eingebetteten Arm-CPU zu dekodieren.
Der verwendete Datensatz besteht aus 503 Bildern. Über die Bilder hinweg variierte die Anzahl von erkennbaren Logos von eins bis 40. Für das Bewerten wurde der Datensatz aufgeteilt in Trainings- (etwa 95 %) und Validierungsdaten (etwa 5 %). Für eine echte, projektgetriebene Applikation ist die Anzahl an Bildern jedoch viel zu klein. Allerdings ist der Datensatz ausreichend dafür geeignet, als illustratives Workflow-Beispiel zu dienen.

Relevante Anbieter

Solectrix Logo
Bild 3. Beispielbild des Solectrix-Logos.
© Solectrix

Zu Beginn besteht das entworfene Modell aus 880.124 Parametern. Zum Vermehren der Daten wurden die folgenden Operationen eingesetzt:

  • Photometrische Verzerrung
  • zufällige Beschneidung
  • zufällige Spiegelung
  • zufälliges Erweitern der Bildfläche

Über 120 Epochen wurde das Modell trainiert, mit 1.000 Iterationen pro Epoche. Während des Trainings wurde die Lernrate innerhalb des Bereichs von 0,001 bis 0,03 justiert. Sowohl der Trainings- als auch der Validierungsverlust kamen der Konvergenz nahe und die durchschnittliche Präzision endete bei 0,9 für den Trainings- und 0,98 für den Validierungs-Datensatz.

Modell-Pruning

Nachdem das Modell trainiert wurde, ist es technisch für das Deployment bereit. Um die Auswirkungen der Parameterreduktion im Vergleich zur Erkennungs-Performance aufzuzeigen, wurde der optionale Pruning-Schritt durchgeführt. Als Pruning-Methode wurde das zuvor erwähnte APoZ-Kriterium gewählt.

Grundsätzlich ist die Strategie die, den APoZ-Schwellwert anzupassen, um die meisten inaktiven Filter an Convolution-Schichten zu entfernen. Da ein Aktivitätsprofil des gesamten Netzes über den kompletten Trainingsdatensatz zu erarbeiten ist, ist es vorteilhaft, das Pruning von kleinen Gruppen an »Conv2D«-Schichten in winzigen Delta-Zyklen durchzuführen. Nach jedem Zyklus ist ein Feintuningschritt nötig, der es dem Modell ermöglicht, entfernte Filter mit Anpassen verbleibender Filter zu kompensieren. Normalerweise dauert das lediglich wenige Trainingsiterationen, da die Auswirkungen auf das Modell nach jedem Zyklus relativ gering sind. Nach jeder Iteration wird das Modell über den Wert der durchschnittlichen Präzision validiert. Das ermöglicht das Überwachen des Pruning-Prozesses und zu entscheiden, welche Pruning-Stufe fürs Deployment zu wählen ist.

Pruning-Ergebnisse
Bild 4. Pruning-Ergebnisse als durchschnittliche Präzision durch verbleibende Anzahl an Parametern.
© Solectrix

Im beschriebenen Beispiel wurde der APoZ-Schwellwert von 0,9 bis zu 0,25 in mehreren Iterationen variiert. Relevante Conv2D-Schichten wurden identifiziert und in neun Schichtengruppen aufgeteilt. Weiterhin beschränkte das Pruning-Tool die Anzahl verbleibender Filter auf Vielfache von vier in Hinblick auf die Inferenz-Zielarchitektur. Hiermit soll eine hohe Nutzung von Parallel-DPU-Multiplier-Ressourcen erreicht werden. Jedoch ist das lediglich ein Aspekt des Einbeziehens der Zielplattform in die Optimierungsstrategie.

Bild 4 zeigt die Reduktion von Parametern über den Pruning-Prozess hinweg im Vergleich zur durchschnittlichen Präzision des Modells. Weil der Validierungsdatensatz im gezeigten Fall sehr klein ist, bildet er die Gesamt-Performance der gewünschten Anwendung nicht optimal ab. Aus dem Grund setzten die Entwickler den Trainingsdatensatz ein, um die Modellgenauigkeit im Vergleich zu messen – der Fortschritt zeigt ein plausibles Verhalten. Je mehr Convolution-Filter entfernt wurden, desto kleiner wurde das Modell. Jeder Punkt im Graphen entspricht einem gespeicherten Modell nach dem Pruning.

Für das endgültige Deployment wurde im Beispiel ein Modell ausgewählt, das auf eine Anzahl von 404.052 Parametern geschrumpft wurde – das entspricht etwa 45,9 % des Originalmodells – während die durchschnittliche Präzision nahe bei der ursprünglichen blieb (Trainingsdatensatz: 0,898, Validierungsdatensatz: 0,883). Noch weiter zu gehen, würde zu einem massiven, inakzeptablen Abfall der Genauigkeit führen. Insgesamt dauert der iterative Pruning-Prozess lediglich etwa so lange wie das Modelltraining selbst. Er ist daher ein essenzielles Tool zum Optimieren des Modells.

APoZ-Verteilung
Bild 5. APoZ-Verteilung auf ausgewählten Conv2D-Schichten vor (hell) und nach Pruning (dunkel).
© Solectrix

Pruning führt zum Erfolg

Bild 5 zeigt die Verteilung der APoZ-Werte (Aktivitätsprofil) ausgewählter Conv2D-Schichten des trainierten Modells vor und nach dem Pruning. Auf der Y-Achse ist der APoZ-Wert dargestellt, die Anzahl an Filtern auf der X-Achse. Wie in der Legende zum Bild beschrieben, sind unterschiedliche Conv2D-Schichten in unterschiedlichen Farben dargestellt. Wie bereits erwähnt, war die Anzahl an Filtern pro Schicht auf 512 beschränkt, was dem Maximalwert auf der X-Achse entspricht. In absteigender Reihenfolge wurden die Werte pro Schicht sortiert. Während ein APoZ-Wert von null einer 100-Prozent-Aktivierung entspricht, zeigen Werte nahe eins an, dass Filter selten aktiviert werden und somit nicht relevant für die finale Ausgabe des Modells sind.

Vergleicht man beide Modelle, sind zwei Effekte zu beobachten. Erstens: Mit Pruning reduziert sich zu einem gewissen Grad die Anzahl an Filtern, was der eigentliche Zweck des Prunings ist. Nach dem Pruning liegt die maximale Anzahl an Filtern pro Schicht bei 224, gegenüber den zuvor gewählten 512 Filtern für einige Schichten. Zweitens: Die höchsten APoZ-Werte werden ebenfalls gesenkt, was zeigt, dass der generelle Grad an Gesamtaktivität zugenommen hat.

Inferenz-Beispiel
Bild 6. Inferenz-Beispiel des Netzes nach Training (links) und Pruning (rechts).
© Solectrix

Ein zweiter Vergleich zwischen dem Netz nach Training und Pruning – als Inferenzbeispiel auf dem ZCU102 Evaluation Board – ist in Bild 6 zu sehen. Wie zu sehen ist, können beide Netze überzeugend die vier Solectrix-Firmenlogos in verschiedenen Größen und Winkeln innerhalb des Testbildes erkennen. Alle Erkennungen sind durch ihre entsprechenden Rahmen markiert. Zudem wird die Netz-Confidence (Zuversicht) angegeben. Wie zu sehen, haben sich die Confidence und die Position der Erkennungskästen zu einem gewissen Grad verändert. Allerdings erkennt der Algorithmus – trotz der gewaltigen Reduktion der Modellgröße – weiterhin alle vier Solectrix-Logos.


  1. KI-Modelle auf SoCs implementieren
  2. Versuchsergebnisse
  3. Performance der DPU

Das könnte Sie auch interessieren

Verwandte Artikel

Solectrix GmbH