KI-Forschungsseminar (KIF): Vertiefung in Deep Learning und wissenschaftliche Methodik

Das KI-Forschungsseminar (KIF) ist ein anspruchsvolles Seminar für fortgeschrittene und Masterstudierende, die ihre Fähigkeiten in selbstorganisiertem Lernen und wissenschaftlichem Arbeiten gezielt erweitern möchten. Es legt einen besonderen Schwerpunkt auf aktuelle Deep-Learning-Technologien und ermöglicht den Teilnehmern eine vertiefende Einarbeitung in die neuesten englischsprachigen Fachpublikationen. Praxisnahes Lernen wird durch die aktive Einbindung der Studierenden in die Paper-Analyse und den wissenschaftlichen Diskurs am A²IR-Institut gefördert. Die Studierenden erwerben die Fähigkeit, wissenschaftliche Arbeiten selbstständig zu recherchieren, diese zu verfassen sowie aktuelle Themen der KI-Forschung zu präsentieren. Die exklusive Begrenzung auf 10 Teilnehmer garantiert eine intensive Betreuung und ermöglicht einen interaktiven Austausch, der für ein tiefgreifendes Verständnis der Materie unerlässlich ist. Die Kursteilnehmer entwickeln durch eigenständige Recherche und Analyse die Kompetenz, wissenschaftliche Arbeiten zu erstellen und präsentieren. Der Kurs adressiert insbesondere jene, die ihre akademische oder Forschungskarriere im Bereich der KI vorantreiben möchten. Er bietet nicht nur fundiertes Theoriewissen, sondern fördert auch die Ausbildung von analytischem Denkvermögen und einer kritischen Auseinandersetzung mit komplexen KI-Themen.

Einführung: Edge Intelligence und industrielle Echtzeitsysteme

Inferenz von Deep-Learning/Machine Learning Modellen in Edge Computing unter Berücksichtigung von zeitlichen Randbedingungen.

Eignung von Hardwarearchitekturen: GPU, TPU, CPU und FPGA vergleich

System-Architekturen: Edge-Computing mit Echtzeitanforderungen

Technologien: Einführung in die End-to-End Open Source Machine Learning Plattform Tensorflow sowie NVIDIA TensorRT, Container basiertes Deployment am Beispiel von Docker.

Iot-Protokolle und Services: Amazon Web Services (AWS), Message Queuing Telemetry Transport (MQTT), Constrained Application Protocol (CoAP) sowie 5G-Kommunikation für Factories of the Future

Praktikum:

·         Tensorflow unter C++ und Python

·         Anbindung an Amazon Web Services (AWS)

·         Entwicklung von Linux-Device Treiber zur Sensor- und Aktor- Anbindung

·         Anbindung an ProfiNet und SPS

·         Praktikumsprojekt mit Industrieroboter: Kuka LWR 7


In der Vorlesung „Einführung in Deep Learning Methoden (DLM)“ erlangen die Studierenden Verständnis über aktuelle Methoden des maschinellen Lernens, insbesondere von tiefen Neuronalen Netzen. Diese Methoden finden Anwendung in einer Vielzahl von Forschungsgebieten, beispielsweise  für Anwendungen in Bereichen der Medizinischen Bildverarbeitung, des autonomen Fahrens oder des „Verstehens“ und Klassifizieren von Bildinhalten.

Die Veranstaltung besteht aus einem Theorieteil, bei dem in Vorlesungen die erforderlichen Grundlagen vermittelt werden sowie Praktischen Laborübungen, in denen diese dann angewendet und vertieft werden. Im Zuge der Laborübungen findet eine Einführung in Python statt.

Es folgt anschließend eine Projektphase, in der die Studierenden eine praxisnahe Aufgabenstellung selbstständig mit den erlernten Methoden lösen und ihre Ergebnisse vorstellen.

Das DLM-Module findet ab sofort (erstmals ss21) im Sommersemester statt.


Wahlvorlesung für die Medizintechnik
Grundkonzepte objektorientierter Programmierung: Klasse, Objekt,
Vererbung, Polymorphismus
Nicht-objektorientierte Erweiterungen in C++: Referenzen, Überladen von
Funktionen, Default-Parameterübergabe, Namensräume, Operatoren zur Ein-/
Ausgabe, ...
Klassen und Objekte: Konstruktor, Destruktor, private, public, friend,
klassenweite Member, Komposition, Aggregation, Initialisierungslisten, this,
Felder von Objekten, Zuweisungsoperator, Copy-Constructor, flache Kopie, tiefe
Kopie, Objekte als Funktionsparameter
Überladen von Operatoren: Deklaration und Implementierung, Operatoren als
Memberfunktionen oder globale Friends
Vererbung: Abgeleitete Klassen, Überschreiben von Elementfunktionen,
protected, Mehrfachvererbung, qualifizierte Namen, virtuelle Basisklassen,
Polymorphismus, Spätes Binden, virtuelle Funktionen, abstrakte Basisklassen,
rein virtuelle Funktionen
Templates: Funktions-Templates, Klassen-Templates, Einsatz von Templates
Fehlerbehandlung: Konzept der Exceptions, try, throw, catch
Ein-/Ausgabe mittels Streams: Ein-/Ausgabe von eingebauten und
benutzerdefinierten Datentypen, Formatierung, Files und Streams
Lineare Datenstrukturen: Sequentielle Listen, Feste Länge vs. Dynamische
Längenerweiterung, Suche (linear, binär), Sortieren (z.B. Quicksort); Verkettete
Listen, einfach und doppelt verkettet; Stack (sequentielle Speicherung); Queue
(sequentielle zirkuläre vs. verkettete Speicherung)
Nichtlineare Datenstrukturen: Allgemeine Bäume, Binärbäume, Suchbäume;
Graphen, Algorithmen zur Wegebestimmung und –suche
Exemplarische Einführung in die Standard-Template-Library:
Grundkonzepte der STL, vector- und list-Container, Iteratoren, STLAlgorithmen,
Funktionsobjekte
Dateien: Sequentielle Speicherung, Indexsequentielle Speicherung, Gestreute
Speicherung (Hash-Verfahren)
Entwurf von OO-Anwendungen am Beispiel: Anforderungsanalyse,
Lösungsansatz, Design-Muster bspw. "Observer", "Singleton",
Anwendungsbeispiel: Audio-Input Device

Einführung: in das Engineering von Mikroprozessor-basierten Eingebetteten
Systemen, Embedded Co-Design, Entwicklungsprozesse, Ressourcenbedarf und
Toolchain
Merkmale von reaktiven Systemen: Definition von gedächtnislosen und
dynamischen reaktiven Systemen. Klassifikation von Eingebetteten Systemen,
reaktiven Systemen und Echtzeitsystemen. Eigenschaften von hybriden und
verteilten Embedded Systemen.
Sensoren und Aktoren: Bedeutung und Integration von Sensoren und Aktoren
in Eingebetteten Systemen und deren Klassifikation.
Hardware-Architekturen für Echtzeitsysteme: Verständnis der
Hardwarevoraussetzungen für Eingebettete Systeme mit harten
Echtzeitanforderungen: Nachteile von Speicherhierarchien und spekulativer
Programmausführung in Echtzeitsystemen, zentrale Prioritätensteuerung bei
Interrupts, Nachteile von festen Prioritäten, Funktionsweise von Echtzeit-
Ausgabeeinheiten und Ruhebetrieb, Hardwarearchitekturen von ARMProzessoren.
Bussysteme: Eignung unterschiedlicher Systembusse für Echtzeitsysteme:
Prozessor-unabhängiger Systembus und entkoppelter Bus am Beispiel des
Advanced High-Performance-Busses und des Advanced-Peripheral-Busses
sowie am Beispiel des PCI und PCI-Express.
SPI-Bus: Topologie, Hardware und HAL zur Anbindung von Sensoren und
Aktoren an einen Mikrokontroller (mit Laborprojekt).
Universal Serial Bus (USB): Topologie, Hardware, elektrisches Interface,
Codierung, Transfer-Mode, Geräte-Klassen, Device-Konfiguration (mit
Laborprojekt).
Echtzeitkommunikation (Feldbusse): Feldbusse am Beispiel des
CAN/CANopen, FlexRay und Profibus (mit Laborübung).
Echtzeitsysteme: Abgrenzung harter und weicher Echtzeit, Planungsverfahren
um zeitgerecht zu reagieren, Betrachtungen von temporalen Parametern und
Worst- Case-Szenarien. Scheduling-Verfahren für Echtzeitsysteme.
Echtzeitbetriebsysteme: Die Softwareentwicklung von Echtzeitsystemen wird
am Beispiel von Windows CE, RTLinux, VxWorks und QNX erläutert und in


Kurzinhalt der Vorlesung Software-Entwicklungsmethoden und Tools (SET)

Die Vorlesung Software-Entwicklungsmethoden und Tools behandelt aktuelle Themen der Softwareentwicklung. Aufbauend auf den Vorlesungen PI und OOP, sollen erworbene Programmierkenntnisse methodisch vertieft und der Umgang mit Lower- und Upper-CASE-Werkzeugen im Rahmen eines Semesterprojektes praktisch erarbeitet werden.

Die Themen der Vorlesung sind:

Software Entwicklungsmethoden

  • Unified Modeling Language (UML): Anwendung geeigneter Struktur- und Verhaltensmodelle zur Beschreibung von technischen und medizintechnischen Softwaresystemen, Syntax und Semantik von Aktivitäts- und Zustandsmodellen sowie von Klassen-, Objekt-, Sequenz, Kollaborations- und Kommunikationsdiagrammen.
  • Einführung in das Software-Design anhand von Entwurfsmustern: Erzeuger-, Verhaltens-, Struktur-, Verteilungs- und Integrationsmuster.
  • Schnittstellendesign von Klassen und Modulen.
  • Prinzipien der Komponentenorientierten Softwareentwicklung
  • Softwaretestverfahren

Ereignisorientierte Softwareentwicklung

  • Einführung in die ereignisorientierter Softwareentwicklung unter Windows, Linux und Mac.
  • Graphische User-Interfaces mit dem Cross-Platform Application Framework QT.

Tool-gestützte Softwareentwicklung

  • Case-Tool gestützte Softwareentwicklung
    Softwaredesign und C++ Codeerzeugung unter Verwendung von UML-Case-Tools.
  • Softwareversionsverwaltung
    Softwareversionsverwaltung am Beispiel der Open-Source- Versionsverwaltung Subversion (SVN).
  • Source Code-Dokumentation
    Source Code-Dokumentation mit dem Source Code Dokumentationsgenerator Doxygen.
  • Software Build-Prozess
    Make und Meta Make-Tools zur Unterstützung Plattformunabhängiger Build-Prozesse. Erzeugen und Verwalten von statischen und dynamischen Managed und Unmanaged C/C++ Bibliotheken.
  • Modultests und Testautomatisierung
    Testframework und Teststrategien für Softwaremodule. Software in the Loop und Testautomatisierung.