Runtime AI ARM

Schnellere Convolutional Layer für Embedded CNNs

Convolutional Layer in einem neuralen Netz.

Convolutional Neural Networks sind inzwischen ein fester Bestandteil des modernen algorithmischen Werkzeugkastens im Bereich der maschinellen Bildverarbeitung. Diese Netzwerke auf Embedded-Geräten zu bringen, stellt jedoch eine Herausforderung dar. Auf Arm®-Prozessoren existiert die von Arm bereitgestellte und optimierte Bibliothek Com­mon Microcontroller Software Interface Standard (CMSIS). Sie nutzt zum Beispiel für quantisierte Netzwerke auf ARMv7-M-CPUs mit DSP-Erweiterung spezielle Instruktionen, um dieselbe Berechnung auf mehreren Daten gleichzeitig durchzuführen, sog. Single Instruction Multiple Data (SIMD).

Die Flaschenhälse in einem Convolutional Neural Network sind am häufigsten die Convolutional Layer selbst. Dies war auch der Fall bei einem unserer Kunden. Wir optimierten den Convolutional Layer von CMSIS für den exakten Anwendungsfall unseres Kundens und führten weitere Mi­kro­ar­chi­tek­tur-Op­ti­mier­ung­en für den verwendeten Cor­tex®-M4-Pro­zess­or durch. Dadurch war es uns möglich die Convolutional Layer in der Kundenanwendung um den Faktor 3 zu beschleunigen.

Ein paar schnelle Fakten

Hardware:

  • CPU: Arm Cortex-M4

Betriebssystem:

  • Keines (Bare Bone)

Compiler:

  • GNU Compiler Collection

Zusammenfassung der von uns erzielten Ergebnisse:

  • Beschleunigung von Convolutional Layers in CMSIS 5 um den Faktor 3.
Alle genannten Produkte oder Dienstleistungsnamen und Handelsmarken sind das Eigentum ihrer respektiven Eigentümer.