Heliotis entwickelt und vertreibt 3D Messsysteme welche auf der Weisslichtinterferometrie basieren. Dank
der hohen Präzision und geringen Messzeit werden die Messsysteme in Produktionslinien zur Qualitätskontrolle
eingesetzt. In heutigen Bildverarbeitungssystemen werden die Oberflächendaten zu einem Bildverarbeitungsrechner
übertragen, welcher diese auswertet und Ergebnisse zur Maschinensteuerung übermittelt.
In dieser Arbeit wird das bestehende Messsystem zur smarten Kamera erweitert. Ein Framework zur Integration
anwendungsspezifischer Inspektionsaufgaben wird evaluiert. Hierfür wird ein Skript basierter Ansatz
gewählt und mit der Bildverarbeitungsbibliothek HALCON realisiert. Zur Kommunikation mit der
Maschinensteuerung werden zwei Schnittstellen implementiert. Für den einfachen Informationsaustausch
stehen digitale Ein- und Ausgänge zur Verfügung und numerische Resultate können über eine EtherCAT
Schnittstelle übermittelt werden. Abschliessend wird die Funktionalität mit einem Demonstrator belegt und
die Leistungsfähigkeit des smart Kamera Ansatzes mit derjenige Computer basierter Lösungen verglichen.
Heliotis develops and commercializes 3D measurement systems based on white light interferometry. Due to
the high accuracy and the short cycle time these measurement systems are used in production lines for quality
control. In existing machine vision systems the topology information is transferred to and evaluated on a
vision computer which communicates the inspection outcome to a higher level control unit. This thesis
expands the measurement system to a smart camera. A framework for integration of inspection tasks is
evaluated. A script based solution is selected and realized using the HALCON image processing library. Two
interfaces for communication with a higher level control unit are implemented. For simple signalling digital
IOs are used whereas numerical results are transmitted over EtherCAT. A demonstrator was built and the
smart camera’s performance is benchmarked vs. a conventional computer based solution.
BinArray ist ein kundenspezifischer Hardware-Beschleuniger für neuronale Netze (CNN), der von [3]
vorgestellt wurde. Dank BinArray ist es möglich, dass CNNs auf stromsparenden Embedded-Geräten, durch
Reduzieren der Anzahl erforderlichen Multiplikationen mittels binärer Gewichtung betrieben werden können.
Drei Design-Parameter des BinArray erlauben es dem Benutzer, zwischen hoher Genauigkeit oder hohem
Durchsatz zu wählen. Der Design-Parameter, der die Anzahl der parallel zu verarbeitenden Eingangsteilbildern
definiert, wird in dieser Arbeit eingeführt. Es werden Methoden für das Teilen des Eingangsbild
vorgestellt, verglichen und der jeweilige Speicherverbrauch berechnet. Basierend auf den Ergebnissen wird
das BinArray mit zwei systolischen Arrays (SA) implementiert, die auf verschiedenen Teilbildern arbeiten.
Resultate zeigen, der Durchsatz kann auf Kosten höherer Ressourcennutzung erhöht werden. Die besten
Ergebnisse werden erzielt, wenn die Anzahl an Ausgangspixel durch die Anzahl an SAs teilbar ist.
BinArray is a custom hardware accelerator for convolutional neuronal networks (CNN) with binary
approximated weights which is presented by [3]. Thanks to BinArray CNNs operate on low-power embedded
devices by drastically reducing the number of multiplications required. Three design parameters of BinArray
allow the user to select between high accuracy or throughput. The third design parameter which defines the
number of input feature tiles that can be processed in parallel is introduced in this thesis.
Methods for the input feature tiling are presented, compared and the required memory sizes are calculated.
Based on the results BinArray was implemented with two systolic arrays (SA) working on two different tiles
of the input feature. Experimental results show, throughput can be increased at cost of resources utilization.
Tiling of the input feature is most effective for a number of output feature pixels that is divisible by the
number of SAs.
Frühere Projekte haben gezeigt, dass Liquid Time-Constant Networks (LTC) sehr gute Performance
bei verschiedenen Aufgaben des maschinellen Lernens (ML) erzielen können. Zudem kann die
Modellarchitektur kompakter gehalten werden als bei anderen Modelltypen. Es hat sich jedoch als
schwierig erwiesen, die Echtzeitanforderungen zu erfüllen, wenn die Software auf einem
eingebetteten Softprozessor mit geringem Energieverbrauch implementiert ist.
Das Ziel dieses Projekts ist es, einen eng-gekoppelten Coprozessor zu entwickeln und zu
implementieren, um die Verarbeitung von LTC zu beschleunigen. Der Coprozessor wird als
Erweiterung einer RISC-V CPU implementiert. Der in Chisel implementierte Rocket-Chip-Generator
wird als Basis für dieses Projekt verwendet.
In einem ersten Schritt wird eine optimierte Software-Implementierung entwickelt und analysiert.
Dies zeigt, welche Berechnungen am meisten zur Gesamtverarbeitungszeit beitragen. Basierend auf
diesen Erkenntnissen werden dann die Hardware-Komponenten entworfen. Der implementierte
Coprozessor ist vollständig konfigurierbar. Dies ermöglicht verschiedene Modellgrößen und einen
variablen Grad an Paralellisierung. Das Design kann mit den Rocket-Chip Komponenten für ein MPF-
300 Field Programmable Gate Array (FPGA) mit einer Clockfrequenz von 100 MHz synthetisiert
werden.
Mit dem fertigen Coprozessor wird die Verbesserung der Verarbeitungszeit evaluiert. Dabei zeigt sich,
dass bei den beschleunigten Berechnungen bis zu 1000 mal schneller gerechnet werden können. Die
erreichbare Gesamtbeschleunigung hängt von der jeweiligen Modellarchitektur ab. Es kann jedoch
gezeigt werden, dass ein bestimmtes Modell aus einem früheren Projekt nun die
Echtzeitanforderungen erfüllen kann. Schlussendlich könnte die Beschleunigung eines größeren Teils
der Berechnungen eine deutlich höhere Gesamtbeschleunigung für einige Modelle bringen. Dafür ist
schlussendlich eine kleine Erweiterung der aktuellen Implementierung hier vorgeschlagen.
Previous projects have shown that Liquid Time-Constant Networks (LTC) can achieve very good
performance on various machine learning (ML) tasks. Additionally, the model architecture can be
kept more compact than those of other model types. Still, it has proven to be difficult to fulfill realtime
requirements if the software is implemented on a low-power embedded soft processor.
The aim of this project is to design and implement a tightly-coupled coprocessor to accelerate the
processing of LTC. The coprocessor is implemented as an extension of a RISC-V CPU. The Rocket-
Chip generator, implemented in Chisel, is used as a basis for this project.
In a first step, an optimized software implementation is developed and analyzed. This shows what
computations contribute most to the overall processing time. The hardware componentes are then
designed based on those insights. The implemented coprocessor is fully configurable to allow
different model sizes and a variable degree of paralellization. The design can be synthesized with the
Rocket-Chip components for a MPF-300 Field Programmable Gate Array (FPGA) with a clock
frequency of 100 MHz.
Finally, the improvement of the runtime is evaluated. This shows that a massive speedup of up to
1000x can be achieved for the accelerated computations. The achievable overall speedup depends on
the particular model architecture. But it can be shown that a specific model from a previous project
can now fulfill the real-time requirements. Finally, accelerating a larger portion of the computations
could again bring further runtime improvements and a significantly larger overall speedup for some
models. Thus, a small extension to the current implementation is proposed here.
Convolutional Neural Networks (CNN) werden häufig für die Bildverarbeitung, speziell für die Detektion
von Objekten, eingesetzt. Ein an der HSLU entwickelter Low-Cost CNN Accelerator soll dabei helfen, diese
auf eingebettete Systeme mit wenig Rechenleistung zu bringen. Die Zielhardware besteht aus einer
Kombination aus Processing System (PS) und Programmierbarer Logik (PL).
Ein einfacher CNN Single-Shot-Detektor (SSD-7) wurde ausgewählt, trainiert und getestet. Er erreichte einen
mAP-Wert («Mean Average Precision») von 0.308. Nach der Umwandlung in eine binär approximierte Form
erreichte der Algorithmus nahezu gleich gute Resultate (0.303). Ein Abschätzung der
Ausführungsgeschwindigkeit dieses Netzwerks auf einer Mid-Range sowie einer Low-End Hardware ergab
Verarbeitungsraten von 99.23 beziehungsweise 6.54 Bilder pro Sekunde. Dies ist ausreichend für viele
Echtzeit-Anwendungen.
Convolutional Neural Networks (CNN) are widely used for image processing and especially object detection.
A Low-Cost CNN Accelerator developed at HSLU aims to bring these algorithms onto embedded systems
with limited computational power. The target hardware consists of a combination of processing system (PS)
and programmable logic (PL).
A lightweight CNN single-shot detector (SSD-7) was selected, trained and tested, achieving a mean average
precision (mAP) of 0.308. This network was converted to a binary approximated form and tested again,
achieving almost the same performance as the original (0.303). For this network, the maximum inference
speed for a mid-range as well as a low-end hardware was estimated. With inference speeds of 99.23,
respectively 6.54 inferences per second, this approach could be useful for many embedded systems which
require a low-cost, low-power object detector with real-time capabilities.
Die vorliegende Arbeit befasst sich mit dem Parallelisierungskonzept des ressourceneffizienten
Hardwarebeschleunigers BinArray. BinArray ist für die Berechnung der Convolutional Layer
zuständig und basiert auf der binären Approximation der Gewichte. Aktuell ist BinArray mit
dem Parallelisierungkonzept Output-Channel-Parallelisation (OCP) realisiert. Dieses Konzept
reicht jedoch nicht aus, um die erforderliche Framerate f¨ur alle Szenarien zu erreichen.
Das existierende Konzept soll deshalb um die Input-Channel-Parallelisierung (ICP) erweitert
werden. In einem ersten Schritt soll die Architektur der zuständigen Berechnungseinheit angepasst
und verifiziert werden. Anschliessend können die Interfaces der Buffer angepasst werden,
welche die Daten für die Berechnungen liefern. Da durch das neue Parallelisierungskonzept die
Daten in den Buffern anders angeordnet sind, muss die Berechnung der Adressen der Lese- und
Schreibzugriffe geändert werden.
Das Design f¨ur ICP ist f¨ur die Beschleunigungs- resp. Parallelisierungsfaktoren 1,2,4 und 8 synthetisierbar.
Zusätzlich konnte für die Faktoren 1 und 4 anhand eines Beispiel-Netzwerks die
korrekte Funktion verifiziert werden. Die Taktrate kann mit dem neuen Design auf demselben
Niveau gehalten werden wie für OCP. Damit kann die erwartete Beschleunigung entsprechend
dem ICP Faktor erzielt werden.
This paper deals with the parallelisation concept of the resource-efficient hardware accelerator
BinArray. BinArray is responsible for the calculation of the convolutional layer and is based on
the binary approximation of the weights. Currently, BinArray is realised with the parallelisation
concept Output Channel Parallelisation (OCP). However, this concept is not sufficient to achieve
the required rate for all scenarios.
Therefore, the existing concept is to be extended by input channel parallelisation (ICP). The
first step is to adapt and verify the architecture of the relevant calculation unit. Since the data
in the buffers is arranged differently due to the new parallelisation concept, the calculation of
the addresses of the read and write accesses must be changed.
In der Bildverarbeitung sind neuronale Netze aufgrund ihrer hohen Klassifikationsgenauigkeit kaum mehr
wegzudenken. Obschon der hohe Berechnungsaufwand solcher Netze zu verringern versucht wird, verhindert
die stark limitierte Rechenleistung bei eingebetteten low-power Systemen nach wie vor die Ausführung moderner
CNN-Netze in Echtzeit. Die vorliegende Arbeit präsentiert BinArray, einen Hardware-Beschleuniger
der auf Basis von binär-approximierten CNNs (BACNNs) einen anwendungsspezifischen Kompromiss
zwischen der Genauigkeit, dem Ressourcenverbrauch und der Rechenkomplexität des Netzes erlaubt. Die
systolische Array-Architektur ist skalierbar für verschiedene Grössen von BACNNs, von kleineren GTSRBCNNs
bis zu grossen MobileNets. Die Arbeit zeigt, dass die Beschleunigung durch BinArray auf einem
Xilinx Zynq FPGA ohne Genauigkeitsverlust einen Durchsatz von 92.1 FPS ermöglicht, verglichen mit 7.9
FPS auf einem Mikrokontroller. Der Logikverbrauch liegt dabei unter 2% bei einem mittelgrossen FPGA.
Deep Convolutional Neural Networks (CNNs) have become indispensable for computer vision tasks due to
their high accuracy. While large efforts are made to confine the high computational costs of CNNs, low
power embedded devices struggle to achieve a real-time frame rate. In this work, we present BinArray, a
hardware accelerator for Binary Approximated Convolutional Neural Networks (BACNNs), which provide a
configurable trade-off between accuracy and complexity. BinArray translates this trade-off into a task
specific compromise between area, throughput and accuracy depending on the given constraints. Its Systolic
Array (SA)-architecture is scalable for different sizes of BACNNs ranging from a GTSRB CNN to large
MobileNets. We implemented BinArray on a Xilinx Zynq FPGA. Without loosing accuracy, an accelerated
BACNN achieves a throughput of up to 92.1 FPS on GTSRB compared to a CPU with only 7.9 FPS.
BinArray accomplishes this while using less than 2% of the logic available on a mid-sized FPGA.
Akustische Signalverarbeitung benutzt meistens adaptive Filtermethoden und Anpassungen der Parameter,
um eine optimale Audioqualität für bestimmte Anwendungen zu erreichen. In Bezug auf Anwedungen mit
Hörgeräten wird eine optimale Sprachverständlichkeit und Wahrnehmung der akustischen Umgebung
angestrebt. Weil akustische Szenen und Geräuschkulissen in der Realität kontinuierlich ändern, müssen
Parameteranpassungen in Hörgeräten in Echtzeit erfolgen. In dieser Thesis wird ein System vorgestellt
welches in der Lage ist, mit Hilfe von künstlicher Intelligenz (KI) verschiedene akustische Umgebungen
kontinuierlich erfassen zu können. In diesem Fall wurde ein Deep Convolutional Neural Network (CNN)
benutzt, während der Fokus auf einer Echtzeit-Implementierung lag. Als Grundlage der CNN Architektur
dient VGGNet-16, welches zu einem multi-label multi-output Modell modifiziert wurde. Dies ermöglicht es,
dieselbe Struktur zur Informationsentnahme für zwei Ausgänge zu nutzen und dabei gleichzeitig alle
möglichen Kombinationen von akustische Szenen und Geräuschkulissen zu klassifizieren. Für das Training
des CNN wurde ein eigener Datensatz erfasst welcher aus 23.8h von hochqualitativen, binauralen Audiodaten
besteht. Dazu wurden im Voraus fünf Klassen pro Label festgelegt, welche von Menschen klar
unterscheidbar sind. Mittels eine Grid Search Methode konnten drei optimierte Modelle gefunden werden
welche sich in ihrer Komplexität deutlich unterscheiden und es somit ermöglichen, eine Auswahl zwischen
Genauigkeit und Durchsatz zu treffen. Alle Modelle wurden im Anschluss mit 8 Bit quantisiert, welches zu
einer durchschnittlichen Genaugkeit von 99.07% führte. Nachdem die Anzahl Multiply-Accumulate (MAC)
Operationen und Parameter mit Faktoren von 154x resp. 18x reduziert wurde, war das System immer noch in
der Lage eine Genauigkeit von 94.82% zu erreichen. Dies ermöglicht es, eine Echtzeit-Anwendung auf der
Ebene von Mikrokontrollern zu realisieren welche eine Taktfrequenz von 10 MHz vorweisen und eine
Klassifikation pro Sekunde produzieren können.
Processing of acoustic signals is often accompanied by adaptive filtering and parameter adjustments in order
to achieve optimal audio quality for specific tasks. In terms of hearing aids, the intention is an optimal speech
intelligibility and environmental audio perception. Since acoustic scenes and soundscapes are constantly
changing during operation, adjustments in parameters for hearing devices have to be executed in real-time.
We introduce a system which is able to continuously recognize acoustic environments using Artificial
Intelligence (AI) in the form of a Deep CNN (Convolutional Neural Networks) with focus on real-time
implementation. Inspired by VGGNet-16, the CNN architecture was modified to a multi-label multi-output
model which is able to predict combinations of scene and soundscape labels simultaneously while sharing the
same feature extraction. For training we acquired a custom dataset consisting of 23.8h of high-quality
binaural audio data including five classes per label which are clearly distinguishable by humans. Using a
manual Grid Search method, we were able to optimize three models with respect to different complexity
metrics for choosing a trade-off between accuracy and throughput. CNNs were then post-quantized to 8-bit
which achieved an overall accuracy of 99.07% in the best case. After reducing the number of Multiply-
Accumulate (MAC) operations by a factor 154x and parameters by 18x, the classifier was still able to detect
scenes and soundscapes with an acceptable accuracy of 94.82% which allows real-time inference at the edge
on discrete low-cost hardware with a clock speed of 10 MHz and one inference per second.
Convolutional Neural Networks, kurz CNNs, sind eine Art Deep-Learning-Algorithmen, welche
heutzutage häufig für die Bewältigung von Aufgaben wie beispielsweise der Bildklassifizierung,
Objekterkennung oder der Sprachverarbeitung verwendet werden. Da CNNs rechenintensiv sind,
werden häufig FPGA-SoCs eingesetzt, um diese mittels paralleler Verarbeitung zu beschleunigen.
Das Hauptziel dieser Arbeit ist demnach die Entwicklung und Implementierung eines flexiblen CNNBeschleunigungsframeworks BinAccel für die effiziente, proprietäre BinArray-Methode, welche in
vorangehender Forschungsarbeit entwickelt wurde.
Das vorgestellte Beschleunigungsframework umfasst Anwendungen zur Optimierung, Konvertierung,
Quantisierung und Kompilierung eines CNN in ein ausführbares Modellformat sowie die Schritte zum
Aufbau einer FPGA-SoC-Plattform mit einem integrierten Beschleuniger.
Die Hauptbestandteile des Frameworks werden implementiert und in einer Beispielanwendung
eingesetzt: Eine Deep-Learning-Anwendung, welche Verkehrszeichen in einem live Videostream
identifizieren kann. Die Konfigurierbarkeit des Beschleunigungsframeworks wird demonstriert, indem
die Designschritte für mehrere Punkte des Entwurfsraums durchlaufen werden. Insbesondere wird
das CNN-Modell für verschiedene Konfigurationen des Beschleunigers quantisiert und kompiliert.
Um die Performance zu steigern, werden verschiedene Optionen evaluiert, um die Parallelität im
Beschleuniger zu erhöhen. Dies ist insbesondere für rechenintensive CNNs entscheidend.
Die Ergebnisse des Anwendungsbeispiels zeigen, wie die Genauigkeit, der Durchsatz und die
Ressourcennutzung auf der Zielplattform vom Benutzer durch die Konfigurationsoptionen des
Frameworks beeinflusst werden können. Ein Vergleich der Performance mit einer nichtbeschleunigten Version der Anwendung zeigt, dass der Durchsatz der Modellinferenz durch die
Beschleunigung der Convolutional Layer um den Faktor 1,4 erhöht werden kann. Es werden
Vorschläge gemacht, wie die Gesamtleistung der Anwendung weiter gesteigert werden kann. Es wird
aufgezeigt, dass die Erweiterung des Beschleunigers durch Input-Channel-Parallelisierung die
BinArray-Methode konkurrenzfähig mit kommerziellen Frameworks macht.
Convolutional Neural Networks (CNNs) are a type of deep learning algorithm that are state-of-the-art
to perform tasks such as image classification, object detection, and natural language processing.
Because CNNs are computationally intensive, FPGA-SoCs are widely used to accelerate CNNs by
providing parallel processing capabilities. Therefore, the main objective of this study is to design and
implement a flexible CNN acceleration framework BinAccel for the efficient proprietary BinArray
method, which has been developed in previous work.
The presented acceleration framework concept includes tools to optimize, convert, quantize and
compile a CNN into a deployable model format, as well as the steps to build an FPGA-SoC platform
with an integrated accelerator for binary approximated CNNs.
Main parts of the framework are implemented and applied on an example use-case: A deep-learning
based traffic sign recognition application on live input data. The configurability of the acceleration
framework is demonstrated by going through the design steps for multiple points of the design
space. Specifically, the CNN model is quantized and compiled for different hardware accelerator
configurations.
To improve processing performance, different options are analyzed and evaluated to increase
parallelism in the accelerator, which is crucial for large CNN models that require more computational
power.
The results on the example use-case show how the accuracy, throughput, and resource utilization
can be influenced by the user through the configuration options of the framework. A comparison of
the processing performance with a non-accelerated version of the application shows that by only
accelerating the convolutional layers of the model, the inference can be speeded up by a factor of
1.4. Suggestions are provided to further enhance the overall performance of the application.
Furthermore, it is shown that extending the accelerator using input channel parallelization makes the
BinArray method competitive with commercial frameworks.