Erkennung menschlicher Handlungen durch Auswertung der Körperhaltungen von Personen in einem Video mithilfe von Machine Learning und neuronalen Netzen
Bachelorarbeit
Autor | Alexander Melde (7939560) |
---|---|
Betreuer | Dr. M. Sieck, EnBW AG Prof. Dr. M. Babilon, DHBW Stuttgart |
Studiengang/Kurs | B. Sc. Angewandte Informatik – Kommunikationsinformatik TINF15K |
Titel der Arbeit | Erkennung menschlicher Handlungen durch Auswertung der Körperhaltungen von Personen in einem Video mithilfe von Machine Learning und neuronalen Netzen |
Anlass | Bachelorarbeit, 3. Studienjahr |
Bearbeitungszeitraum | 11.06.2018 - 31.08.2018 |
Abgabedatum | 03.09.2018 |
Dank bedeutender Forschungsergebnisse in den Bereichen der künstlichen Intelligenz und digitalen Bildverarbeitung ist es Computern mithilfe von künstlichen neuronalen Netze möglich, Personen in Videos zu detektieren und deren Körperhaltungen abzuschätzen.
In dieser Arbeit wird geprüft, ob durch Auswertung dieser Körperhaltungen menschliche Handlungen erkannt werden können.
Die selbstständige Klassifikation von Videos oder gar Handlungen in Videos durch einen Computer ist ein noch nicht gelöstes Problem, zu dem noch viel geforscht wird. Um die komplexen Zusammenhänge, Lösungsvorschläge und Implementierungen zu verstehen, werden in dieser Arbeit zunächst einige Grundlagen aus den Bereichen Videoüberwachung, digitale Bildverarbeitung und künstliche Intelligenz erarbeitet. Anschließend werden zahlreiche Ansätze zur Handlungsklassifikation in Videos miteinander verglichen und bewertet.
Damit die künstliche Intelligenz angelernt werden kann, werden darüber hinaus zahlreiche Datensätze mit beschrifteten Handlungen aufgezeigt.
Ausgehend von den Ergebnissen dieser Untersuchung werden anschließend mehrere im Rahmen dieser Arbeit entwickelter Prototypen zur Handlungserkennung vorgestellt. Für einen produktiven Einsatz werden abschließend Erweiterungs- und Optimierungs-Möglichkeiten gezeigt.
In jedem Schritt wurden darüber hinaus Optimierungen hinsichtlich des Anwendungsfall „Überwachung von öffentlichen Plätzen“ geprüft. Durch die Haltungserkennung sollen Gewaltsituationen in Videoüberwachungs-Streams erkannt und Aktionen wie Schläge oder Tritte von normalen Alltagshandlungen unterschieden werden können.
Der im Rahmen der Bachelorarbeit geschriebene Quelltext wurde nach Abschluss des Prüfungsverfahrens unter der GNU v3 Lizenz in diesem GitHub Repository veröffentlicht.
Zur Dokumentation des Codes wurde auch der schriftliche Teil der Bachelorarbeit hier hochgeladen.
Inhalt dieses Repository:
- Quellcode zur Bachelorarbeit.
- Ordner "Beispiele", der Teile der während der Arbeit generierten Bilder enthält.
- Bachelorarbeit als PDF Datei
- Python und Pip installieren
- Python 3.6 herunterladen und installieren (beinhaltet pip)
- Virtual Environment erstellen mit allen in der Datei
requirements.txt
genannten Modulen- Das Modul "Virtual Environment" installieren mit
pip install virtualenv
- Neue virtuelle Umgebung im Projektordner erstellen mit
virtualenv venv
- Virtuelle Umgebung betreten, indem im Ordner
venv/Scripts/
ausgeführt wird:- Unix (Bash):
.\activate
- Windows (PowerShell):
PowerShell.exe -ExecutionPolicy UNRESTRICTED
und.\Activate.ps1
- Unix (Bash):
- Module in virtuelle Umgebung installieren mit
pip install -r requirements.txt
- Das Modul "Virtual Environment" installieren mit
- Die Bibliothek
pafprocess
kompilieren- Compiler SWIG installieren
- Unix:
sudo apt install swig
- Windows:
- SWIG herunterladen und Installieren Download
- Visual C++ Build Tools von Microsoft installieren via Direktlink oder Download-Website besuchen, "Tools für Visual Studio 2017" auswählen und bei "Build Tools für Visual Studio 2017" auf "Herunterladen" drücken
- Unix:
- Im Ordner
tpe/tf_pose/pafprocess
die Befehleswig -python -c++ pafprocess.i
undpython setup.py build_ext --inplace
ausführen.
- Compiler SWIG installieren
Im Ordner pretrained
befinden sich drei vortrainierte Modelle, die nach der Installation zum Test der Prototypen genutzt werden können:
- Prototyp 1, KTH-Datensatz:
python main.py --folder_classification_files="pretrained/classification_files_proto1_kth" --classify_webcam=True
- Prototyp 2, KTH-Datensatz:
python main.py --folder_classification_files="pretrained/classification_files_proto2_kth" --classify_webcam_asImgs=True
- Prototyp 2, zusammengesetzter Datensatz:
python main.py --folder_classification_files="pretrained/classification_files_proto2_big" --classify_webcam_asImgs=True
Nach der Installation kann der zweite Prototyp in zwei Schritten mit einer Webcam und eigenen Klassen und Trainingsdaten getestet werden:
- Nach Handlungen sortierte Videos in Unterordner von
training/input_videos
legen, jeweils mindestens 20 Videos im .avi Format z.B. 30 Videos im Ordnertraining/input_videos/boxing
und 25 Videos im Ordnertraining/input_videos/walking
. - Prototyp 2 testen mit verkettetem Ablauf
python main.py --convertVideosToOneImage=True --retrain=True --train_with_vid_as_img=True --classify_webcam_asImgs=True
oder einzeln:- Generierung von Überlagerungen starten mit
python main.py --convertVideosToOneImage=True
- Das Training des zweiten Prototypen starten mit
python main.py --retrain=True --train_with_vid_as_img=True
- Anwendung auf Webcam starten mit
python main.py --classify_webcam_asImgs=True
- Generierung von Überlagerungen starten mit
Weitere Aufrufe siehe Bachelorarbeit und Hilfe via python main.py -h
E-Mail: [email protected]