Schlagwörter
Skills
- 25 Jahre Programmiererfahrung, davon 22 mit C++ und C, 8 Jahre mit Python, 14 Jahre mit Matlab
- 13 Jahre praktische Erfahrung in Computer Vision, Bildverarbeitung und maschinellem Lernen
- 11 Jahre Forschungsaktivität (Autor/Koautor von über 50 wissenschaftlichen Publikationen, die mehr als 2100 mal zitiert wurden)
- Bearbeitung von F&E-Projekten für 9 industrielle Auftraggeber
Kernkompetenzen
- Computer Vision, Bildverarbeitung, Videoverarbeitung, 3D-Datenverarbeitung, Signalverarbeitung
- Maschinelles Lernen, Deep Learning, Mustererkennung, Data Science
- Software-Entwicklung für Linux, Windows, Cross-Plattform, Mikrocontroller
- Echtzeitsysteme, eingebettete Systeme, Betriebssysteme, Gerätetreiber
- Parallelisierung und Performance-Optimierung
- Entwicklung und Validierung von Algorithmen und Modellen
- Forschung, wissenschaftliches Schreiben, Präsentation von Ergebnissen
- effiziente Speicherung und Verarbeitung großer Datenmengen (z.B. > 200 Stunden Videomaterial)
- Konzeption und Realisierung von Bildaufnahme- und Bildverarbeitungssystemen (Auswahl Hardware, Synchronisation von Kameras und anderen Modalitäten, Kalibrierung, Entwicklung echtzeitfähiger Software)
Programmiersprachen
C++, C, Python, Matlab, Java, C#, Visual Basic, bash
Entwicklungstools
VS Code, Visual Studio, CMake, GNU tools, git, subversion, doxygen, sphinx (docs), vim
Oft verwendete Modelle / Konzepte aus Computer Vision / Maschinellem Lernen / Bildverarbeitung
Convolutional Neural Network (CNN), Support Vector Machine (SVM), Entscheidungsbäume / Random Forests, Ensemble-Methoden, Transferlernen, Multi-Label-Learning, Multi-Task-Learning, Klassifikation, Regression, Detektion, Registrierung, Segmentierung, Warping, Principal Component Analysis, Clustering, Tracking, optischer Fluss, Kameramodelle, Stereo Vision, Iterative Closest Point Algorithmus
Bibliotheken / Technologien
OpenCV, Boost, dlib, tensorflow, numpy, pandas, scikit-learn, darknet (neural network framework), pytorch, OpenGL, Multithreading, GPU, CUDA, OpenCL, ffmpeg/libav, protobuf, ADTF, Fox Toolkit, QT, wxWidgets, Windows, WinAPI, Linux, Linux Treiber, embedded Linux, Xenomai/Linux, Mikrocontroller
International selbst gehaltene Präsentationen zu eigenen Arbeitsergebnisse (in Englisch)
MIT Media Lab (Boston, USA, 2018) | IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR) Workshops 2020 (remote) | International Conf. on Image Processing 2017 (Beijing, China), 2014 (Paris, Frankreich) und 2012 (Orlando, USA) | British Machine Vision Conf. 2015 (Swansea, UK) und 2013 (Bristol, UK) | Int'l Conf. on Pattern Recognition 2014 (Stockholm, Schweden) | Int'l Conf. on Automatic Face and Gesture Recognition 2019 (Lille, Frankreich) | Int'l Conf. on Affective Computing and Intelligent Interaction 2017 (San Antonio, USA) und 2019 (Cambridge, UK) | Universität Uberlândia (Brasilien, 2013)
Weitere Infos inkl. Publikationsliste
http://www.nit.ovgu.de/Philipp_Werner.html
Projekthistorie
- Anforderungen: Generierung von synthetischen Kamerabildern inkl. Grundwahrheiten für Automotive Computer Vision Anwendungen, Unterstützung spezifischer komplexer Kamera-Intrinsik-Modelle, Multi-Kamera-Unterstützung, Sicherstellung von einfacher Bedienbarkeit und Installation, Stapelverarbeitung, Grundwahrheiten: Tiefe, optischer Fluss, Positionen von Kalibriermarkern, Odometrie, semantische Segmentierung
- Tätigkeiten: Detailabstimmung von Anforderungen, Design, Implementierung, Dokumentation, Tests, Integration, Erstellung von 3D-Szenen und Konfigurationen für Tests
- Tools: Blender, Python (Blender API, numpy, scipy, sklearn, pandas, click, pytest, sphinx), C++, Git/GitHub, OpenCV, OpenEXR
- Nutzung von Pytorch, OpenCV, Python und C++
- Nutzung von CNN-Architekturen des aktuellen Standes der Technik
- Verwendung von Tensorflow, Darknet, OpenCV, sklearn, Pandas, C++ und Python
Trainer für Schulungen zu Machine Learning und Deep Learning mit Python, Tensorflow, Scikit-learn (15 Arbeitstage)
Thema: "Automatisierte bild- und videobasierte Mimikanalyse für die Messung von Schmerzen und Facial Action Units"
Ich nutze u.a. CNNs, Transferlernen, Multi-Task-Lernen, Multi-Label-Lernen, Augmentierung, SVM, Random Forest, Detektion, Klassifikation, Regression, Clustering, Kameramodelle, optischen Fluss und Methoden der Bildverarbeitung um große Datensätze zu analysieren (hunderte Stunden Video), die Kollegen mit technischer Infrastruktur und Software aufgezeichnet haben, die ich zuvor entwickelt habe. Hierzu gehörte auch low-level-Code zum Betrieb verschiedener Kameras.
- Technische Konzeption, Implementierung und iterative Verbesserung des Systems basierend auf Kundenanforderungen
- Deep Learning: Programmierung und Training von CNNs (Architekturen des Standes der Technik)
- Nutzung von C++ / Darknet und Python / Tensorflow
- Multi-Label-Klassifikation und -Regression
- Umsetzung von Programm zum Deployment der CNNs in C++ unter Nutzung von u.a. OpenCV, Boost
- Optimierung und Parallelisierung der Datenverarbeitungspipeline mit Multi-Threading
- Erfüllung von (weichen) Echtzeitanforderungen mit sehr hohen Frameraten auch ohne GPU (auf CPU)
- Forschung zur Verbesserung der Robustheit und Genauigkeit von Methoden zur Mimik-, Emotions-, und Schmerzerkennung, Körperposeschätzung, Erkennung von Gesten und Aktivitäten
- Anleitung von und Zusammenarbeit mit 8 Mitarbeitern und Studenten (über den Gesamtzeitraum)
- Training und Evaluierung von CNNs, Transferlernen, Multi-Label-Learning, Multi-Task-Learning, Self-Training, Optimierung von Hyperparametern, Weiterentwicklung von Erkennungsalgorithmen
- Programmierung Python, Tensorflow, C++, OpenCV, dlib, Matlab
- Zweiter Platz in EmotionNet 2020 Challenge zu Facial Action Unit recognition in the wild (Abstand von nur 0,05% zum Gewinner aber 5,9% zum Drittplatzierten)
- Video zum CVPRW paper: https://www.youtube.com/watch?v=azMB9lOjcL4
- Mehr: http://www.nit.ovgu.de/Philipp_Werner.html
- Bearbeitung von Forschungsprojekten zur automatischen Mimikerkennung, Kopfposeschätzung und Schmerzerkennung (gefördert von DFG und BMBF)
- Entwicklung von Algorithmen zur Analyse von Bildern, Videos, 3D-Daten und Biosignalen
- Implementierung von Algorithmen in C++, Matlab und Python
- Anwendung von maschinellem Lernen, überwiegend SVM und Random Forest, später auch CNNs
- Entwicklung spezialisierter Merkmalsextraktion für kleine Datensätze (wo CNNs nicht optimal funktionieren)
- Bearbeitung von Projekten zur Schätzung der Kopfpose des Fahrer für einen Automobilkonzern (C++, ADTF, OpenCV, auf Basis von RGBD-Sensoren und Multi-Kamera-Systemen), mehrere Teilprojekte in 2011 bis 2015
- Bearbeitung einer Machbarkeitsstudie zur Messung von Reifenprofiltiefen mittels kostengünstiger RGBD-Sensoren für eine Werkstatttechnik-Firma
- Entwicklung von echtzeitfähiger Software für multimodale synchrone Datenaufnahme mehrerer Kameras und anderer Signale, inkl. Videokompression
- Schätzung der Eigenbewegung eines Fahrzeugs anhand von Optical Flow
- Anwendung und Vergleich von Lucas-Kanade-Tomasi-Feature-Tracker und SURF-basierten Feature-Tracking (Software implementiert in C++ mit OpenCV)
- Software-Entwicklung für Mimikerkennung (C++, OpenCV)
- Umsetzung für CAN und dediziertes Ethernet
- Uhrensynchronisation
- Netzwerkzugriff durch TDMA geregelt
- Dynamische Planung und Reservierungsprotokoll
- stark konfigurierbare und ressourcenoptimierte Implementierung in C++ unter Nutzung von Templates (erlauen Composability-Checks zur Compile-Zeit sowie weitreichende Optimierung des Programmcodes)
- Test der Implementierung unter Xenomai/Linux (PC) und auf einem 8-bit AVR-Mikrocontroller (mit 4 Kilobyte RAM)
- Auszeichnung der Diplomarbeit durch den Fachausschuss Echtzeitsysteme der Gesellschaft für Informatik
Paper: https://link.springer.com/chapter/10.1007/978-3-642-33707-9_14
FAMOUSO Quellcode (C++): http://famouso.sourceforge.net/
Anwendungsfach: Elektrotechnik
Software-Entwicklungsprojekte:
- Steuerung eines Roboters mit Differentialantrieb durch ein Labyrinth (8-bit AVR Mikrocontroller programmiert mit C++), Auslesen von Infrarot-, Ultraschall- und Odometrie-Sensoren, Ansteuerung der Motoren, Implementierung eines Wegfindealgorithmus
- Entwicklung einer C++ Hardware-Abstraktionsbibliothek für Mikrocontroller mit minimalen Resourcenanforderungen
- Entwicklung und Implementierung eines adaptiven Fragmentierungsprotokolls für die Middleware FAMOUSO (C++)
- Konzeption und Implementierung eines Echtzeit-Videostreaming (Live-Webcam) über ein Wireless Mesh Network mit niedriger Latenz; automatische Regelung der Bildqualität auf Basis der verfügbaren Bandbreite und Datenverluste (C++, Nutzung von libv4l, libpgf, FAMOUSO)
- Implementierung von inverser Kinematik und anderen Funktionen für einen simulierten Industrieroboter mit 6 Achsen (in C#)
- Entwicklung einer KI für das Spiel Dame (in Java)
- Implementierung in C++ (CPU)
- Implementierung einer parallelisierten Version für GPU in OpenCL
- Validierung
- Entwicklung eines Linux-Treiber für eine PCI-E FPGA-Beschleunigerkarte (inkl. DMA, Interrupts, parallelem Zugriff mehrerer Prozesse)
- Entwicklung einer User-Space-Bibliothek und von Testanwendungen (inkl. GUI mit QT)
- Implementierung in Programmiersprache C
- Inbetriebnahme der FPGA-Karte und Software in Embedded Linux System
- XSLT-basierte Codegenerierung (VHDL, C++, Matlab, Dokumentation) für Treiber- und Hardware-Interfaces (sowie Testcode) für einfache Einbindung der Hardwarebeschleunigung für Anwendungsentwickler und vereinfachte Spezifikation für FPGA-Entwickler