Hand gesture recognition and interactivity in Pexip video conference calls
Abstract
Denne oppgaven omfatter utviklingen av en håndgests-detektor, som ble utviklet forPexip. Det er to hoveddeler til denne prosessen, en objektdetekteringsmodell og etGStreamer element med en prosesseringsalgoritme for deteksjoner. Håndgest-modellenble laget med bredt anerkjente objekt-detektsjons arkitekturer. Arkitekturene som bleutforsket var YOLO, SSD og Faster R-CNN. Alle objektdeteksjonsmodellene ble trent påHaGRID datasettet, som inneholder 18 forskjellige håndgester.
Resultatet av å trene disse modellene var flere modeller med mAP@50 resultater over0.9, som også hadde akseptabel eller god ytelse. De fullstendig implementerte modellene hadde rammerater fra 3.3 FPS til 26.3 FPS.
Den andre delen av denne oppgaven var utviklingen av et GStreamer element meden prosesseringsalgoritme for deteksjoner. Dette var hovedsakelig implementert i C ogC++, ettersom god ytelse var et krav. Dette elementet var ansvarlig for å sende ut et"oppreist hånd" signal, som igjen kunne bli vist i Pexips webapplikasjon. Det var viktigat dette elementet hadde god ytelse, ettersom responsivitet og minimal ressursbrukvar foretrukket. I tillegg til dette ble elementet utviklet med en håndfull av debuggingsfunksjoner, slik at å eksperimentere, debugge og endre på parametere var så enkelt som mulig.
Sluttresultatet var en "håndgest" detektor, som for tiden er i en branch i Pexips GitHubrepository. Detektoren varsler andre deltakende i en videokonferanse om at en deltakerhar løftet hånden sin. Siden modellen har flere håndgester, er den lett å utvide dersomflere funksjoner skulle ønskes. This thesis covers the development of a hand gesture detector, developed for Pexip.There are two main parts of this process, namely an object detection model, as well as aGStreamer element with a detection processing algorithm. The hand gesture detectionmodel was made with prominently recognized object detection architectures. Amongthe architectures explored were YOLO, SSD and Faster R-CNN. All of the object detectionmodels were trained on the HaGRID dataset, which includes 18 different gestures.
Some of the trained models achieved a mAP@50 score of over 0.9, while also maintaining asufficient framerate. The final selection of models consisted only of different versions ofYOLO models. These models resulted in framerates ranging from 3.3 FPS to 26.3 FPS.
The second part of this thesis was the development of a GStreamer element with adetection processing algorithm. As Pexip requires high performance, this was done inC++. This element was responsible for emitting a "raised hand" signal, which wouldtrigger a "raised hand" functionality within the Pexip webapp, raising a banner and notifying other participants. It was also important that this element had high performance,as responsiveness and minimal resource use in terms of CPU and memory was desired.This element also contained debugging features, allowing quick and easy experimentation.
The final result was a gesture detector, which is currently in one of Pexip’s GitHubbranches. The detector notifies other users within a video call that a participant hasraised their hand. As the model contains a multitude of hand gestures, the gesturedetector is easily extensible to help provide additional desired features. The detectorserves as a strong foundation for not only using the "raise hand" feature, but can alsobe extended for a multitude of other use cases.