Nach den Aufnahmen lagen Videos jedes Takes von den einzelnen Musikergruppen vor. Damit eine saubere Strukturierung der Daten möglich ist, haben wir uns dazu entschieden, die Musiker einzeln zu maskieren und in die Mitte des Bilder zu setzen, damit die 3D Transformation die Kameramatrix und -projektion richtig interpretiert und die Daten auf einen kleinen bestimmten Bereich zentriert werden.
Bild eines einzelnen maskierten Musikers…
Diese Prozedur wurde für alle Musiker durchgeführt, dass am Schluss alle Videos geschnitten auf den aufgenommenen Klang vorlagen. Alle Videos mussten nun von Openpose im Stapel verarbeitet werden, um an die 2D .json Daten zu kommen. Da viel mit Linux gearbeitet wurde, hat hier ein Shell Script die Arbeit erledigt. Die Grundstruktur des Shellscripts wurde auch für spätere Stapelverarbeitungen der Daten genutzt.
# read files in folder for file in /path/to/directory/* do path=$1 filename=$(basename -- "$file") # strip filetype filename="${filename%.*}" filename_op="${filename%.*}_op" echo "File: $file" echo "Path: $path" echo "File name: $filename" # create output path for json & video # echo "Creating output folder at" # echo "$path/$filename" # mkdir "$path/$filename" echo "Executing openpose" sudo nvidia-docker run -v /path/to/openpose:/data -v /path/to/openpose/models:/openpose/models -it wenwu449/openpose:latest ./build/examples/openpose/openpose.bin --video /data/$filename.mp4 --write_json /data/Motiondata/$filename/ --model_pose COCO --number_people_max 1 --camera_fps 60 --write_video /data/Motionvideo/$filename_op.avi --display 0
echo "openpose is done" # convert to mp4 ffmpeg -i /Motionvideo/$filename_op.avi Isolation/Motionvideo/$filename_op.mp4 -hide_banner echo "AVI File converted to MP4" # delete avi rm Isolation/Motionvideo/$filename_op.avi echo "AVI File deleted" echo "" echo "~" echo "" echo "" done
Nachdem alle Videos von Openpose verarbeitet worden sind, wurde der Datensatz von 3D Baseline weiterverarbeitet. Über ein Shellscript wurde hier wieder auf die einzelnen Ordner zugegriffen, um die csv Tabellen für die Bewegungsdaten der Musiker zu erstellen. Hier wurden der openpose Befehl, das Konvertieren zu .mp4, sowie das Löschen der .avi-Datei weggelassen und ausgetauscht durch den Befehl für 3d-pose-baseline
Alle CSV Tabellen waren nun zur Weiterverarbeitung bereit. Da noch nicht sicher war, wie die Daten eingebettet werden, wurden die Datenmengen der Tabelle reduziert von XX MB auf YY MB. Durch ein Runden auf zwei Nachkommastellen aller Zahlen reduzierte sich die Zeichenmenge so, dass auch die Datenmenge nach unten ging. Über ein Shellscript wurden die Tabellen wieder im Stapel verarbeitet. Mit einem perl regex Befehl wurden die Zahlen in den Tabellen gerundet und gekürzt.
perl -i -pe 's/[-+]?\d*(?:\.?\d|\d\.)\d*(?:[eE][-+]?\d+)?/sprintf("%.2f",$&)/ge' $file
Es wurde viel Zeit investiert, die Daten immer im Stapel und nicht einzeln zu generieren, da das einfach mehr Zeit in Anspruch genommen hätte. Die Shell Scripte haben sehr viel Aufwand gespart und waren ein gutes Mittel Überblick zu behalten.
Nach der langen Beschäftigung mit der Datenarchitektur, war das nächste Thema das Audio- und Klangbild im virtuellen Raum.