Runtime ARM Neon Vectorization

Merkmalerkennung für klassische Computer Vision

Mögliche Pixel-Nachbarschaft für einen Feature-Detektions-Algorithmus.

Autonome Roboter müssen Objekte erkennen können um ihre Umgebung zu verstehen und sich selbst auf Karten finden zu können. Deswegen ist der Kern jeder Vision Pipeline Software, die solche Objekte von Interesse, genannt Features oder Merkmale, erkennen und verfolgen kann. Klassische Com­puter-Vi­si­on-Al­go­rith­men definieren den Ort solcher Objekte basierend auf der Farbe und Helligkeit von Pixeln. Typischerweise hängt eine solche Merkmalerkennung nicht nur von den exakten Pixelwerten an deren Ort ab, sondern auch von den Nachbarpixeln und anderen sorgfältig ausgearbeiteten Bedingungen.

Um eine moderne CPU voll auszulasten ist die korrekte Benutzung der Vektoreinheiten von äußerster Bedeutung. Wir konnten eine siebenfache Beschleunigung mit einer handgearbeiteten Vektorisierung eines Kundenalgorithums erreichen.

Ein paar schnelle Fakten

Hardware:

  • SoC: Qualcomm® QCS610
  • CPU: Arm® Cortex®-A76 + Arm Cortex-A55

Betriebssystem:

  • Linux

Compiler:

  • GNU Compiler Collection (GCC)

Zusammenfassung der von uns erzielten Ergebnisse:

  • Beschleunigung eines grundlegenden Merkmalerkennungsalgorithmus um den Faktor 7 auf Cortex-A76 und um den Faktor 5 auf Cortex-A55.
Alle genannten Produkte oder Dienstleistungsnamen und Handelsmarken sind das Eigentum ihrer respektiven Eigentümer.