VOORWOORD
i
Voorwoord Ik wil graag mijn promotoren, dr. ir. Sofie Van Hoecke en dr. Steven Verstockt, bedanken voor hun hulp tijdens dit onderzoek. Dankzij hun voorstellen en ondersteuning werden enkele essenti¨ele stappen opgesteld die noodzakelijk waren om dit onderzoek tot een goed einde te brengen. Dr. ir. Van Hoecke wil ik persoonlijk ook bedanken om mij de opportuniteit te bieden om gedurende de vakantie een onderzoek uit te voeren dat mij veel inzicht verschaft heeft omtrent cameradetectie. Deze kennis was uiterst welkom gedurende deze masterproef. Dr. Verstockt is een grote hulp geweest op vlak van ontwikkeling van het framework. Zonder zijn hulp zou het niet mogelijk geweest zijn om het onderzoek op dezelfde manier af te ronden Ook wens ik Frederik De Wachter en Michael Boone van dZine te bedanken voor hun constructieve hulp en opmerkingen bij de interactieve zijde van dit onderzoek. Graag wil ik ook iedereen bedanken die in de loop van het afgelopen jaar mij geholpen heeft om de moed erin te houden. Jullie hebben geholpen om de druk te verlichten wanneer dit kon, en hadden altijd begrip bij de moeilijke momenten. Bedankt hiervoor. Verder wil ik mijn medestudenten bedanken voor hun suggesties, inzicht en hulp bij dit onderzoek. Onze gedeelde kennis bood een nieuw perspectief op de aanwezige problemen waaruit ik veel geleerd heb. Mijn ouders krijgen ook een meer dan verdiende bedanking voor hun steun en inzet. Met hun ondersteuning kon dit project tot een goed einde gebracht worden.
Dree Vanhee, juni 2013
TOELATING TOT BRUIKLEEN EN PUBLICATIE OP DSPACE
ii
Toelating tot bruikleen en publicatie op DSpace
“De auteur geeft de toelating deze scriptie, evenals alle nuttige en praktische informatie omtrent deze scriptie, op te nemen in een daartoe speciaal opgezette DSpace databank (http://dspace.howest.be) en deze databank via internet toegankelijk te maken voor alle mogelijke ge¨ınteresseerden. De auteur geeft eveneens toelating de scriptietekst te gebruiken voor afgeleide producten, zoals daar zijn: abstractenverzamelingen en catalogi. Tenslotte geeft de auteur ook de toelating deze scriptie voor consultatie beschikbaar te stellen en delen van de scriptie te kopi¨eren voor persoonlijk gebruik. Elk ander gebruik valt onder de beperkingen van het auteursrecht, in het bijzonder met betrekking tot de verplichting de bron uitdrukkelijk te vermelden bij het aanhalen van resultaten uit deze scriptie.”
Dree Vanhee, juni 2013
RDF Gesture Framework door Dree Vanhee Scriptie ingediend tot het behalen van de academische graad van Master in de Industri¨ ele Wetenschappen elektronica-ICT: optie ICT Academiejaar 2012–2013 Promotoren: dr. ir. S. Van Hoecke, dr. S. Verstockt, F. De Wachter Hogeschool West-Vlaanderen Associatie Universiteit Gent Master Industri¨ele Wetenschappen: Electronica-ICT Voorzitter: prof. ir. F. De Pauw
Samenvatting Reclame is tegenwoordig alom aanwezig in het straatbeeld. Hierbij is een trend merkbaar waarbij digitale beeldschermen steeds vaker gebruikt worden, ter vervanging van hun papieren tegenhangers. Deze groeiende markt wordt ”digital signage”genoemd. Wat echter opvalt, is dat een van de grote voordelen van digitale reclameborden, namelijk de mogelijkheid tot interactiviteit, nog nergens wordt toegepast. Interactiviteit kan voordelen bieden zoals het aanpassen van de reclameboodschap naar gelang het publiek. Ook kan dit ervoor zorgen dat de aandacht van voorbijgangers sneller getrokken wordt en dat deze aandacht langer aangehouden blijft. Binnen deze masterproef werd onderzocht wat de mogelijkheden zijn om zelf een bewegingsdetectie systeem aan te maken, dat voldoende vrijheden levert om bruikbaar te zijn voor interactieve toepassingen binnen de markt van digital signage. Hoewel er al meerdere onderzoeken werden uitgevoerd naar bewegingsdetectie, biedt deze studie toch een vernieuwend aspect. Zo wordt de bruikbaarheid van beslissingsbomen onderzocht om bewegende beelden te analyseren. Omdat het ontwikkelde framework bruikbaar moet zijn bij publieke reclameschermen, worden een aantal beperkingen gesteld aan dit systeem. Zo moet de gebruiker zonder enige vorm van kalibratie de interactie kunnen aanvatten. Ook is het belangrijk dat rekening gehouden wordt met drukke plaatsen, waar meerdere personen zich voor hetzelfde scherm kunnen bevinden. Uit deze groep mensen moet dus automatisch een keuze gemaakt worden omtrent wie de controle krijgt over de besturing. Om de bruikbaarheid zo hoog mogelijk te houden, is het belangrijk dat er zo weinig mogelijk beperkingen of eisen worden gesteld aan de afstand tussen de gebruiker en de camera. Er wordt onderzocht welke bewegingen kandidaat zijn voor de besturing van het systeem, met oog op eenvoudige interacties. Bij publieke schermen mag uitgegaan worden van een opportunistisch gebruik. Hierbij zullen
gebruikers nooit lang interaheren met het scherm. Dit bewijst het belang van intu¨ıtieve bewegingen. Hoe steiler de leercurve om met het systeem te leren werken, hoe sneller potenti¨ele gebruikers zullen afhaken. De persoon die dichtst bij de camera staat, wordt automatisch aangesteld als actieve gebruiker. De bewegingsverwerking van de actieve gebruiker berust op gegenereerde skeletbeelden. De skeletbeelden worden aangewend voor zowel de user feedback als voor de bewegingsanalyse. De bewegingssnelheid en -richting van beide handen wordt berekend door substractie met een vorig skeletbeeld. Wanneer de bewegingssnelheid van een hand groter wordt dan de gewenste minimumsnelheid, begint de analyse van de beweging. Gedurende de tijd dat de gebruiker de beweging uitvoert, wordt de bewegingshoek omgezet naar een van de acht mogelijke bewegingsrichtingen. Deze richtingen worden bijgehouden en verwerkt nadat de gebruiker de beweging heeft be¨ındigd. De volledige lijst van bewegingrichtingen wordt opgedeeld in 4 segmenten. Binnen elk segment wordt de meest voorkomende bewegingsrichting geselecteerd. Hierdoor wordt per hand een bewegingsvector opgesteld met 4 velden. Deze vector wordt niet be¨ınvloed door de tijdsduur waarin de beweging werd uitgevoerd. Wanneer de beide handen niet meer sneller bewegen dan de gewenste minimumsnelheid, wordt de volledige bewegingsvector aangemaakt door het resultaat van beide handen samen te nemen. Wanneer slechts een van de handen sneller beweegt dan de minimumsnelheid, wordt de bewegingsvector van de andere hand ingevuld met een arbitraire waarde. De resulterende bewegingsvector wordt door een RDF beslissingsboom geclassificeerd naar een van de mogelijke bewegingen. Deze beslissingsboom wordt aangemaakt door middel van een lijst met trainingsdata. Door deze data te wijzigen kunnen de mogelijke bewegingen aangepast worden. Een van de voordelen van beslissingsbomen is de accurate werking bij nieuwe gevens die niet voorkomen in de trainingsdata. Om de algemene detectie te optimaliseren werden een aantal uitbreidingen toegevoegd. Na elke geclassificeerde beweging wordt de detectie voor een bepaalde tijd stilgelegd, zonder onderbreking van de user feedback. Dit voorkomt een foutieve classificatie wanneer de gebruiker na de beweging de handen terug beweegt naar hun startpositie. De gewenste bewegingssnelheid werd in verband gebracht met de afstand tussen de gebruiker en de camera. Wanneer de actieve gebruiker verder verwijderd staat van de camera, heeft zijn bewegingsgebied een relatief kleiner aandeel in het volledige beeld, dan wanneer deze dichter staat bij de camera. Omdat de bewegingssnelheid berekend wordt aan de hand van de verplaatsing in het beeld, zal de resulterende bewegingssnelheid kleiner zijn voor een gebruiker die verder staat van de camera. Dit bewijst de nood aan een variabele grens in bewegingssnelheid. Het ontwikkelde framework werd ge¨evalueerd aan de hand van gebruikerstesten op een test-applicatie. Uit deze gebruikerstesten wordt de conclusie getrokken dat de geselecteerde bewegingen eenvoudig aan te leren zijn. Er moet wel opgemerkt worden dat bewegingsinteractie een nieuwe mogelijkheid is voor veel gebruikers. Hierdoor is er nood aan een korte user training, voordat de interactie van start kan gaan. Het geleverde onderzoek beantwoordt de onderzoeksvragen positief. Er zit een toekomst in bewegingsdetectie voor publieke beeldschermen, maar om dit te optimaliseren is er nood aan kwalitatief betere camera’s die de bewegingen detecteren. Betere camera’s zullen een accuratere meting afleveren, waarbij de mogelijkheden van detectie zullen toenemen.
Trefwoorden RDF, Kinect, Gesture, Framework, Interactie
RDF Gesture Framework Dree Vanhee Supervisor(s): Sofie Van Hoecke, Steven Verstockt, Frederik De Wachter Abstract—This article describes the research done to classify movements using decision trees. Using a Microsoft Kinect camera, a selected set of gestures was evaluated by a usability study. The proposed architecture offers a new gesture detection method that can be used for interactive advertisements. Key components of the proposed architecture are gesture detection and classification using ALGLIB. Keywords—RDF, Kinect, Gesture, Interaction
I. I NTRODUCTION DVERTISEMENT is a globally used method for companies to show their products to potential users. Even though the quality and costs to use displays have greatly improved over the years, billboards still hold the largest use for public advertisement. The companies that do use displays or ledwalls to bring their message to the consumers, often fail to use the greatest advantage of this new and ecologic way of advertising. This advantage is interactivity. By using interactive advertisements, the content on the screen can be changed to best fit the people that are watching that screen. One of the great advantages of interactivity is the improvement to attract and retain the attention of the customers. This area, both the digital is called ”digital signage” To enable interactivity, a multitude of methods can be used. However, many of these interaction methods fail to scale up to larger displays. When using touch screens, the user often cannot reach the full area of a large display. Cursor based interaction will prove to be problematic, because of the increased navigation time to go from one point to another. Losing track of the cursor itself would prove to be a major problem for most users. Due to its inherent nature, voice commands are not impacted by screen size. But in loud environments, it could prove problematic to extract an active user from the background noise. With this in mind, gesture based interactions form a very suitable interaction method. Currently, two big restrictions of gesture interaction are the lack of social acceptance and the often insufficient quality of affordable cameras. Both these problems are decreasing rapidly because of the use of gesture interaction in innovative markets such as console gaming(Xbox, Wii, PlayStation) and sign language recognition. The increasing social acceptance of gesture interaction opens new possibilities for interactive advertisement. Seeing people interact with an advertisement will evoke an effect known as the Honey Pot effect. This states that passers are more likely to notice an interactive system if somebody is using it. The resulting potential increase in attention can then be use increase the revenue of the advertisement. For this study, a generic framework was created for gesture recognition. It was evaluated using a Microsoft Kinect camera. The framework offers dynamic motion analysis and movement classification using an ALGLIB Random Decision Forest. The following extended abstract discusses the framework and evalu-
A
ates the set of gestures that was drafted to test it. II. G ESTURE F RAMEWORK Although gesture recognition has been subject of many studies, this research provides an innovative way to detect gestures. The primary research question concerns the use of decision trees to classify motion. The second research question addresses the usability of a selected set of gestures. To allow interactivity with digital signage, certain restrictions are in place. A new user should not need to calibrate the system, interaction should begin as soon as possible. In the interest of public displays, the framework must automatically and consistently select one active user from the possible group of people. To optimize the usability, there should be as little restrictions as possible on the distance between the active user and the camera. The framework itself does not depend on any 3D camera and/or processing software for these cameras. This provides the opportunity to use the framework with any desired 3D camera, as long as it provides skeleton frames. For the developed test application, the Microsoft Kinect was used. By using a Smoothing Filter, provided by the Kinect SDK, the quality and consistency of the delivered skeletons greatly improved. The next section describes the required changes that transform the skeleton data to a classified gesture. A. Motion Analysis Since decision trees are used to classify data vectors, the received skeleton frames must first be transformed. Each new skeleton frame is added to a scrolling list, resulting in the loss of the oldest skeleton. To determine the changes between the stored skeletons, subtraction is used. This subtraction determines the changes in X and Y coordinates for both hands. Using these change values, the magnitude and angle of motion are calculated. The magnitude is compared to a threshold, MotionThreshold. This will decide whether each hand moves fast enough to start analyzing the movement. To improve the functionality of the framework, both hands are processed independently. When the analysis starts, the angle of motion is transformed to an object containing one of eight possible directions, represented by a number between 0 and 7, and a counter. When two consecutive angles are reduced to the same direction, the counter of the previous object is increased instead of making a new object. This eases the later processing of these directions and limits the necessary storage. After the user finishes the motion, all the stored data is processed. First, the directions are divided into 4 segments using the total number of directions. In each segment, the most common direction is calculated. The resulting 4 directions give the motion vector for that hand. When only one of the hands is used
to perform a gesture, the motion vector of the stationary hand consists of four identical, arbitrary values. This value is considerably larger than each of the possible directions. This allows the RDF to learn the difference between a valid motion vector and a stationary one. It should be noted that the time needed to complete the motion is not used in any calculations, nor does it have any influence in them. As long as the hands move faster that the MotionThreshold, gestures can be detected. The transformation from skeleton frame to motion vector converts the entire range of motion to one of 4096 different possibilities. This decreases the dependency on the accuracy of the camera, by limiting the number of possible outcomes. At the same time, this forms no restriction on the possible movements. Once the complete motion vector, which contains 8 fields, has been calculated, it is passed on to the classification. B. Classification In order to generate an RDF decision tree, training data is used. This data shows a number of motion vectors, and tells the system which gesture it represents. To train an RDF decision tree, the training data is randomly split into a set used for training and a set used for evaluation. The ratio between these sets has an impact on the quality of the resulting classification. For the ratio, a value should be chosen between 0 and 1, depending on the desired qualities of the decision tree. This process is repeated multiple times, resulting each time in different decision trees. To classify a new input, this input is evaluated with all the created decision trees. The answer of the system is the average of the results of each tree. The number of trees has a moderate influence on the accuracy of the resulting classification. In the classification used for this framework, the change from 500 trees to 1000 trees only yielded an increase of 1.6% in accuracy. In the training of the ALGLIB RDF decision tree, there are a number of important initialization values. The two most important values are RDFRatio and RDFTrees. RDFRatio determines the ratio that is used to split the data into the two sets. RDFTrees tells the system how many trees it should generate. In figure 1, the influence of RDFRatio is demonstrated. During this test, the value of RDFTrees was kept at 500. The used values in the chart were calculated by summing up all the errors and dividing the sum by the number of tested vectors.
Now that the desired accuracy has been achieved, the selected gestures were tested. C. Usability A test application was developed on the generic framework. To control this application, 4 gestures were created in accordance to the demands of the client. These gestures are: (right handed) swipe left and (left handed) swipe right to change the displayed image, scale up by moving the hands away from each other and scale down by moving the hands towards each other. The gestures were based on commonly used inputs for touch screens. The application provides user feedback by drawing two circles on top of the content, mimicking the movements of both hands. This helps users to know how the system is interpreting their motions. Without any form of user feedback, it is difficult to assess how the system interprets the movements. The application was used to perform a usability study. During the course of this study, the quality of the framework greatly improved. These improvements were made using the comments of the test subjects. These improvements included a better value for MotionThreshold and changes in the used classifications. The results of the usability study were positive. It should be noted that a short user training was necessary, because most users were not familiar with the possibility to control a screen using motion. After this training, the interaction could be used as intended. Some comments of the performed usability study concerned limitations that were in place due to the used camera. The most frequent comment was made about what happened when joint occlusion occurred. Joint occlusion is caused by moving one skeletal joint in front of another one. This greatly decreases the accuracy of both joints, possibly resulting in incorrect classifications. III. R ESULTS The developed generic framework was used to create a test application. This application delivers a real time gesture identification at 25 frames per second. As there is no need for calibration, this application can be used as a basis for interactivity in digital signage. The suggested set of gestures was tested with a usability study. The study resulted in the acceptance of the selected gestures. At the end of the time frame for this research, some details about the successor of the Kinect camera were released. The use of this new camera could result in major improvements, not only towards the accuracy of the detection at greater distances, but it could also open new ways to interact with this camera. IV. C ONCLUSION
Fig. 1. Influence of RDFRatio on the accuracy using test data.
This shows that the RDF reaches a stable and desired accuracy when RDFRatio is bigger than 0,5.
The first research question concerns the possible use of decision trees for motion analysis. This has been proven by developing a generic framework that classifies gestures using RDF. The second research question addresses the usability of the selected set of gestures. These have been tested by making them the subject of a usability study, resulting in confirming the usability of these gestures.
INHOUDSOPGAVE
viii
Inhoudsopgave Voorwoord
i
Toelating tot bruikleen en publicatie op DSpace
ii
Overzicht
iii
Extended abstract
vi
Inhoudsopgave
viii
Gebruikte afkortingen
x
1 Inleiding
1
2 Literatuurstudie 2.1 Motivatie . . . . . . . . . . . . . . . . . . . . . . 2.2 Methodes tot interactie . . . . . . . . . . . . . . . 2.3 Traditionele beeldvorming en beeldverwerking . . 2.4 3D beeldvorming . . . . . . . . . . . . . . . . . . 2.4.1 Meerdere camera’s . . . . . . . . . . . . . 2.4.2 Time of Flight . . . . . . . . . . . . . . . . 2.4.3 Gestructureerd licht . . . . . . . . . . . . 2.4.4 Vergelijking . . . . . . . . . . . . . . . . . 2.4.5 Microsoft Kinect . . . . . . . . . . . . . . 2.5 Hand detection . . . . . . . . . . . . . . . . . . . 2.6 Gesture recognition . . . . . . . . . . . . . . . . . 2.6.1 Werking . . . . . . . . . . . . . . . . . . . 2.6.2 Gesture detection met een Kinect camera . 2.7 Gesture interaction . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
4 4 4 7 8 9 9 11 12 14 16 17 17 20 21
INHOUDSOPGAVE 3 Architectuur 3.1 Hardware . . . . . . . . . 3.2 Software . . . . . . . . . . 3.3 Eigen systeem . . . . . . . 3.3.1 Overzicht . . . . . 3.3.2 View . . . . . . . . 3.3.3 Gesture Framework 3.3.4 Classificatie . . . .
ix
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
25 25 26 28 28 31 36 43
4 Optimalisaties 4.1 Uitbreidingen . . . . . . . . . 4.2 Random Decision Forest . . . 4.3 Systeemconstanten . . . . . . 4.4 Optimalisatie van het systeem 4.5 Kinect 2 . . . . . . . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
45 45 46 51 56 57
5 Resultaten 5.1 Testopstelling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Resultaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
61 61 62
6 Besluit en toekomstperspectieven 6.1 Besluit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 Toekomstperspectieven . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
65 65 66
Bibliografie
68
Lijst van figuren
70
Lijst van tabellen
71
. . . . . . .
GEBRUIKTE AFKORTINGEN
x
Gebruikte afkortingen RDF
Random Decision Forest
SDK
Software Development Kit
ToF
Time of Flight
IR
Infrarood
FOV
Field Of View
MHI
Motion History Image
MEI
Motion Energy Image
FPS
Frames Per Second
INLEIDING
1
Hoofdstuk 1 Inleiding Reclame is een belangrijk en bepalend medium binnen de marketingstrategie van bedrijven. Het laat toe om hun producten bekend te maken bij het publiek. Er is een dalende kost van scherm hardware en een stijgende beschikbaarheid van netwerktoegang. Deze toepassing biedt een aantal voordelen ten opzichte van het gebruik van de klasssieke statische borden. Naast het duidelijke ecologische voordeel bieden beeldschermen ook meer mogelijkheden dan hun papieren tegenhangers. Zo kan er gebruik gemaakt worden van bewegend beeld, wat sneller de aandacht van voorbijgangers zal trekken dan een stilstaande afbeelding. De mogelijkheid om van op afstand de afbeelding te wijzigen is voor veel bedrijven zeer interessant. Het gebruik van een instelbare rotatie van content biedt grote voordelen ten opzichte van vroegere reclame mogelijkheden. Hierdoor verschuift de voorkeur van advertisers steeds meer naar het gebruik van beeldschermen. Deze sector noemt men digital signage. dZine, een dochterbedrijf van Barco, is een bedrijf dat zich specialiseert in de hardware die hierbij nodig is. Het bedrijf levert op maat gemaakte oplossingen voor hun cli¨enten die digital signage willen integreren in reeds bestaande of in nieuwe producten. Deze oplossingen worden gemaakt in samenwerking met een aantal andere bedrijven. Dit zijn dan de bedrijven die display hardware voorzien en de content voor op de schermen. Deze scriptie en de bijhorende masterproef werden uitgevoerd bij dZine, in functie van hun steeds innoverende houding tegenover de concurrerende bedrijven in deze markt. Veel bedrijven maken al lange tijd gebruik van digital signage om via multimedia content reclame te maken. Hierbij valt het op dat interactiviteit bij digital signage nog steeds zo goed als afwezig is. Door de interactie ontstaat een gepersonaliseerde betrokkenheid
INLEIDING
2
bij de boodschap, waardoor de potenti¨ele klant als dusdanig deel gaat uitmaken van de boodschap. Deze benadering is sterk vernieuwend en biedt een grote meerwaarde ten opzichte van bestaande vormen van reclame. Hierdoor is het ook mogelijk om beter in te spelen op de interesses van de gebruikers. Zo kan een beeldscherm niet alleen reclame tonen, maar ook gebruikt worden als informatiepunt om bijvoorbeeld te zoeken waar een winkel zich bevindt in het winkelcentrum. Een andere mogelijkheid is de content op het scherm aanpassen naar gelang het geslacht en leeftijdscategorie van de voorbijgangers. Audience measurement wordt in zekere zin reeds gebruikt, maar ook deze innovatie heeft zijn plaats nog niet gevonden in het straatbeeld. Interactiviteit bij digital signage wordt pas echt bruikbaar als er niets van extra tools nodig is om interactie toe te staan tussen de gebruiker en het beeldscherm. Ook moet kalibratie voor gebruik zo veel mogelijk vermeden worden. Natuurlijk zijn aanraakschermen hiervoor perfect. Bij digital signage wordt echter veel geopteerd voor grote displays, om zo een groter publiek te kunnen bereiken met een scherm. Hierdoor moet het scherm verder geplaatst worden van het publiek, waardoor een aanraakscherm niet mogelijk is. Ook worden de beeldschermen van digital signage meestal buiten het bereik van het publiek geplaatst om vandalisme te voorkomen. Vanwege deze redenen gaat de voorkeur voor interactie uit naar audio of video analyse. Bij video gebaseerde interactie wordt veelal gebruik gemaakt van een 3D camera. Bij dit soort camera’s krijgen we naast een kleurbeeld ook een dieptebeeld, waardoor de mogelijkheden van deze camera’s in zake van beelddetectie veel groter zijn dan bij camera’s die enkel een kleurenbeeld voorzien. Bij beelddetectie wordt vooral gekeken naar ”Gesture Detection”. Gesture detection is een methode waarbij het camerabeeld geanalyseerd wordt om zo vooraf opgestelde patronen of bewegingen te detecteren in het videobeeld. Ook de manier van communiceren tussen de gebruiker en het systeem is belangrijk. De gebruikte gestures moeten intu¨ıtief en eenvoudig zijn, maar er mag niet ingeboet worden op bruikbaarheid. Een voorbeeld van een intu¨ıtieve handbeweging is de swipe. Net zoals je een swipe hebt om te scrollen op een aanraakscherm, kan een camera ook een swipe detecteren om bijvoorbeeld te scrollen in een document, volgende of vorige afbeelding te selecteren of naar de volgende slide te gaan in een presentatie. In deze thesis ligt de focus van de gesture detection niet bij de bewegingsherkenning zelf. Hierover zijn al meerdere onderzoeken en papers geschreven. Deze thesis handelt vooral
INLEIDING
3
over het onderzoek naar een robuuste methodiek om gedetecteerde bewegingen te classificeren. Hierbij is het belangrijk dat er geen kalibratie nodig is om de interactie te beginnen. Ook een usability studie is hier aan de orde, omdat we moeten uit gaan van een zo eenvoudig mogelijke manier van interactie. Naast de literatuurstudie worden in deze scriptie ook nog het ontwerp, de implementatie besproken en de bijbehorende resultaten besproken, om te eindigen met de conclusie en een aantal mogelijke toekomstperspectieven van dit onderzoek.
LITERATUURSTUDIE
4
Hoofdstuk 2 Literatuurstudie 2.1
Motivatie
Deze literatuurstudie dient hoofdzakelijk om het vakgebied te onderzoeken, de mogelijkheden en beperkingen te ontdekken alsook te zien welke zaken reeds onderzocht werden. Zo wordt dubbel werk vermeden en kan meer aandacht besteed worden aan de weerhouden onderzoekspunten. Daarom is het dus belangrijk dat de literatuurstudie zo volledig mogelijk wordt uitgevoerd, hoewel het nooit mogelijk is om alle relevante informatie te ontdekken en hierin te vermelden. De studie begint met een onderzoek naar verschillende methodes tot interactie. De bedoeling is om hieruit de meest geschikte methode te selecteren voor interactie met grote, publieke schermen.
2.2
Methodes tot interactie
Sinds het ontstaan van grafische user interfaces is er nood geweest aan methodes tot interactie met deze interfaces. De meest gebruikte manier hiervoor is nog steeds via toetsenbord en muis. Hoewel dit al volledig ingeburgerd is, is dit een weinig intu¨ıtieve interactiemethode. Dit is de reden waarom touch screens reeds lange tijd een steeds groeiend marktaandeel innemen bij mens-computer interactie. Besturing onder de vorm van aanraking is een zeer intu¨ıtieve manier, waar zelfs kinderen al heel snel mee kunnen werken. In dit onderdeel van de literatuurstudie worden een aantal verschillende interactiemogelijkheden onderzocht. Deze zullen op het einde van deze sectie met elkaar vergeleken worden aan
2.2 Methodes tot interactie
5
de hand van een concept matrix. De onderzochte mogelijkheden zijn: cursor gebaseerde interactie, touch screens, gestures en stemherkenning. Naast deze vier mogelijkheden is ook oogtracking een opkomende interactiemethode [1]. Daar deze methode enkel werkt op zeer korte afstand werd het niet opgenomen in verdere evaluaties. De belangrijkste aandachtspunten zijn hier bruikbaarheid op grote schermen, de nood aan externe tastbare hardware, intu¨ıtiviteit, robuustheid, sociale acceptatie en globale bruikbaarheid. De nood aan externe tastbare hardware wordt opgevat als een nadeel. Dit doordat de tastbare hardware onderhevig kan zijn aan slijtage en bijgevolg minder goed kan functioneren. Ook vergroot dit de kansen op vandalisme. Wegens de gerichte doelgroep van dit onderzoek is intu¨ıtiviteit een sterke eis. Grotere intu¨ıtiviteit betekent minder nood aan user training. Dit bevordert de directe bruikbaarheid van de toepassing en werkt drempelverlagend. Sociale acceptatie verlaagt de drempel om het systeem voor het eerst te gebruiken. Bij globale bruikbaarheid wordt aandacht besteed aan een aantal mogelijke variabelen. Dit zijn variabelen die alleen maar opgaan bij een enkele techniek. Deze variabelen zijn dus sterk afhankelijk van het soort interactie. In een onderzoek gevoerd door Badillo et. Al. [2] wordt aangetoond dat het gebruik van cursor gebaseerde interactie methoden bij grote of publieke schermen af te raden valt. Bij een stijgende grootte van het scherm daalt de relatieve grootte van de cursor ten opzichte van dit scherm. Door de stijgende grootte moet de cursorsnelheid verhoogd worden. Indien dit niet gebeurt, zal het te lang duren voor de gebruiker om te navigeren op het scherm. De verhoogde cursorsnelheid heeft als nadeel dat dit het visueel bijhouden van de cursor sterk bemoeilijkt. Het spreekt van zelf, dat het gebruik van cursor gebaseerde interactie nood heeft aan externe tastbare hardware. Hetzij muis en toetsenbord, hetzij laser aanduiding of andere methodes. De accuraatheid die vereist wordt door deze interactie kan (nog) niet behaald worden aan de hand van camera detectie. Aangezien dit een reeds lang gebruikte interactie methode is, is er hier een heel sterke robuustheid en sociale acceptatie. In hetzelfde onderzoek stelt men dat touchscreens een zeer goede en intu¨ıtieve interactie bieden. Nog voordelen hiervan zijn de snelle leercurve en afwezigheid van losse of beweegbare onderdelen. Maar touchscreens hebben ook nadelen. Door de fysieke bewegingen die nodig zijn voor interactie met grote schermen kan na langdurig gebruik vermoeidheid optreden. Het publieke gebruik van een touchscreen kan resulteren in krassen op het scherm. Indien de user interface niet voldoende aangepast wordt op deze interactie kan occlusie voorkomen ter hoogte van de handen. Deze occlusie treedt op wanneer de handen zich tussen een deel van het scherm en de ogen bevinden, waardoor een deel van de content
2.2 Methodes tot interactie
6
niet zichtbaar is. Ondertussen wordt touchscreen interactie gezien als een intu¨ıtieve communicatie tussen de gebruiker en het scherm. Ook zien we een acceptabele robuustheid en een zeer grote sociale acceptatie. Bij de globale bruikbaarheid moet opgemerkt worden dat het scherm al heel snel vingerafdrukken zal vertonen. Ook wordt de interactie moeilijker indien de gebruiker handschoenen draagt. Gesture interaction zorgt voor een intu¨ıtieve connectie tussen de gebruiker en het scherm. Aangezien dit een relatief nieuwe interactie methode is voor het grote publiek, is er een lagere sociale acceptatie. Gesture interaction is goed geschikt bij grote schermen. Dit doordat de interactie gebeurt aan de hand van natuurlijke bewegingen en signalen. Het is een schaalbare methode die toe laat om in een kleine tijd het systeem te leren beheersen. De robuustheid laat soms nog wat te wensen over bij grotere afstanden. In de toekomst kan dit worden opgelost door het gebruik van betere camera’s en algoritmes. De opmerkingen bij globale bruikbaarheid hierbij zijn belangrijk. De keuze van de bewegingen is essentieel voor het slagen van de interactie. Te veel verschillende bewegingen resulteren in een zeer verwarrende interface voor de gebruiker. Ook zorgen te veel bewegingen voor een langere leertijd. Het gebruik van te weinig bewegingen zal een negatief effect hebben op de navigatiemogelijkheden. Hierdoor zal de gebruiker niet altijd het gewenste doel kunnen bereiken. Mogelijke variaties in belichting kunnen problemen veroorzaken en moeten dus worden opgevangen. Hier is geen nood aan externe tastbare hardware, aangezien de detectiecamera buiten het bereik van de gebruikers kan geplaatst worden. Stemherkenning is net zoals gesture interaction een interactie methode die een steeds stijgend marktaandeel inneemt bij het grote publiek. De bruikbaarheid van stemherkenning wordt niet gerelateerd aan de grootte van het scherm. Dit wordt eerder be¨ınvloed door de aanwezigheid van omgevingsgeluid. Hierdoor lijkt deze methode minder geschikt bij publieke beeldschermen. Verbale communicatie is een zeer intu¨ıtieve interactie methode die dagelijks gebruikt wordt bij sociaal contact. Bij globale bruikbaarheid moet genoteerd worden dat de bruikbaarheid van deze interactie methode daalt in regio’s met een hoge densiteit aan dialecten. Ook kan het moeilijk zijn om de actieve gebruiker te selecteren en deze stem te blijven volgen. Nu de verschillende mogelijkheden besproken zijn kunnen we deze vergelijken aan de hand van een concept matrix. Gelieve deze te vinden in onderstaande tabel 2.1. Uit deze concept matrix en voorgaande bespreking blijkt dat zowel touch screens als gestures een mogelijke manier tot interactie zijn. Bij touch screens zien we echter meer nadelen
2.3 Traditionele beeldvorming en beeldverwerking
Cursor Touch Gestures Stem
Bruikbaarheid Tastbare Hardware + + + ++ -
Intu¨ıtief Robuust Sociale Acceptatie + + ++ + + + ++ + 0 ++ 0
7 Andere problemen ++ + +
Tabel 2.1: Concept matrix van de mogelijke interactie methodes
dan bij gestures wanneer gekeken wordt naar interactie met grote publieke schermen. De grote nadelen bij gesture interaction vormen zich bij sociale acceptatie en accuraatheid van de verwerking. Deze problemen kunnen allebei opgelost worden met tijd. De sociale acceptatie zal enkel bevorderd worden, indien er meer toepassingen en mogelijkheden met bewegingsinteractie op de markt komen. De accuraatheid van gesture detection is al veel gestegen met de komst van 3D camera’s. Het nadeel van deze camera’s is dat er meestal met een lagere resolutie gewerkt wordt. Hierdoor daalt de kwaliteit van de detectie sterk indien de gebruiker zich te ver van het scherm bevindt. De accuraatheid zal blijven stijgen bij het gebruik van betere camera’s en geavanceerdere algoritmes. Nu de manier tot interactie geselecteerd is zullen we ingaan op camera detectie. Eerst wordt traditionele beeldvorming besproken. Daarna kijken we naar 3D beeldvorming.
2.3
Traditionele beeldvorming en beeldverwerking
Bij traditionele RGB camera’s wordt het beeld gevormd met behulp van CCD(ChargeCoupled Device) of CMOS(Complementary Metal-Oxide-Semiconductor) beeldsensoren. Een gedetailleerde werking is niet belangrijk voor dit onderzoek. Maar om de voor- en nadelen te ontdekken is toch een zeker basisnotie van de werking nodig. Traditionele camera’s voorzien de omzetting van een optisch beeld naar een elektrische representatie van dat beeld. Dit signaal kan direct uitgelezen worden door een verwerkende computer om hierop beeldverwerking toe te passen. Dit opent een grote lijst aan mogelijkheden, zoals proces controle en beveiligingscamera’s. Dankzij de vele verbeteringen op het vlak van micro-elektronica is het mogelijk om meer sensoren op hetzelfde oppervlak te plaatsen. Hierdoor kunnen afbeeldingen van hogere resolutie gemaakt worden. Hoe hoger de resolutie, hoe beter de details. Met betere details openen meer mogelijkheden tot beeldverwerking. Dit resulteert echter ook in grotere bestanden en langere verwerkingstijden. Bij beeldverwerking voor bewegingsherkenning is het belangrijk dat er uitgegaan wordt
2.4 3D beeldvorming
8
van een goede kwaliteit van afbeeldingen. Dit doordat de belangrijke beweging zich slechts voordoet in een klein deel van het beeld. Om een optimale detectie te hebben kan het gewenst zijn om een onderscheid te maken tussen de gebruiker op de voorgrond en alles wat in de achtergrond gebeurt. Dit is echter niet zo eenvoudig met een traditionele camera. Omdat er niets van extra informatie gegeven wordt behalve het kleurbeeld, moet de achtergrond subtractie berusten op veronderstellingen. Deze veronderstellingen kunnen bijvoorbeeld een schatting van diepte zijn aan de hand van relatieve grootte van objecten in de scene. Hier zit dus een eerste nadeel van traditionele camera’s. Alles van extra informatie dat nodig is om optimale verwerking te garanderen moet uit de afbeelding gehaald worden aan de hand van veronderstellingen. Dit kan fouten introduceren die ongewenste resultaten opleveren. Een tweede nadeel doet zich voor bij variabele belichtingswaarden. Indien de intensiteit van het omgevingslicht wijzigt kan dit een zeer grote invloed hebben op de kwaliteit van het beeld. Zo kunnen er te veel donkere gebieden ontstaan in de afbeelding waardoor correcte detectie bemoeilijkt wordt. De voordelen van automatische cameradetectie spreken voor zich. Er is een snellere verwerking dan bij manuele controle van het beeld. Onder manuele controle verstaat men een arbeidskracht die de beelden bekijkt en analyseert. Naast snelheid biedt automatisering van dit proces ook voordelen naar volledigheid en blijvende accuraatheid. Een persoon kan onmogelijk het volledige beeld analyseren op elk mogelijk ogenblik. Bij verwerkende software is dit wel mogelijk. Ook zijn er sterke voordelen bij de automatisering van processen. Dit staat toe om sneller te werken, met betere resultaten. Nu het duidelijk is welke voor- en nadelen er zijn bij cameradetectie, wordt aangetoond dat het mogelijk is om de voordelen nog te vergroten aan de hand van 3D beeldverwerking, terwijl de nadelen afgezwakt worden.
2.4
3D beeldvorming
Bij dit onderdeel wordt onderzoek gevoerd naar de verschillende mogelijkheden om diepte te schatten met behulp van een of meerdere camera’s. Eerst wordt een opstelling van meerdere camera’s besproken die de diepte bepalen aan de hand van triangulatie. Daarna komt Time of Flight en gestructureerd licht, om te eindigen met de Microsoft Kinect.
2.4 3D beeldvorming
2.4.1
9
Meerdere camera’s
Indien men een dieptebeeld wil genereren aan de hand van gewone camera’s, kan men hiervoor berusten op de werking van de ogen. Met behulp van triangulatie wordt uit het beeld van 2 of meer camera’s een schatting gemaakt van de diepte van de objecten in de scene. Hierbij is een vaste, gekende afstand tussen de camera’s essentieel en is een zo groot mogelijke overlap van het gezichtsveld gewenst. Deze techniek valt onder de passieve diepteberekeningen. Dit doordat er geen actieve lichtbron nodig is om de werking te garanderen. Stereovisie is een passieve diepteberekeningsmethode met 2 camera’s die berust op de werking van de ogen. De afstand tot het object in de scene wordt berekend aan de hand van triangulatie. Via de positie van het object in elke camera, worden 2 hoeken bepaald. Deze hoeken, in combinatie met de gekende afstand tussen beide camera’s, geven voldoende informatie om de afstand te berekenen tot het object. Net zoals bij de menselijke ogen is het inschatten van relatieve afstanden eenvoudiger en correcter naarmate de objecten zich dichter bij de camera opstelling bevinden. Triangulatie voor het bepalen van diepte is een zeer arbeidsintensief proces dat maar weinig tijd laat voor de rest van de applicatie bij realtime verwerking. Ook is er een kleinere resulterende field of view doordat enkel het gedeelte waarin er overlap is tussen de camera’s bruikbaar is. Naar synchronisatie tussen de beelden is er een sterk probleem. Omdat de camera’s elk vanuit een verschillend standpunt filmen, moet eerst de overlapping van hun beelden worden bepaald. Bij het automatisch vinden van corresponderende pixels kunnen problemen optreden die grote vertragingen veroorzaken. Deze manier van diepteberekening berust op het gebruik van kleurencamera’s. Dit wil zeggen dat de nadelen van deze camera’s ook hier van toepassing zijn. Hieronder valt de gevoeligheid voor lichtvariaties, slechte performantie bij reflecterende oppervlaktes en vervormde informatie bij schaduwen.
2.4.2
Time of Flight
Bij ToF wordt gebruik gemaakt van infrarood licht om de afstand tussen de camera en het object te bepalen. Oudere systemen maken vooral gebruik van de duur van de reistijd om zo de afstand te bepalen. Dit gebeurt door zeer korte lichtpulsen uit te sturen en de tijd te meten totdat de sensor het signaal opnieuw opvangt. Bij de nieuwere systemen maakt
2.4 3D beeldvorming
10
men gebruik van de faseverschuiving die resulteert bij reflectie. Hierdoor is er geen nood meer aan dure hardware die de mogelijkheid heeft om zeer korte en krachtige lichtpulsen te genereren [3]. Dit opent de mogelijkheid om een grotere variatie aan lichtbronnen en sensoren te gebruiken. Om aan de hand van ToF een dieptebeeld te genereren wordt gebruik gemaakt van continuous wave modulation. Hierbij wordt een continue golf uitgestuurd met een vaste frequentie. De reflectie van deze golven wordt voorgesteld in afbeelding 2.1. De keuze van frequentie ligt vrij, maar valt vaak op 20MHz. Een trillingsfrequentie van 20MHz resulteert in een meetbereik van 7,5m [4]. Voor de uitgestuurde golf wordt meestal geopteerd voor een blokgolf. De stralen worden gedetecteerd door een infrarood camera. Deze meet van elke ontvangen pixel de faseverschuiving. Dan rest er voor elk signaal een eenvoudige berekening om de diepte te bepalen. Naast een infraroodsensor beschikken de meeste ToF camera’s ook nog over een kwalitatief superieure camera die zichtbaar licht registreert. De combinatie van de afstandsmeting met het kleurenbeeld resulteert in een digitale reconstructie van de scene.
Figuur 2.1: het verloop van een infrarode lichtpuls bij ToF dieptemeting
Bij het gebruik van continuous wave modulation moet het resultaat ge¨ıntegreerd worden naar de tijd. Deze integratie is gewenst om de hoeveelheid ruis te verminderen. De integratie heeft als nadeel dat deze een limiet plaatst op het aantal beelden per seconde. Indien de integratietijd niet correct gekozen wordt, kan dit resulteren in ongewenste gevolgen. Bij een te korte integratietijd zal er onvoldoende ruis weggefilterd worden. Bij een te lange integratietijd kan er motion blur optreden. De integratie in de tijd kan gezien worden als een moving average filter. Indien de tijd te kort is, worden te weinig afbeeldingen gebruikt om het gemiddelde te bepalen. Dus wordt niet alle ruis weggewerkt. Bij een te lange tijd wordt met een te groot aantal afbeeldingen gewerkt. Dit resulteert in een overlap, waarbij
2.4 3D beeldvorming
11
informatie die niet meer relevant is toch nog wordt gebruikt in de berekeningen. Zo krijgt men de indruk van motion blur. Er moet dus een goede keuze gemaakt worden bij het bepalen van de tijdsframe.
2.4.3
Gestructureerd licht
Dieptebepaling met gestructureerd licht berust op de optische vervorming van een patroon bij projectie op een niet-vlak oppervlak. Een visuele voorstelling van deze vervorming wordt gegeven in afbeelding 2.2. Het gebruikte patroon is meestal een wolk van pixels die ofwel in het bijna-zichtbare optische gebied vallen, ofwel in het zichtbare gebied. Door het verschil in positie tussen de projector en de sensor wordt de optische vervorming opgemeten. Aan de hand van gekende algoritmes wordt hieruit diepte informatie berekend. Deze methode werkt, net zoals stereovisie, met triangulatie om de oppervlaktevorm te bepalen. Bij de verwerking is het geprojecteerde patroon gekend. Hierdoor is geweten waar elke pixel zich zou moeten bevinden in een vlakke scene. Uit het gemeten verschil in positie van elke pixel en de gekende afstand tussen de projector en de sensor wordt de afstand berekend. [5]
Figuur 2.2: De optische vervorming van een gestructureerd lichtpatroon op een niet-vlak oppervlak, gedemonstreerd met LumiGrids.
Een nadeel van het gebruik van gestructureerd licht is dat er een extra patroon wordt ge¨ıntroduceerd in de scene. Hierdoor worden de originele kleuren vervuild en werkt het
2.4 3D beeldvorming
12
programma met een vertekend beeld. Een mogelijke oplossing hiervoor is om het patroon in de scene te plaatsen aan de hand van een infrarood projector. Om dan het patroon opnieuw te detecteren is er echter wel naast een kleurencamera ook een infraroodcamera nodig. Dit is de manier waarop de Microsoft Kinect sensor diepte detecteert en zal dus ook met meer diepgang besproken worden in 2.4.5. Het eenvoudigste patroon dat hiervoor kan gebruikt worden is een eenvoudige afwisseling van witte en zwarte strepen. Dit cre¨eert echter een zeer storende vervuiling in de scene. Dit patroon is niet accuraat indien het geprojecteerd wordt op een scene met grote diepteverschillen. Dit kan resulteren in overlap van lijnen bij projectie op een vlak dat loodrecht op de projectielens staat. Een beter resultaat wordt bevonden bij een patroon dat is opgebouwd uit gekleurde strepen van meerdere kleuren. Bij het opstellen van dergelijke patronen moet aandacht besteed worden aan de opbouw. Een herhalende volgorde van kleuren moet zo veel mogelijk vermeden worden. Deze patronen zijn ongevoelig voor overlap omdat de unieke volgorde van kleuren nog steeds behouden wordt. Een voorbeeld van dergelijk patroon valt hieronder te vinden bij afbeelding 2.3.
Figuur 2.3: een voorbeeld van een gestructureerd strepenpatroon
2.4.4
Vergelijking
In het algemeen is stereovisie de methode die minst vervuiling in de scene brengt en niet berust op externe lichtbronnen. Het is een goedkope manier om diepte te schatten die snel op te stellen is. De grote nadelen van stereovisie zijn de afhankelijkheid van belichtingswaarden en slechte performantie bij schaduwvorming. Ook textuur en de hoeveelheid gereflecteerd licht spelen een invloed op de accuraatheid van deze methode. In het verwerkingsalgoritme worden de problemen veroorzaakt bij het vinden van corresponderende punten. Dit probleem wordt opgelost door het introduceren van gestructureerde belichtingspatro-
2.4 3D beeldvorming
13
nen. Deze resulteren in een robuustere en accuratere meting die minder afhankelijk is van de textuur van het object. Door de toevoeging van een gestructureerd patroon op de scene kan de volledige meting gebeuren met een enkele camera. Ook wordt het probleem met corresponderende punten opgelost. Actieve dieptemeting met gestructureerd licht wordt veel gebruikt in de industrie door zijn eenvoudigheid en snelheid. Het zorgt echter wel voor een storende toevoeging van een belichtingspatroon. ToF introduceert ook extra licht in de scene, maar hier maakt men gebruik van licht in het niet-zichtbare spectrum. Deze methode geeft het voordeel van een dieptebepaling waarbij heel weinig nabewerking nodig is. Een sterk nadeel naar industrieel gebruik toe voor ToF camera’s is de hoge aankoopkost. Een studie, uitgevoerd door Hussmann et. Al. [4], vergelijkt de performantie van een ToF camera met deze van een stereovisie systeem. Hierin stelt men dat de grote nadelen van stereovision gevonden worden bij de combinatie van de beelden van beide camera’s. Dit resulteert in problemen bij het vinden van corresponderende punten in beide feeds. Doordat enkel de gebieden met corresponderende punten kunnen gebruikt worden verliest een stereovisie camera een groot deel van zijn FOV(Field of View). Deze FOV wordt hoofdzakelijk beperkt door de fysieke opstelling van beide camera’s. Het zoeken van overeenkomstige punten in beide beelden neemt een groot deel van de verwerkingstijd in beslag. Bij regio’s in het beeld met gelijkaardige grijswaarden wordt dit probleem nog groter. Hier is het moeilijk om de exacte overeenkomende punten te vinden. Bijgevolg kan op deze gebieden geen triangulatie worden toegepast om de afstand te meten. Indien dit object een vlakke muur is, is dit een minder groot probleem. Maar als er objecten in de scene staan op verschillende diepte met dezelfde grijswaarden, is het bijna onmogelijk het diepteverschil te meten met stereovisie. ToF camera’s hebben ook hun nadelen, maar in vergelijking met stereovisie zijn deze veel kleiner. De FOV wordt hoofdzakelijk bepaald door de verwerkende software, niet door hardware restricties. We zien een opmerkelijk kleinere verwerkingstijd voor ToF. Voor deze technologie hebben we echter wel een actieve belichtingsbron nodig. Deze vergelijking wordt algemeen voorgesteld aan de hand van een concept matrix in tabel 2.2. Uit deze matrix wordt de conclusie getrokken voor de te gebruiken technologie.
2.4 3D beeldvorming
14
Accuraatheid Snelheid Prijs Lichtvariaties Stereovision 0 + Gestructureerd IR licht +/0 + 0 + Time of Flight + + + Tabel 2.2: Concept matrix van 3D beeldvormingstechnieken
Hieruit blijkt dat zowel gestructureerd licht als ToF een mogelijkheid vormen. De kostprijs zal dus een beslissende factor vormen. Aangezien ToF camera’s heel duur zijn, wordt geopteerd voor een zeer veel gebruikte structured light 3D camera, namelijk de Kinect. Deze camera wordt door Microsoft wereldwijd aangeboden.
2.4.5
Microsoft Kinect
Voor deze masterproef werd gekozen om te werken met de Kinect actieve dieptecamera. Deze keuze werd gemaakt vanuit een economisch standpunt voor dZine, maar ook beschikbaarheid was voor het bedrijf een belangrijk pluspunt. Hiernaast is de Kinect een zeer interessante keuze wegens een grote community-driven support en vele reeds uitgevoerde projecten. Bij vergelijking met andere camera’s die diepte genereren heeft de Kinect een lagere accuraatheid, maar dit wordt gecompenseerd in robuustheid, snelheid en vooral kost. [6] De Kinect is een 3D camera die werkt volgens het principe van structured light. Hierbij wordt echter geen gebruik gemaakt van een lijnenstructuur, maar van een binair dotpatroon. In onderstaande afbeelding 2.4 staat een deeltje van het patroon. Dit patroon wordt uitgestuurd door een infraroodprojector. Verder beschikt de Kinect over een kleursensor, een infrarood sensor en een array van 4 microfoons. De beeldverwerking van de infrarood sensor gebeurt aan de hand van de ge¨ıntegreerde PrimeSense PS1080 SoC. Deze chip, in combinatie met het vaste patroon, laat toe om op een snelle manier de diepte van de objecten in de scene op te meten.
2.4 3D beeldvorming
15
Figuur 2.4: een deel van het gestructureerde IR lichtpatroon van de Kinect camera
Dankzij de array van microfoons is het ook mogelijk om de Kinect te bedienen aan de hand van stemherkenning. Door de onderlinge opstelling van de microfoons en de achterliggende verwerking kan de bron van het geluid bepaald worden. Zo kan het verwerkende programma snel onderscheid maken tussen de stem van de gebruiker en achtergrondgeluid. Indien meerdere stemmen op hetzelfde moment praten is het echter moeilijk om een vaste gebruiker te kiezen. Bij de stemcontrole van de Xbox 360 console wordt deze keuze gemaakt via de fysieke locatie van de stem. Enkel personen die recht voor de Kinect staan kunnen deze bedienen aan de hand van hun stem. Bij een publiek scherm is dit echter geen goede oplossing. Zo zou men een gebied introduceren waar de interactie met het scherm helemaal niet kan werken. Voor de beeldverwerking en gesture detection zal gebruik gemaakt worden van de Kinect SDK. Deze SDK biedt onder andere de mogelijkheid tot skeletal tracking, gezichtsherkenning en object tracking. Skeletal tracking bestaat erin dat humano¨ıde vormen herkend worden en berekend wordt waar het skelet zich bevindt. Hierbij worden de belangrijkste gewrichten aangeduid. Dit opent heel wat mogelijkheden naar gesture detection, het onderwerp dat nu zal besproken worden.
2.5 Hand detection
2.5
16
Hand detection
Vroeger, toen men beschikte over minder krachtige computers, moest men zich voor objectherkenning berusten op externe artefacten. Zo werden extra eisen gesteld aan de gebruikers, wat de algemene bruikbaarheid van dergelijk systeem benadeelt. Deze eisen kunnen het dragen van specifiek gekleurde kledij verplichten of net verbieden, stellen dat de gebruiker speciale handschoenen dient te dragen of sterke beperkingen leggen op de mogelijkheden van de cameradetectie. Sinds de opkomst van krachtige, betaalbare computers is er een steeds stijgende mogelijkheid voor cameradetectie. Robuuste handdetectie is altijd al een obstakel geweest. Dit wegens de grote graad van vrijheid van de vorm, kleur en ori¨entatie van de handen. Detectie aan de hand van huidskleur is een veelgebruikte oplossing, maar geen goede keuze. Hiermee stel je beperkende eisen aan de kledij van de gebruiker. Hier mag ook gesproken worden van een discriminerend aspect voor de gebruikers van een andere huidskleur. Ook zorgt dit ervoor dat het algoritme zeer afhankelijk wordt van de belichting. Dit introduceert de mogelijkheid dat de detectie onder bepaalde belichtingswaarden helemaal niet zal werken. Bij gebrek aan meer robuuste oplossingen gebeurde handdetectie vroeger aan de hand van een combinatie van vorm en kleur. Dit was zeker het geval voor het grootscheepse gebruik van dieptecamera’s. Hierbij kunnen verschillende algoritmes gebruikt worden. Een tweetal robuuste algoritmes zijn detectie met behulp van ”Haar”kenmerken [7] en een combinatie van een getraind huidskleurmodel en een adaptief model [8]. In een studie van Qing et. Al. [7] maakt men gebruik van ”Haar”kenmerken. Object tracking aan de hand van ”Haar”kenmerken is een methodiek die veel gebruikt wordt bij gezichtsherkenning. Maar het kan ook toegepast worden op handherkenning. Een specifieke set van ”Haar-achtige kenmerken wordt geselecteerd op performantie. Met behulp van deze set wordt op een reeks van leerafbeeldingen een reeks bewerkingen uitgevoerd. Deze bewerkingen hebben als doel om via zwak lerend iteratief proces onderscheid te leren maken tussen correcte en foute resultaten. Hierbij wordt elk onderdeel van de set toegevoegd aan het resultaat van de vorige iteratie, telkens met een specifiek gewicht. Het specifieke gewicht zorgt ervoor dat de fouten van de vorige iteratie zo goed mogelijk worden gecompenseerd door het nieuwe toegevoegde patroon. De voordelen van deze manier worden duidelijk bij vergelijking met andere algoritmes. Zo is dit algoritme onafhankelijk van huidskleur, blijft het werken bij variabele belichtingswaarden en is het veel sneller dan globale vorm detectie.
2.6 Gesture recognition
17
Van den Bergh en Van Gool [8] detecteren handen aan de hand van een combinatie van een getraind Gaussiaans kleurmodel en een adaptieve threshold. Het getrainde Gaussiaanse model werkt bij een zeer breed bereik aan huidskleuren. Dit biedt niet alleen als voordeel dat er groot aantal huidskleuren correct gedetecteerd worden. Ook blijft het systeem werken bij grote variaties in belichting. Dit resulteert echter ook in een aantal nadelen. Zo worden ook rode kledij en bruine meubels of vloeren gedetecteerd. Deze nadelen tonen de nood om het Gaussiaanse model te combineren met een adaptieve threshold. Het resultaat van het Gaussiaanse model wordt vergeleken met een threshold waarde die berekend wordt aan de hand van een probabiliteitsverdeling. Deze kansverdeling is een functie van de Gaussiaanse kans op huidskleur en de kans dat het resultaat behoort tot huidskleur, gebaseerd op een histogram van vorige resultaten. Dit resulteert in een accuratere uitkomst, hoewel de histogramverdeling slechts getraind wordt met een klein aantal afbeeldingen. Nu wordt hand detectie en tracking met 3D camera’s besproken. Bij hand detectie wordt de selectie hier eerder gemaakt op basis van de relatieve diepte van objecten ten opzichte van de omgeving.
2.6
Gesture recognition
In de volgende sectie wordt ingegaan op vision-based gesture detectie en herkenning. Eerst worden de algemene werking en de voornaamste aandachtspunten van gesture detection bekeken die relevant zijn voor deze scriptie. Daarna wordt besproken hoe dit specifiek gebeurt met de Kinect.
2.6.1
Werking
Sinds de opkomst van 3D camera’s in de beeldverwerkingsindustrie gaat de keuze voor hand detectie sterk uit naar op diepte gebaseerde methodes. Hierbij wordt een drempelwaarde opgesteld die dichter ligt bij de camera dan de gemiddelde afstand naar het lichaam. Dit kan gedaan worden in de veronderstelling dan de hand zich dichter bij de camera bevindt. Of dat de gebruiker de hand naar de camera uitstrekt. Bij interactie met mensen of computer systemen is dit voor de gebruiker een natuurlijke beweging. Sommige gestures kunnen herkend worden uit enkelvoudige afbeeldingen. Voorbeelden hiervan worden snel gevonden bij non-verbale communicatie. Stop, waarbij handpalm
2.6 Gesture recognition
18
voorwaarts gericht is, vormt hier een goed voorbeeld. Andere gestures kunnen enkel uitgedrukt worden aan de hand van een beweging. Een voorbeeld hierbij is de beweging die aanduidt dat de andere persoon moet naderen. Naast de non-verbale communicatie kunnen ook cijfers getoond worden aan de camera. Dit kan helpen om een selectie te maken in een menu of te antwoorden op multiple choice vragen. Het gebruik van intu¨ıtieve bewegingen biedt een groot voordeel aan het systeem in zake van gebruiksvriendelijkheid. Swipe en pinch-to-zoom kunnen gezien worden als dergelijke bewegingen. Er wordt reeds grootschalig gebruik gemaakt van deze bewegingen bij touchscreens. Dit zorgt er voor dat deze bewegingen al beter gekend zijn. Bij het herkennen van statische gestures is het noodzakelijk dat men werkt met een threshold. Deze voorwaarde moet stellen dat dezelfde handbeweging minstens voor een aantal opeenvolgende afbeeldingen gedetecteerd wordt. Het aantal afbeeldingen dat hierbij gebruikt wordt, moet blijken uit een bruikbaarheidsstudie. Indien dit aantal te laag ligt, zal dit resulteren in een verhoogde kans op foutieve registraties. Bij een te hoge threshold zal de gebruiker de beweging langer moeten aanhouden dan natuurlijk aanvoelt. Dit is ten nadele van de intu¨ıtiviteit van het systeem. In een studie van Francke et. Al. [9] wordt aangetoond hoe statische handdetectie wordt uitgevoerd aan de hand van active learning en AdaBoost(adaptive boosting). Eerst wordt een huidskleur model gevormd aan de hand van de kleurverdeling in het gezicht van de gebruiker. Hierdoor is het model ook afhankelijk van de huidige belichting. Wegens de grote graad aan variabelen bij de detectie van een hand werd geopteerd om de detectie te initialiseren met een specifiek gebaar. Na de detectie wordt de hand niet meer gezocht in de afbeelding, maar wel gevolgd. De tracking wordt uitgevoerd aan de hand van een gemiddelde verschuiving. Deze verschuiving bepaalt voor elk volgend frame een mogelijk interessegebied waarin de hand zich zal bevinden. De detectie van de pose wordt berekend aan de hand van een boomstructuur. De accuraatheid van deze boom wordt opgetrokken met behulp van adaptieve boosting. AdaBoost is een proces waarbij vele zwakke hypotheses gecombineerd worden tot een accuraat en robuust systeem. De zwakke hypotheses worden bij elkaar opgeteld door multiplicatievariabelen. De gebruikte variabelen worden bepaald met behulp van een supervised learning algoritme. De variabele van de huidige hypothese wordt ingevuld om de fout bij het resultaat van de som van alle vorige hypothesen te minimaliseren. Om bewegende gestures te herkennen wordt een reeks van frames bijgehouden waarop berekeningen worden uitgevoerd. Het herkennen van handbewegingen wordt veelal uitgevoerd
2.6 Gesture recognition
19
via verborgen Markov modellen. Bij het opstellen van een verborgen Markov model is het belangrijk om onderzoek te voeren naar een optimale keuze voor het aantal mogelijke verschillende staten. Deze keuze wordt meestal bepaald door een experimenteel trial-anderror proces. Afhankelijk van de keuze kan het vinden van een model sterk be¨ınvloed worden naar complexiteit als deze te hoog ligt. Een te klein aantal verschillende staten kan resulteren in een te eenvoudig proces dat niet correct werkt. [10, 11] Voor de classificatie van lichaamsdelen maakt de Kinect gebruik van Random Decision Forests(RDF). In de paper van Tin Kam Ho [12] wordt de werking uitgelegd. In tegenstelling tot enkelvoudige beslissingsbomen wordt de set van trainingsdata willekeurig opgesplitst in een vast aantal verschillende subsets. In elke geselecteerde subspace wordt een decision tree gemaakt. De training van decision trees wordt verder in dit onderdeel besproken. Eens alle bomen volledig opgesteld zijn, worden deze allen gecombineerd aan de hand van een discriminant functie. Deze functie wordt als volgt opgesteld. Neem T verschillende bomen. Voor elk punt x is vj (x) het eindpunt bij de boom Tj . Laat nu de kans dat x tot klasse c zal behoren genoteerd worden als P (c|vj (x)). De waarde van deze kans wordt gegeven door formule 2.1. P (c, vj (x)) P (c|vj (x)) = Pn l=1 P (cl , vj (x))
(2.1)
Deze waarde wordt benaderd door de fractie van het aantal punten van klasse c in vergelijking met het totaal aantal punten toegekend aan vj (x). Door de gekozen trainingsmethode zijn de bomen volledig gesplitst. Hierdoor zullen de meeste eindpunten slechts 1 klasse bevatten, waardoor deze benadering bijna altijd gelijk is aan 1. De discriminant gc (x) is gedefinieerd in formule 2.2. t
1X b P (c|vj (x)) gc (x) = t j=1
(2.2)
De beslissingsregel stelt dat men x toekent aan de klasse c waarvoor de discriminant het grootst is. De combinatie van alle getrainde bomen resulteert in een beslissingsmethode die een robuuster resultaat levert dan elk van de afzonderlijke bomen. Er kan aangetoond worden dat de accuraatheid van de discriminantfunctie vergroot met een stijgende waarde van T.
2.6 Gesture recognition
20
Voor de training van de bomen stelt Tin Kam Ho twee verschillende methodes voor, central axis projection en perceptron training. Central axis projection is een iteratief scheidingsproces. Hierbij worden de 2 klassen geselecteerd waarvan de gemiddelden de grootste Euclidische afstand hebben tot elkaar. Er wordt een scheiding voorgesteld die loodrecht ligt op de lijn tussen deze klassen. De resulterende scheiding is deze waarbij elke klasse in het gebied volledig aan 1 kant ligt van deze scheiding. Zo wordt het gebied gesplitst in 2 nieuwe gebieden. Dit volledige proces wordt telkens herhaald op de bekomen gebieden tot alle klassen ingedeeld zijn. Perceptron training gaat ook uit van de 2 verst verwijderde klassen. Deze twee klassen worden aan een set S1 of S2 toegekend. Nu wordt elke resterende klasse toegevoegd aan ofwel S1 of S2 . De indeling hangt af van de minimale afstand tussen deze klasse en de beginklassen. Nu worden scheidingen gezocht om S1 en S2 te splitsen. De geselecteerde scheiding is deze die het minst aantal punten aan de verkeerde kant van de scheiding heeft. Nu wordt in zowel S1 als in S2 dit proces herhaald totdat alle klassen afgezonderd zijn. RDF is een zeer snel en accuraat indelingsalgoritme, hoewel de accuraatheid sterk afhankelijk is van de gebruikte trainingsdata. Het is echter niet gemaakt om te werken op temporele data. Daarom zal voor de classificatie van gestures gebruik gemaakt worden van temporele transformatie. Een aantal opeenvolgende frames die een beweging bevatten kunnen voorgesteld worden aan de hand van een combinatie van een Motion Energy Image(MEI) en een Motion History Image(MHI) [13]. Deze bewegingsbeelden kunnen wel gebruikt worden als input voor de RDF classificatie. Dit idee vormt een tweede mogelijk onderzoeksluik. Hierbij wordt geen gebruik gemaakt van de werking van MHI, maar de verwerking van de inkomende data berust op het idee achter dit proces. Er wordt gewerkt met het verschil tussen opeenvolgende afbeeldingen om de verplaatsing van gebieden zoals lichaamsdelen te bepalen. Nu wordt aandacht besteedt aan de gebruikte sensor voor deze masterproef, namelijk de Kinect. Er wordt ingegaan op hoe handdetectie werkt op dit platform en welke hulpmethodes er aanwezig zijn.
2.6.2
Gesture detection met een Kinect camera
Zoals eerder uitgelegd is de Kinect een dieptecamera die gebruik maakt van gestructureerd licht. Aan de hand hiervan wordt een dieptebeeld gegenereerd door de hardware die samen met het kleurenbeeld wordt doorgegeven aan de verwerkende computer. Bij het maken van
2.7 Gesture interaction
21
initi¨ele demo’s zal gebruik gemaakt worden van de bijgeleverde SDK. Deze SDK staat toe om op een snelle manier skeletal tracking te gebruiken. Hierdoor kan meer tijd gespendeerd worden aan het selecteren van intu¨ıtieve bewegingen en een usability onderzoek. Bij het gebruik van een 3D camera in een publieke omgeving ligt een deel van de uitdaging bij het selecteren van de actieve persoon. Hierbij zal skeletal tracking een groot voordeel bieden. Naast een groot verschil in performantie en verwerkingssnelheid, biedt tracking ook het voordeel van grotere accuraatheid, indien het vergeleken wordt met telkens opnieuw de actieve gebruiker te berekenen [14]. De Kinect SDK biedt ook de mogelijkheid om met de ingebouwde array van microfoons te werken. Deze array kan in latere stadia toelaten om naast gesture detection ook via stemherkenning het systeem te bedienen. Ook kan dit gebruikt worden als initialisatie voor de actieve gebruiker. Uit de informatie verkregen van het geluid, kan de oorsprong van de stem vastgelegd worden en zo heel snel de plaats van de gebruiker in het beeld bepaald worden. Hiermee wordt het onderdeel over gesture detection afgesloten. Nu wordt er gekeken naar gesture interaction. De volgende sectie handelt niet meer over de pure technische aanpak van bewegingscontrole, maar wel over de interactie tussen de gebruiker en het scherm.
2.7
Gesture interaction
In dit onderdeel wordt er ingegaan op het menselijke aspect van dit onderzoek. De resultaten van eerder uitgevoerde onderzoeken, het belang van intu¨ıtieve bewegingen en een eenvoudige interface worden besproken. Daarnaast komt de gemiddelde gebruiker van een publiek scherm aan bod en wordt gezocht naar manieren om de aandacht te vestigen en te houden. In een onderzoek uitgevoerd aan de universiteit van Lancaster [15] werd aandacht gegeven aan het gedrag van de gemiddelde voorbijganger van een publiek scherm. De opstelling was hier een groot scherm met een 3D camera die de mogelijkheid bood voor interactiviteit. Eerst werd een optimale locatie geselecteerd aan de hand van de meest gebruikte wandelpaden. Daarna werden 4 verschillende testen uitgevoerd op de willekeurige voorbijgangers met als bedoeling te zien welke factoren een invloed hebben op de aandacht van voorbijgangers. Bij de eerste testen was er geen interactie tussen de onderzoekers en het
2.7 Gesture interaction
22
publiek. Bij verdere onderzoeken werden willekeurige voorbijgangers gevraagd om mee te werken en feedback te geven. In deze studie komen een aantal belangrijke sociaalpsychologische eigenschappen aan het licht. Interactie met publieke schermen is een nieuwe mogelijkheid. De interactieve mogelijkheden werden niet verwacht, maar eens de potenti¨ele gebruikers de mogelijkheden van het scherm ontdekten, steeg de interesse heel sterk. Voor sommige gebruikers was deze mogelijkheid zo onverwacht dat deze, zelfs na een persoonlijke uitleg, niet geloofden dat dit reeds mogelijk is. Indien voorbijgangers aangesproken werden om participatie te vragen was er een veel grotere interesse eens deze wisten wat de mogelijkheden waren van de opstelling. Terugkerende gebruikers werden opgemerkt na interactie met het scherm. Dit wijst op een snelle acceptatie. De aanwezigheid van actieve gebruikers heeft een grote invloed op de aandacht van voorbijgangers. Deze bevinding, ook wel het Honeypot effect genoemd, toont aan dat de sociale zijde van mensen een zeer belangrijke factor is bij de acceptatie van een nieuwe of vernieuwende technologie. Dit alles wijst erop dat er nood is aan een sensibiliseringstijd voordat gesture interaction een globaal aanvaarde mens-computer interactie methode wordt. Voor de interactie met het scherm zijn er ook interessante conclusies. Er moet veel aandacht besteed worden aan de selectie van de besturingsbewegingen [16]. De algemene bevinding van de gebruikers stelt dat de interactie in het begin moeilijk is, maar al heel snel als intu¨ıtief wordt ervaren. Dit wijst er nogmaals op dat het publiek nog niet vertrouwd is met deze manier van mens-computer interactie. Zoals vaak gezien bij andere interactie methodes zorgen verkeerde interpretaties voor frustraties bij de gebruikers. De verkeerde interpretaties kunnen zowel bij de opstelling liggen, zoals een te hoge threshold, of bij de gebruikers, wanneer deze een verkeerde assumptie maken. Om dit te vermijden is het belangrijk dat het resulterende systeem ge¨evalueerd wordt aan de hand van een usability study. Uit deze studie kan onder andere blijken welke gestures als intu¨ıtief aanvaard worden, welke bewegingssnelheid als natuurlijk ervaren wordt bij gebaren en waar de focus moet liggen bij het cre¨eren van content. Bij de interactie tussen een gebruiker en het scherm is het belangrijk om feedback te voorzien. Bij het gebruik van klassieke interactie methodes zoals toetsenbord en muis of touch screens is er een fysieke feedback. Deze feedback ontbreekt bij gesture interaction. Dit kan opgevangen worden door de creatie van een artifici¨ele schaduw op het scherm die de bewegingen van de gebruiker aantoont [2]. De schaduw geeft niet alleen een feedback voor de gebruiker, maar ook voor de omstaanders [17]. Dit kan een versterking leveren van
2.7 Gesture interaction
23
het Honeypot effect. Een andere optie versterkt mogelijk nog de bruikbaarheid. Als er geopteerd wordt om af te stappen van het model met vrije navigatie is de nood aan visuele feedback kleiner. Het veranderen van de navigatie naar een model met een klein aantal eenvoudige bewegingen biedt op meerdere vlakken een voordeel. Voor de gebruiker wordt het systeem eenvoudiger om te begrijpen en verkleint de kans op foutieve bewegingen. Bij het verwerken van de bewegingen verkleint het aantal mogelijkheden waardoor de verwerkingssnelheid en robuustheid stijgen. Hierdoor kan er ook meer tijd besteed worden aan het selecteren van de bewegingen en het zoeken van vaak voorkomende gebruiksscenario’s. In een studie van Michelis en M¨ uller [18] wordt onderzoek gevoerd naar het gebruik van een multi-display systeem met gesture interaction. Het hoofddoel van het onderzoek was het opstellen van een algemeen framework. Dit framework laat toe om het doelpubliek te analyseren en kan gebruikt worden bij een groot aantal verschillende soorten interactie met schermen. Hierin werd een onderscheid gemaakt tussen verschillende soorten aandacht voor het scherm. De belangrijkste conclusie van het onderzoek met betrekking tot deze studie is dat de interactie van gebruikers kan voorgesteld worden in een aantal discrete stadia. Bij elke overgang is er een zekere drempel die ervoor zorgt dat een deel van de gebruikers afvalt. In het algemeen situeert de grootste drempel zich tussen het zien van het systeem en de eerste interactie ermee. Aangezien hier het grootste deel van het publiek wegvalt, is het belangrijk om ervoor te zorgen dat deze drempel zo laag mogelijk is. De overgang van een eerste interactie naar direct gebruik van het systeem heeft een kleine afval. Dit komt doordat de eerste interactie bij de meeste mensen een nieuwsgierigheid wekt. Het onderzoek van Hespanhol et. Al. [19] bestudeert de intu¨ıtiviteit van verschillende bewegingen voor interactie met een scherm. Bij dit onderzoek werd niets gezegd over de bewegingen aan het publiek. De bedoeling was om een onbe¨ınvloede kijk te bieden op de bewegingen. Deze bewegingen werden beoordeeld aan de hand van 2 criteria: de tijd om de beweging te ontdekken en het aantal fouten nadat de beweging ontdekt was. Aan de hand hiervan wordt aangetoond dat bewegingen die snel ontdekt worden zeer intu¨ıtief en natuurlijk zijn. Deze bewegingen mogen echter niet te complex zijn. Bij te veel fouten na de ontdekking wordt een beweging als moeilijk bruikbaar beschouwd. Een aantal ontdekkingen en resultaten van het onderzoek zijn belangrijk voor deze studie. Zo wordt aangetoond dat een visuele feedback bij het aanvangen van een bepaalde beweging helpt bij het correct uitvoeren van deze beweging. Bij de keuze van de bewegingen om het systeem te bedienen moet op een aantal zaken gelet worden. Er mag geen overlap zijn
2.7 Gesture interaction
24
tussen een lichamelijke verplaatsing en de beweging van de actie. Dit wil dus zeggen dat de detectie van de gestures moet bepaald worden aan de hand van de relatieve positie ten opzichte van het lichaam, niet met de absolute positie in de camera. Bij het uitvoeren van een usability study mag niet uitgegaan worden van een bepaalde achtergrond bij de gemiddelde gebruiker. In veel onderzoeken werd de testgroep gekozen uit de directe omgeving van de wetenschappers. Dit resulteert in een vertekend beeld op het onderzoek. De gerichte doelgroep bestaat uit een combinatie van mensen met veel technologische kennis tot mensen zonder enige kennis van computers. Vooral deze laatste hebben grotere nood aan een intu¨ıtieve, niet-indringende interactie methode. Aan de hand van deze literatuurstudie werden twee belangrijke onderzoeksvragen opgesteld. Op het vlak van interactie moet de intu¨ıtiviteit van de gekozen set van bewegingen ge¨eevalueerd worden. Deze moeten zorgvuldig geselecteerd worden in combinatie met een aangepaste user interface. Bij dit onderdeel is een usability study op een breed publiek essentieel voor het slagen van de interactie. De tweede onderzoeksvraag valt op het vlak van de detectie. Er moet onderzoek gevoerd worden naar het mogelijk gebruik van temporele bewegingsinformatie bij Random Decision Forests. De meerwaarde van deze detectie moet in vraag worden gesteld en de accuraatheid moet vergeleken worden met andere methodes.
ARCHITECTUUR
25
Hoofdstuk 3 Architectuur In dit hoofdstuk wordt de architectuur van dit onderzoek besproken. Hierin wordt de werking van het programma in detail toegelicht. Ook worden enkele keuzes verduidelijkt zoals het gebruik van bepaalde software bibliotheken. Bij het ontwerp van de architectuur van dit onderzoek werd gekozen om te werken met een generiek framework dat onafhankelijk van de gekozen camera en bewegingen werkt. Dit biedt een grotere vrijheid en laat meer mogelijkheden voor toekomstig gebruik. Ook laat dit toe om eenvoudiger aanpassingen door te voeren aan de gekozen bewegingen, zonder dat de software zelf moet aangepast worden. Om de algemene bruikbaarheid te verhogen wordt de reactie op de herkende bewegingen ge¨ımplementeerd buiten het framework.
3.1
Hardware
Zoals reeds besproken in de literatuurstudie werd gekozen om het onderzoek uit te voeren met behulp van de Microsoft Kinect camera. Naast deze camera wordt gebruik gemaakt van een beeldscherm om content op te plaatsen. Deze content kan dan met behulp van de gedetecteerde bewegingen gemanipuleerd worden. Verder is er een computer nodig voor de verwerking van de data en het aansturen van de content op het scherm. Een voorbeeld van deze opstelling kan gevonden worden op afbeelding 3.1.
3.2 Software
26
Figuur 3.1: De gebruikte hardware.
Voor de verwerking van de informatie van de camera werd gebruik gemaakt van een aantal bibliotheken. Deze bibliotheken en de eigen software worden in het volgende deel besproken.
3.2
Software
Om de Kinect camera aan te spreken kan men gebruik maken van verschillende software bibliotheken. Hieronder vallen bijvoorbeeld Microsoft Kinect SDK, Softkinetic Iisu/Optrima, OpenKinect, OpenNI, ... Om de te gebruiken bibliotheek te selecteren werden deze vergeleken met elkaar op basis van de aangeboden functionaliteit. Omdat dit onderzoek handelt naar het ontwikkelen een nieuwe manier van bewegingsdetectie was het onbelangrijk dat de gekozen bibliotheek deze mogelijkheid aanbied. Van de bibliotheek werd verwacht dat deze een skeletbeeld kan aanbieden, samen met een kleur- en dieptebeeld. Bij dit onderzoek werd gekozen om te werken met de nieuwste versie van de Microsoft
3.2 Software
27
Kinect SDK, op het moment van dit onderzoek is dit versie 1.7. De keuze hiervoor werd vooral bepaald door de gebruiksvriendelijkheid en het feit dat deze SDK voldoet aan de eisen die hierboven werden aangehaald. De mogelijkheid om een smoothing filter toe te passen op het skelet beeld zorgt ervoor dat de Microsoft Kinect SDK een accuraatheid bereikt die boven de vereisten ligt voor dit onderzoek. Deze smoothing filter wordt besproken in 3.3.2. De Microsoft Kinect SDK is een software bibliotheek die ontwikkeld werd om de communicatie met een Microsoft Kinect camera te vereenvoudigen. Naast het aanbieden van de kleur- en dieptebeelden biedt deze SDK ook verschillende mogelijkheden voor stemherkenning. In versie 1.7 werd ”Kinect Interaction”toegevoegd. Dit is een ingebouwde bewegingsherkenning van Microsoft. Het grote verschil tussen deze bewegingsherkenning en het doel van dit onderzoek is dat Kinect Interaction werkt op zeer korte afstand. Om toe te laten dat ook andere camera’s gebruikt worden voor dit framework, wordt enkel gebruik gemaakt van de Microsoft Kinect objecten in de klasse die de camera aanspreekt. In deze klasse worden de Microsoft skeletten omgezet naar een object van een eigen ontwikkelde skelet klasse die los staat van het Kinect skeleton object. Deze eigen skelet klasse wordt verder uitgelegd in 3.3.3. Alle bewerkingen en berekeningen worden vervolgens op dit nieuwe object uitgevoerd. Welke bewerkingen en berekeningen dit zijn wordt in detail uitgelegd in het volgende onderdeel. Wanneer een beweging uitgevoerd wordt, moet deze geclassificeerd worden. Voor deze indeling wordt gebruik gemaakt van RDF beslissingsbomen. Om de beslissingsboom aan te maken en aan te spreken berust dit onderzoek op ALGLIB. Dit is een open source software bibliotheek, vooral bestemd voor numerieke analyse en data verwerking. Een groot voordeel hierbij is dat ALGLIB werkt over verschillende platformen(Windows, Linux, Solaris) en programmeertalen(C++, C#, Pascal, VBA). Hierdoor heeft ALGLIB een grote gemeenschap van gebruikers. Een grote gemeenschap van gebruikers heeft als pluspunt dat er online over deze bibliotheek veel relevante informatie te vinden valt. Eventuele problemen met de bibliotheek kunnen ook heel snel opgelost worden. Om het nut van de besproken softwarebibliotheken aan te tonen, wordt hun gebruik aangetoond in de werking van het eigen ontwikkelde systeem.
3.3 Eigen systeem
3.3
28
Eigen systeem
Zoals besproken in het vorige segment, wordt er bij dit onderzoek gebruik gemaakt van een aantal externe software bibliotheken. Om een zo generiek mogelijke oplossing te bieden aan het gestelde probleem, werden enkele aanpassingen/uitbreidingen aan de bestaande componenten in deze masterproef ontwikkeld. In dit onderdeel worden deze aanpassingen en uitbreidingen besproken. Eerst wordt een overzicht van het systeem gegeven, om vervolgens telkens dieper in de structuur van het programma te kijken. Zo wordt een overzicht gegeven van de werking, terwijl de globale opbouw nooit uit het oog verloren wordt.
3.3.1
Overzicht
Op onderstaande afbeelding 3.2 wordt een voorbeeld van een high level use case weergegeven. Deze toont de verschillende mogelijke interacties tussen het systeem en de gebruiker. Deze set van instructies werden geselecteerd op basis van de wensen van de opdrachtgever. Zoals reeds eerder vermeld, is het mogelijk om de set uit te breiden of aan te passen door de nieuwe interacties mee te geven bij het trainen van de beslissingsboom.
Figuur 3.2: Een voorbeeld van de use case van het ontwikkelde systeem
3.3 Eigen systeem
29
Voor de interactie met het systeem vroeg dZine naar een aantal eenvoudige bewegingen die toelaten om te navigeren naar de volgende of vorige afbeelding. Hiervoor werd geopteerd om te werken met swipes. Dit zijn bewegingen waarbij slechts een hand gebruikt wordt. De hand maakt een horizontale verplaatsing naar links of rechts, afhankelijk van het gewenste resultaat. Om de volgende afbeelding te zien wordt de rechterhand naar links bewogen, voor de vorige afbeelding wordt de linkerhand naar rechts bewogen. De mogelijkheid om de afbeelding te verschalen werd ook toegevoegd. Voor deze bewegingen werd gekeken naar de welbekende pinch-to-zoom beweging bij touchscreens. Bij deze bewegingen worden dus beide handen gebruikt. Om de afbeelding te vergroten worden de handen van elkaar weg bewogen. Om de afbeelding te verkleinen worden de handen naar elkaar toe bewogen. Als laatste werd voor de classificatie een lege beweging toegevoegd. Elke beweging die niet voldoet aan de opgestelde eisen van de vier bewegingen, wordt hierin geplaatst. Dit heeft een zeer gunstige invloed op de correcte classificatie van de bewegingen. Om duidelijker uit te leggen hoe de detectie en classificatie van deze bewegingen werkt, wordt gebruik gemaakt van een sequentie diagram. Dit wordt hieronder weergegeven in afbeelding 3.3. Het diagram toont op abstracte wijze hoe de interactie verloopt tussen de gebruiker en de 3 grote onderdelen van het systeem. Deze onderdelen worden voorlopig als entiteiten weergegeven, later worden deze meer in detail besproken.
3.3 Eigen systeem
30
Figuur 3.3: Een abstracte kijk op de interactie tussen de gebruiker en de entiteiten van het systeem.
Nu volgt een meer gedetailleerde bespreking van elk onderdeel. Eerst wordt de View besproken. Hierin zit de interactie met de gekozen camera, de beeldvorming en user feedback. Daarna wordt het Gesture Framework bekeken. Dit bestaat uit een samenstelling van een aantal verwerkende objecten die de data omzetten van bewegingen op het beeld naar een vector voor de classificatie. Tot slot wordt kort nog de classificatie besproken.
3.3 Eigen systeem
3.3.2
31
View
De entiteit View is een samenstelling van alle onderdelen in het ontwikkelde systeem die kunnen aangepast worden naargelang de eisen van het systeem. Deze aanpassingen kunnen resulteren in nieuwe content, andere reacties op bewegingen of het gebruik van een andere 3D camera. Het bestaat uit 2 klassen, een voor de camera en een voor het zichtbare gedeelte van het systeem. In wat nu volgt worden beide klassen besproken, alsook de manier van interactie tussen deze klassen. Eerst wordt de klasse van de camera, Kinect.cs, uitgelegd. Daarna volgt het zichtbare venster, Form1.cs. Dit segment wordt be¨eindigd met een overzicht van de communicatie tussen deze klassen en de Gesture Framework entiteit. Hierbij wordt het Gesture Framework nog steeds aanschouwd als een gesloten entiteit. Kinect Deze klasse is verantwoordelijk voor de interactie met de Kinect camera op software-niveau. Dit houdt in dat de ontvangen skelet-data moet worden omgezet naar een object van de eigen skelet klasse, CompactSkeleton. Een verdere uitleg van deze klasse volgt in 3.3.3. Ook wordt gebruik gemaakt van het dieptebeeld om de re¨ele afstand te bepalen tot een aantal belangrijke punten van het lichaam, zoals de handen en de schouders. Bij de initialisatie van deze klasse wordt een object van de klasse KinectSensor aangemaakt. Dit is het object dat zorgt voor de communicatie met de Kinect camera. Hieraan kunnen event handlers worden toegewezen die de inkomende beelden, zoals de skeleton frame, van de camera verwerken. Hier wordt ook de skeleton smoothing filter [20] ingesteld. Zonder deze smoothing filter is het moeilijk om accurate en consistente data te verkrijgen van de camera. Dit bemoeilijkt dan op zijn beurt de correcte verwerking van de bewegingen. Deze beperkingen komen voort uit de manier waarop de skelet data wordt aangemaakt. Om elk skeletbeeld aan te maken, verwerkt de Microsoft Kinect SDK de inkomende kleur en dieptebeelden. De bedoeling van deze verwerking is om een schatting te maken waar elk lichaamsdeel zich bevindt, gebaseerd op de kleur- en dieptebeelden. Deze schatting gebeurt, zoals reeds vermeld in de literatuurstudie, ook op basis van een beslissingsboom die wordt aangemaakt met RDF. De SDK maakt ook gebruik van een aantal logische beperkingen die voortkomen uit de anatomie van het menselijk lichaam. Ook de resultaten van de vorige skeletbeelden zijn een belangrijke factor. Hierdoor wordt het onmogelijk dat lichaamsdelen te grote verplaatsingen maken bij opeenvolgende beelden. Dat er gewerkt wordt met een schatting, resulteert soms in foutieve data. De fouten vallen altijd binnen
3.3 Eigen systeem
32
een bepaalde marge, maar plotse verschuivingen van de handpositie kunnen resulteren in onbedoelde bewegingen en dus foutieve interpretaties van het systeem. Dit kan nefaste gevolgen hebben voor de gebruikerservaring. Door het toepassen van een goede smoothing filter is het mogelijk om het ontstaan van deze problemen heel sterk te verminderen. Bij het opstellen van elke filter moeten keuzes gemaakt worden. Er moet gekozen worden tussen de accuraatheid van de filter en de vertraging die deze veroorzaakt. Een zeer accurate filter zal meer berekeningen uitvoeren op de nieuwe data waardoor het systeem trager zal werken. Ook wordt in dergelijke filter gebruik gemaakt van een vergelijking met de voorgaande frames. Hierdoor ziet men een merkbare vertraging tussen de beweging van de gebruiker en de reactie van de camera. De filter, die hieronder wordt gegeven, levert een sterke toename in zowel accuraatheid als consistentie. De vertraging die deze filter veroorzaakt valt binnen het acceptabele bereik, er is geen merkbare vertraging bij de user feedback. TransformSmoothParameters smoothingParam = new TransformSmoothParameters(); { smoothingParam.Smoothing = 0.4f; smoothingParam.Correction = 0.5f; smoothingParam.Prediction = 0.3f; smoothingParam.JitterRadius = 0.05f; smoothingParam.MaxDeviationRadius = 0.04f; }; k.SkeletonStream.Enable(smoothingParam);
De gebruikte instellingen voor deze smoothing filter worden nu besproken aan de hand van hun nut en de voor- en nadelen. Bij Smoothing wordt de afvlakking ingesteld door middel van een waarde tussen 0 en 1. Een grotere waarde levert een beter afgevlakt resultaat, maar de reactietijd op nieuwe data vergroot. Hierdoor zal er dus een grotere vertraging optreden ten gevolge van de filter. Aangezien deze filter een zo klein mogelijke vertraging moet hebben, werd een kleine waarde gekozen. De waarde 0,4 werd op experimentele wijze bepaald en levert een goede afvlakking zonder een merkbare vertraging te veroorzaken. Met Correction wordt de correctie van het gefilterde resultaat naar de oorspronkelijke data bepaald door middel van een waarde tussen 0 en 1. Een grotere waarde zal sneller corrigeren naar de ruwe gegevens. Dit verlaagt wel de aanpassingen die de filter kan toepassen op de data. De waarde van Prediction bepaalt hoeveel frames in de toekomst
3.3 Eigen systeem
33
worden voorspeld. Met meer voorspelde frames is er een minder lange verwerkingstijd voor de filter, maar de respons op snelle wijzigingen daalt sterk. Omdat het bij dit ontwerp belangrijk is dat het systeem snel reageert op het begin en eind van bewegingen werd deze waarde zeer laag gekozen. Dankzij JitterRadius wordt een beperking geplaatst op de aanwezigheid van jitters. Dit zijn de kleine sprongen in positie van onderdelen van het skelet ten gevolge van de onzekerheid van de predictie ervan. Een te kleine waarde hiervoor kan resulteren in een verlaagde gevoeligheid aan snelle bewegingen, terwijl een te grote waarde niet voldoende effici¨ent bepaalde sprongen kan wegwerken. Als laatste instelling is er MaxDeviationRadius. Hiermee wordt meegegeven aan de filter wat de maximale afstand mag zijn tussen de gefilterde positie en de oorspronkelijke positie van elk datapunt. De punten die verder liggen dan deze afstand worden dichter geplaatst, met behoud van de richting van de verplaatsing. Wanneer er meerdere gebruikers voor de camera staan, moet er steeds 1 gebruiker geselecteerd worden die de controle krijgt over het systeem. Deze selectie moet uitgevoerd worden op de volledige lijst van skeletten die binnenkomt via de Kinect. De eerste implementatie van deze selectie gebeurde aan de hand van een beweging. Door te zwaaien naar de camera maakte een gebruiker zich bekend als de actieve gebruiker. Deze status bleef behouden tot die gebruiker niet meer gedetecteerd was in het beeld. Vanaf dan konden andere gebruikers zich bekend maken bij de camera. Dit zorgde echter voor een extra stap om de view te activeren, wat de intu¨ıtiviteit sterk verlaagt. Daarom werd de keuze gemaakt om de actieve gebruiker te bepalen aan de hand van de afstand tot de camera. De persoon die dichtst bij de camera staat, kan eenvoudig aanzien worden als de persoon die het meeste controle vraagt van het systeem. Bij de implementatie van een nieuwe camera moet dergelijke keuze ook ge¨ımplementeerd worden. Wanneer er meer dan 1 nieuw skelet wordt doorgeven per skeletframe, zal het systeem foutieve resultaten leveren. Deze doorgegeven skeletten worden door het systeem steeds aanzien als dezelfde gebruiker, maar deze hebben niet dezelfde positie in het beeld. De skeletten zorgen dus voor een grote verplaatsing van elk lichaamsdeel die door het systeem zal gezien worden als een beweging. Daar deze sprongen in het algemeen groter zullen zijn dan de opgelegde minimale bewegingssnelheid zal het systeem deze sprongen aanzien als een beweging die moet geclassificeerd worden. Dit zal resulteren in ongewenste reacties van het systeem. De foutieve resultaten worden veroorzaakt doordat het doorgeven van meerdere skeletten per frame zal resulteren in zeer grote sprongen voor elk hand, telkens er gewisseld wordt tussen de doorgegeven gebruikers. Daar deze sprongen in het algemeen groter zullen zijn
3.3 Eigen systeem
34
dan de beweging die mogelijk is tussen 2 frames van dezelfde gebruiker, zullen deze boven de minimale bewegingssnelheid liggen. Daardoor zal het systeem deze onbedoelde bewegingen zien als resultaten en ze dus ook proberen te classificeren. Eens het skeletbeeld gecorrigeerd is door de smoothing filter, wordt de juiste gebruiker hieruit geselecteerd. Het skelet van deze gebruiker wordt omgezet naar een object van de klasse CompactSkeleton. In dit object wordt enkel de relevante informatie bijgehouden voor de latere verwerking. Dit nieuwe skelet object wordt aan de hand van een event doorgegeven aan Form1.cs. Deze klasse wordt nu besproken. Form1 Dit is de klasse die bepaalt welke visuele informatie zichtbaar wordt voor de gebruiker. Hieronder valt de content die op het scherm komt, de user feedback en de reacties op bewegingen. Het ontvangen van een CompactSkeleton object van de Kinect klasse resulteert in twee acties. Dit object wordt zonder verwerking direct doorgegeven aan het Gesture Framework. Daarna wordt de data van het object binnen deze klasse gebruikt om user feedback weer te geven. Hoe de user feedback wordt weergegeven, is vrij te kiezen. Binnen dit onderzoek werd gekozen om deze weer te geven boven op de content. Hier beperkt de user feedback zich tot het weergeven van de handen. Het is mogelijk om dit te wijzigen naar andere manieren, maar dit wordt meer in detail besproken in 6.2. Wanneer een correcte beweging gedetecteerd wordt door het Gesture Framework, wordt dit door middel van een event doorgegeven aan de Form. De afhandeling van elke beweging kan dus afzonderlijk worden ingesteld naar gelang de eisen van het gewenste systeem. Indien er gebruik gemaakt wordt van een andere set van bewegingen volstaat het om deze toe te voegen aan de verwerking in de klasse Form1. Na de bespreking van de 2 onderdelen van de entiteit View, volgt nu een schema van de interactie tussen deze klassen en de entiteit Gesture Framework. Interactie Bij het binnenkomen van een nieuwe skelet frame, wordt deze verbeterd aan de hand van de ingestelde smoothing filter. Daarna volgt de selectie van de actieve gebruiker, welke gebeurt op basis van de minimale afstand tot de camera. Het resulterende skelet wordt direct verwerkt en omgezet naar de eigen klasse, CompactSkeleton. Met behulp van een
3.3 Eigen systeem
35
event wordt het object doorgegeven aan de Form. Deze voert 2 acties uit met de binnengekomen data. Enerzijds wordt deze gebruikt om user feedback op het beeldscherm te plaatsen. Anderzijds wordt het object zonder verdere verwerking doorgestuurd naar het Gesture Framework. Deze eerste stappen zijn een continu proces. Indien Gesture Framework het begin van een beweging detecteert, zal deze alle data blijven bijhouden tot de beweging stopt. De detectie van het begin en het einde van een beweging gebeurt door de bewegingssnelheid van elk hand te vergelijken met een grenswaarde. Deze grenswaarde komt verder in dit document uitgebreid aan bod. Eens deze beweging stopt, volgt een korte nabewerking door het Gesture Framework. Na deze nabewerking geeft het Gesture Framework de relevante bewegingsdata door aan de classificatie. Het antwoord van de Classificatie entiteit wordt dan door het Gesture Framework opnieuw verwerkt. De bedoeling van deze verwerking is dat de data van de Classificatie wordt omgezet naar de naam van de beweging. Deze namen worden in het bestand van de trainingsdata gedefinieerd. Nu de naam van de beweging gekend is, stuurt het Gesture Framework deze door naar de Form, opnieuw met behulp van een event. Gedurende dit verloop blijft de Form nieuwe skelet informatie ontvangen. Wanneer de Form een nieuwe geclassificeerde beweging ontvangt, wordt de actie die hierbij hoort uitgevoerd op het beeld. Deze actie kan er bijvoorbeeld voor zorgen dat een nieuwe afbeelding op het beeldscherm wordt geplaatst. Deze interactie wordt op onderstaand schema, afbeelding 3.4, afgebeeld.
3.3 Eigen systeem
36
Figuur 3.4: Het verloop van de interactie tussen onderlinge klassen van de View entiteit en de Gesture entiteit.
Nu wordt gekeken hoe de verwerking van de inkomende skelet-data uitgevoerd wordt binnen het Gesture Framework.
3.3.3
Gesture Framework
In tegenstelling tot veel bewegingsdetectie-systemen, maakt dit Gesture Framework geen gebruik van spatiale gegevens. De enige data die gebruikt wordt voor de analyse van een beweging is de bewegingssnelheid en richting van de beweging. Dit heeft voor- en nadelen. Bij de voordelen wordt vooral opgemerkt dat er zich een grotere mate van vrijheid vormt bij het opstellen van de bewegingen. Aangezien enkel de manier van bewegen belangrijk is, en niet gekeken wordt op spatiale locatie van de handen gedurende de beweging, is er een veel kleinere trainingsset nodig om dezelfde resultaten te behalen. Waar een spatiaal systeem bewerkingen moet doen om elke beweging te normaliseren naar een bepaald gebied, kan dit temporeel systeem meer tijd besteden aan de optimalisatie van de gebruikerservaring. Het grootste nadeel van dit systeem is dat statische poses niet kunnen gedetecteerd worden.
3.3 Eigen systeem
37
Dit zorgt voor een beperking op de mogelijke besturing van het systeem. Om inzicht te verkrijgen in de werking van de entiteit Gesture Framework, wordt deze opgesplitst in de onderliggende blokken die deze entiteit opmaken. Eerst wordt de eigen skelet klasse, CompactSkeleton, besproken. Daarna volgt een kijk op hoe de beweging wordt bijgehouden en verwerkt, in de klasse MotionProcessor. Het laatste blok van het Gesture Framework wordt opgemaakt door de klasse Gestures. CompactSkeleton Om onafhankelijk te kunnen werken van een camera en de bijhorende SDK, werd een eigen skelet klasse ontwikkeld. Dit is een klasse voor data opslag. Voor de werking van dit systeem is slechts een deel van alle gegeven data nodig. De objecten van deze klasse houden enkel de nodige data bij, namelijk de co¨ordinaten van de handen en de re¨ele afstand tussen het lichaam en de camera. Om deze afstand te bepalen wordt het gemiddelde genomen van de afstand tussen de camera en beide schouders. Wanneer er zou gewerkt worden met bijvoorbeeld de afstand tot het midden van het lichaam, kan dit problemen veroorzaken wanneer de gebruiker losse kledij draagt. Ook bij een vari¨erende buikomvang kan dit resulteren in foutieve resultaten. De co¨ordinaten van de handen worden op hun beurt bijgehouden in hun eigen object van de klasse Hand. Ook deze klasse heeft als enig doel data op te slaan. Binnen de klasse Hand worden de X, Y en Z co¨ordinaten bijgehouden, alsook de re¨ele afstand tot de camera. De X, Y en Z co¨ordinaten van de handen worden uitgedrukt in pixelwaarden, terwijl de Z co¨ordinaat, de afstand tot de camera dus, uitgedrukt wordt in mm. De structuur van deze twee klassen wordt met behulp van een klassediagram afgebeeld in afbeelding 3.5.
Figuur 3.5: Het klassediagram van de data klassen CompactSkeleton en Hand
3.3 Eigen systeem
38
Binnen de klasse CompactSkeleton wordt ook nog een constante bijgehouden die nodig is voor de bewegingsverwerking. Deze constante, MotionThreshold, is de minimumsnelheid waarmee een hand moet bewegen om het begin van een gesture te detecteren. Om de waarde van MotionThreshold te bepalen wordt rekening gehouden met de re¨ele afstand tot de camera. Omdat de afstand tot de camera als variabel wordt aanzien, kan ook het actieve gebied waarin de gebruiker staat vari¨eren. Wanneer dit actieve gebied kleiner is, zal elke beweging van de gebruiker een kleiner bereik hebben aan pixels. De bewerkingen op deze waardes resulteren dan ook in kleinere uitkomsten. Om ervoor te zorgen dat het systeem even goed blijft werken bij grotere afstand, wordt de waarde van MotionThreshold aangepast naargelang de afstand van de camera. Het gebruik van de constante MotionThreshold wordt later uitgelegd. MotionProcessor Deze klasse wordt gebruikt om de gemaakte beweging bij te houden. Hoewel de detectie van het begin en eind van de beweging niet binnen de taken ligt, is deze klasse wel verantwoordelijk voor het omzetten van pixeldata naar een informatievector. Deze vector wordt opgesteld naar de eisen van de Classificatie entiteit. Om te voorkomen dat te korte bewegingen gedetecteerd worden, houdt elk object van deze klasse een teller bij. Aan de hand van een grenswaarde kan ingesteld worden hoeveel frames er minimaal nodig zijn voor een beweging. Dit minimum wordt bepaald door de behaalde framerate van het systeem en de gewenste bewegingssnelheid. De waarde van de threshold werd op experimentele wijze bepaald. Het doel hierbij was om de waarde te zoeken die zo weinig mogelijk foutieve data doorliet, terwijl de bewegingen zelf nog kort genoeg konden zijn om intu¨ıtief te blijven. Om meer vrijheid te krijgen bij de verwerking, wordt elk hand afzonderlijk verwerkt. Zoals vermeld in de inleiding, werkt het Gesture Framework met bewegingssnelheid en richting. Deze klasse wordt aangesproken door de richting van de beweging mee te geven, in de vorm van een hoek in radialen. Voor de omzetting van de hoek naar een van de acht mogelijke bewegingsrichtingen wordt beroep gedaan op een object van een nieuwe klasse, HandMotion. Elk object van de klasse HandMotion neemt een hoek als argument bij de initialisatie. Deze hoek wordt dan omgezet naar een van de volgende bewegingsrichtingen: rechts, boven rechts, boven, boven links, links, beneden links, beneden, beneden rechts. Deze acht mogelijkheden bieden voldoende vrijheid aan dit systeem, zonder het te complex
3.3 Eigen systeem
39
te maken. Bij het verwerken van de bewegingsdata wordt elke richting voorgesteld door een cijfer van 0 tot en met 7. Zo is rechts 0, boven rechts 1, boven 2, ... Ook het bijhouden van alle data van de beweging gebeurt met behulp van objecten van deze klasse. Indien de bewegingsrichting van de laatst nieuwe hoek overeenkomt met zijn voorganger, wordt de teller van deze voorganger verhoogd. Dit verbetert geheugenverbruik en zorgt ervoor dat de latere verwerking eenvoudiger wordt. Hieronder volgt de code die zorgt voor het omzetten van de bewegingshoek naar een van de acht bewegingsrichtingen. private int processAngle(double angle) { double pi = Math.PI; angle += pi; angle += pi / 8; angle = moduloPI(angle); angle *= 4 / pi; int a = (int)Math.Round(angle - 0.5, MidpointRounding.AwayFromZero); if (a > 7) a = 7; if (a < 0) a = 0; return a; }
Bij deze code moeten een aantal bewerkingen verduidelijkt worden. De hoek die wordt ontvangen, werd bij een eerdere verwerking afgeleid uit de co¨ordinaten die ontvangen werden van de camera. Hierbij moet opgemerkt worden dat de bewegingen geregistreerd worden vanuit het standpunt van de camera. Wanneer een gebruiker een van de handen naar links beweegt, is dit voor de camera een beweging naar rechts. Om de intu¨ıtiviteit van de latere verwerking van deze bewegingsrichting te verhogen, worden door middel van een perspectieftransformatie alle hoeken omgezet zodat een beweging naar links voor de gebruiker ook in het systeem aanzien wordt als een beweging naar links. Om de hoek op te stellen uit de skeletinformatie wordt gebruik gemaakt van een inverse tangens. Het resultaat hiervan heeft een bereik van [ -π, π ]. Om de eerder vermelde perspectieftransformatie uit te voeren wordt bij dit resultaat π bijgeteld. Hierbij kan opgemerkt worden dat ook boven en
3.3 Eigen systeem
40
onder omgewisseld worden. Er wordt echter gezien dat de co¨ordinaten verkregen door de Kinect camera reeds omgewisseld zijn. Wanneer de rechterhand bij een test een beweging uitvoerde naar links boven, werd door de inverse tangens een resulterende hoek gegeven van 297 ◦ 8’ 18”. Deze hoek wijst echter naar rechts beneden. Dit toont het nut aan van de perspectieftransformatie. Bij een beweging die naar rechts wijst, ligt de hoek na de voorgaande perspectieftransformatie tussen 7π/8 en 9π/8. Voor rechts boven wordt dit 9π/8 tot 11π/8. Dit loopt zo verder. De voorstelling van deze grenswaarden kan echter veel eenvoudiger gemaakt worden wanneer overal π/8 wordt bijgeteld. Dit zorgt voor betere grenzen, namelijk tussen π en 5π/4 voor rechts, tussen π/4 en π/2 voor rechts boven, ... Deze optelling, samen met de perspectieftransformatie, kan resulteren in een hoek die groter is dan 2π. Voor de verdere berekeningen is het echter belangrijk dat de waarde van de hoek niet groter is dan 2π, daarom wordt deze resulterende hoek verkleind met 2π waar nodig. Wanneer deze 3 berekeningen voorbij zijn, wordt de belangrijkste stap uitgevoerd. Nu wordt de hoek vermenigvuldigd met de waarde 4/π. Dit transformeert het bereik van deze waarde. Voor deze stap is het bereik [0,2π], na deze stap is dit [0,8[. Hierna volgt een eenvoudige afronding naar beneden. Dit bepaalt dan de index van de hoek. Deze index wordt dan omgezet naar de juiste letters met behulp van een lijst. De werking van deze berekening wordt aangetoond met een aantal voorbeelden in tabel 3.1. Dit wordt aangetoond met een willekeurige waarde en met de 2 grenswaarden om de correcte werking van het geheel aan te tonen. Voor de willekeurige hoek werd 3,4494 radialen gekozen, de grenswaarden zijn -π en π. Ter controle: 0,3194 radialen komt overeen met 18 ◦ 18’1”. Deze hoek stelt een beweging naar rechts voor. Deze hoek werd echter opgesteld vanuit het cameraperspectief. Om vanuit cameraperspectief een beweging naar rechts te registreren, moet de gebruiker dus naar links bewegen. Beide grenswaarden stellen in het oogpunt van de camera een beweging naar links voor. Voor de gebruiker is dit bijgevolg een verplaatsing naar rechts.
3.3 Eigen systeem
41 Beginwaarde Stap 1 Stap 2 Stap 3 Stap 4 Stap 5 Resultaat
0,3194 -π π 3,4610 0 2π 3,8537 π/8 17π/8 3,8537 π/8 π/8 4,9067 0,5 0,5 4 0 0 Links Rechts Rechts
Tabel 3.1: Werking van de HandMotion code
Wanneer de beweging stopt, wordt dit ook meegegeven aan het object van de klasse MotionProcessor. Deze voert dan een aantal berekeningen uit op de opgenomen data. De berekeningen zorgen voor het omzetten van de data naar een vector die deze data samenvat. Het omzetten van de bewegingsdata naar de vector werkt als volgt. De volledige beweging wordt opgesplitst in 4 segmenten. Wanneer de data wordt opgedeeld in 4 segmenten levert dit voldoende verschillende mogelijkheden, namelijk 4096, om de opgenomen data voor te stellen. De keuze voor deze waarde wordt besproken in het volgende hoofdstuk, in 4.3. Doordat geen rekening wordt gehouden met de tijd waarin de beweging werd uitgevoerd, verhoogt hier de graad van temporele vrijheid. Om de belangrijkste beweging te selecteren van elk segment, wordt gekeken naar de frequentie van elke bewegingsrichting. De grootste frequentie bepaalt de richting van dat segment. De samenstelling van de bewegingen van de vier segmenten vormt de bewegingsvector voor elke hand. Omdat de twee handen onafhankelijk van elkaar kunnen bewegen, is het mogelijk dat slechts een van beide handen beweegt. Wanneer dit zich voordoet, wordt de bewegingsvector van de niet bewegende hand gevuld met vier maal dezelfde waarde. Deze waarde verschilt van de acht bewegingsrichtingen, zodat verwarring onmogelijk is. Bij dit onderzoek werd voor deze waarde 20 gekozen. Deze waarde werd gekozen op basis van het grote verschil in afstand tussen de waarden van correcte richtingen onderling en de waarden van correcte richtingen en deze waarde. Wanneer er zich een te korte beweging voordoet, zal de resulterende vector hiervan ook bestaan uit vier maal de waarde 20. Dit volledige proces wordt ge¨ıllustreerd met onderstaande afbeelding 3.6. In deze afbeelding werd enkel de werking van het onderdeel MotionProcessor getoond. Het gebruikte voorbeeld is hier de swipe om de vorige pagina te selecteren. Merk op dat de tijd waarin deze beweging werd uitgevoerd geen invloed heeft op de verwerking ervan. Bij dit voor-
3.3 Eigen systeem
42
beeld werden de bewegingsrichtingen uitgedrukt met letters, met volgende betekenis: DR = Down Right, R = Right, UR = Up Right. Dit verhoogt de leesbaarheid van de afbeelding. Enkel de verwerking van de linkerhand wordt afgebeeld, omdat de rechterhand niet snel genoeg beweegt in dit geval. Nadat de snelheid van de linkerhand zakt tot onder de grenswaarde wordt alle data verwerkt. De beweging voor de linkerhand wordt in dit geval samengevat als Beneden Rechts, Rechts, Rechts, Boven Rechts. Dit wordt voorgesteld door volgende vector: 7, 0, 0, 1. De bewegingsvector voor de rechterhand is 20, 20, 20, 20. Deze twee vectoren worden samengesteld in de bewegingsvector die wordt doorgegeven aan de Classificatie entiteit. In dit geval is deze vector gelijk aan [7, 0, 0, 1, 20, 20, 20, 20].
Figuur 3.6: De verwerking van bewegingsdata tot de nodige vector voor de classificatie.
Nu wordt de klasse Gestures besproken. De belangrijkste taken van deze klasse is het detecteren van de bewegingen en de communicatie met de Classificatie entiteit. Gestures Deze klasse zorgt voor de communicatie met de andere verwerkende klassen. Hiervoor maakt het gebruik van objecten van de klasse CompactSkeleton. Naast de communicatie wordt hier de bewegingsinformatie aangemaakt. De Classificatie entiteit wordt hier aangemaakt, getraind en aangesproken. Bij de initialisatie van deze klasse wordt de locatie van het XML bestand meegegeven waarin alle systeemconstanten zitten. Dit XML bestand is belangrijk voor de werking van het systeem, het bevat waarden zoals de thresholds, de instellingen en trainingsdata
3.3 Eigen systeem
43
voor de Classificatie. De nodige objecten worden aangemaakt en de systeemconstanten ingesteld. Wanneer een nieuw skelet object binnenkomt, wordt dit bijgehouden in een doorschuivende lijst. Als deze lijst vol zit, worden alle aanwezige skeletten doorgeschoven, waarbij het laatste skelet verloren gaat. Daarna wordt met behulp van het nieuwe en de vorige skeletten bepaald wat de bewegingsrichting en snelheid is voor beide handen. Deze worden afzonderlijk vergeleken met de MotionThreshold van het nieuwe skelet. Wanneer een hand sneller beweegt dan de threshold, wordt de opname voor de hand gestart via het corresponderende object van MotionProcessor. De verwerking van de MotionProcessor objecten begint wanneer beide handen trager bewegen dan de gewenste bewegingssnelheid. De resulterende vector van deze beweging wordt doorgestuurd naar de Classificatie. Wanneer de Classificatie een antwoord geeft op de ingestuurde bewegingsvector, wordt dit antwoord omgezet naar de juiste syntax om door te geven aan de Form. Het antwoord van de Classificatie entiteit is een lijst met waarden. Deze waarden zijn de procentuele zekerheid van de Classificatie per klasse dat de ingegeven vector bij die klasse hoort. Bij de verwerking moet dan de hoogste waarde geselecteerd worden. Deze waarde wordt dan vergeleken met de RDF T hreshold, zodat een onzekere classificatie niet wordt doorgelaten. Bij het wegfilteren van deze onzekere beweging is het mogelijk om de user te voorzien van feedback, zoals het correct voortonen van de beweging die de user volgens het systeem wou uitvoeren. In dit onderzoek werd dit niet ge¨ımplementeerd omdat het classificatiesysteem een voldoende hoge graad van accuraatheid behaalde op de testdata en bij de gebruikerstesten. Hierna wordt het klassenummer vervangen door de naam van de beweging. Deze tekst wordt aan de hand van een event doorgegeven aan de Form. Het gebruik van de Classificatie entiteit wordt in het volgende onderdeel kort besproken, maar deze komt opnieuw aan bod in het volgende hoofdstuk.
3.3.4
Classificatie
Bij de initialisatie van de Gestures klasse wordt ook het RDF classificatie systeem aangemaakt. De training van de beslissingsboom gebeurt aan de hand van CentralAxisP rojection. Hoe dit werkt, werd besproken in de literatuurstudie. Het classificatiesysteem stelt zelf de definities op van elke klasse en maakt zo onderscheid tussen de verschillende inputs. Met behulp van een aantal constanten wordt dan een beslissingsboom aangemaakt. De keuze van deze waardes en hun betekenis wordt aangehaald in 4.2.
3.3 Eigen systeem
44
De keuze voor een beslissingsboom komt doordat een beslissingsboom heel flexibel is bij de mogelijkheid voor eigen opmaak van data. Ook levert een beslissingsboom zeer goede reactietijden. Hoe beter de reactietijd van het systeem, hoe hoger de gebruikerservaring. Nog een voordeel van beslissingsbomen is dat deze zeer accuraat werken op nieuwe data dat niet in de trainingsset voorkomt. Nu de werking van het systeem bekend is, kan overgegaan worden naar de verfijning ervan. In het volgende hoofdstuk komen de systeemconstanten aan bod. Hier wordt ook de optimalisatie van het Classificatie systeem bekeken.
OPTIMALISATIES
45
Hoofdstuk 4 Optimalisaties Zoals in vorig hoofdstuk werd besproken, werd in dit onderzoek gekozen om een framework te ontwikkelen voor het detecteren van bewegingen. Na de uitleg over de grove werking van het systeem, wordt in dit hoofdstuk dieper ingegaan op een aantal subdelen ervan. Zo worden de systeemconstanten besproken, wordt meer betekenis gegeven aan de classificatie entiteit en wordt het optimalisatieproces overlopen. Eerst volgt echter een uitleg over de uitbreidingen van het systeem die de performantie en accuraatheid verhoogd hebben, maar niet behoren tot de kernfunctionaliteitn van het systeem.
4.1
Uitbreidingen
Naast de classificatie van de bewegingen was er ruimte voor andere optimalisaties binnen dit systeem. Zo werd een afkoeltijd ge¨ıntroduceerd na elke beweging die met voldoende zekerheid geclassificeerd werd. Om de bruikbaarheid te verhogen, wordt rekening gehouden met de positie van de handen ten opzichte van de rest van het lichaam. Hierover volgt een meer duidelijke uitleg verder in dit onderdeel. Als laatste werd, zoals reeds kort werd aangehaald, de minimale bewegingssnelheid variabel gemaakt in functie van de afstand tot de camera. Na het uitvoeren van een beweging komt het vaak voor dat de handen moeten terugkeren naar de beginpositie. Daarom wordt in dit systeem na elke gedetecteerde beweging de detectie voor een bepaalde tijd stilgelegd. Dit zorgt ervoor dat het systeem dergelijke terugkerende bewegingen niet probeert te interpreteren en er hier dus ook geen foutieve resultaten kunnen veroorzaakt worden. De duur van deze afkoeltijd wordt, zoals alle
4.2 Random Decision Forest
46
systeemconstanten, ingesteld in het externe XML bestand. Bij het observeren van de gebruikers van dit gesture detection systeem werd al snel duidelijk dat de handen bijna altijd naar voor worden gebracht. Ook bij non-verbale interactie met andere mensen wordt dit duidelijk ge¨ınterpreteerd als het begin van een interactie. Deze interactie kan de hand schudden zijn, iets aanwijzen, of een verduidelijkende beweging zijn bij het gesprek. Om de accuraatheid van de detectie te optimaliseren moet niet alleen gekeken worden wanneer een beweging wel moet opgemerkt worden, maar ook wanneer bepaalde bewegingen niet relevant zijn. Zo wordt in dit systeem rekening gehouden met de afstand tussen de camera en de gebruiker. Wanneer de handen zich dichter bij de camera bevinden dan de rest van het lichaam, kan dit een indicator zijn dat de gebruiker een beweging wil uitvoeren. Om de afstand tot de rest van het lichaam te bepalen, kunnen veel verschillende lichaamsdelen gebruikt worden. Op de meeste van deze lichaamsdelen kan echter een te grote variatie zitten in het brede publiek. Daarom werd geopteerd om te werken met de afstand tot de schouders. Daar de schouders de gewrichten zijn die de armen verbinden met de rest van het lichaam, levert dit ook de beste resultaten. Een van de onderzoeksvragen bij deze thesis is de detectie van bewegingen over grotere afstand. Daar de grootte van deze afstand niet gedefinieerd werd, werd het als variabel gezien. Bij het testen van dit systeem werd voor de afstand een beperking geplaatst door de gebruikte camera. Voor het opstellen van de skeletbeelden kan de Kinect geen gebruikers identificeren die zich verder dan 4 meter van de camera bevinden. Door de variabele afstand moeten ook een aantal instellingen variabel gemaakt worden. De belangrijkste instelling hierbij is de minimumsnelheid waarmee de handen moeten bewegen om de detectie te starten. Om deze afstand te bepalen werd opnieuw gerekend met de afstand tussen de camera en de schouders. Wanneer het verband wordt bekeken tussen de afstand tot de camera en de gedeelte van het actieve gebied in het ganse beeld, ziet men dat deze lineair afhankelijk zijn. Daarom wordt de minimumsnelheid bepaald aan de hand van een lineaire functie van de afstand tot de camera. De beginwaarde voor de berekeningen is instelbaar met behulp van het XML bestand..
4.2
Random Decision Forest
Bij het ontwerpen van een RDF beslissingsboom moet eerst en vooral opgemerkt worden dat met exact dezelfde instellingen en trainingsset, er telkens een nieuwe boom wordt
4.2 Random Decision Forest
47
aangemaakt. Het is mogelijk om een reeds bestaande beslissingsboom in te laden, maar om zo flexibel mogelijk te zijn bij wijzigingen in de trainingsdata wordt telkens een nieuwe beslissingsboom opgesteld. Dat dit telkens resulteert in een unieke boom komt voort uit de manier waarop een RDF wordt aanmaakt. Een Random Decision Forest wordt opgesteld door een aantal verschillende bomen te maken en daaruit het gemiddelde te nemen. Bij het opstellen van elke beslissingsboom wordt de trainingsdata willekeurig verdeeld in een deel om de boom aan te maken en een deel om de boom te testen. De ratio hiertussen is vooraf vastgelegd aan de hand van instellingen. Ook het aantal bomen waaruit dan het gemiddelde wordt genomen moet bij het begin worden vastgelegd. Ten gevolge van dit willekeurige aspect resulteert RDF steeds in unieke combinaties. Bij het opstellen van een RDF binnen ALGLIB moeten een aantal constanten worden meegegeven. Dit zijn voornamelijk een aantal instellingen, de trainingsdata en het object waarin de boom moet worden bijgehouden. De initialisatie kan hieronder gevonden worden, samen met een korte uitleg bij elke constante. alglib.dfbuildrandomdecisionforest(features, nSamples, nFeatures, RDFClasses, RDFTrees, RDFRatio, out info, out df, out dfreport);
features nSamples nFeatures RDFClasses RDFTrees RDFRatio info df dfreport
De trainingsdata Het aantal samples in de trainingsdata Het aantal waardes per sample van de trainingsdata Het aantal verschillende klassen om in te delen Het aantal verschillende bomen die aangemaakt moeten worden De verhouding tussen testdata en trainingsdata bij het aanmaken van de RDF Integerwaarde die de status van de RDF bijhoudt DecisionForest, dit object houdt de classificatieboom bij Een object met statistische data over de classificatie
Tabel 4.1: Uitleg bij de gebruikte waardes om het classificatiesysteem te initialiseren.
De constanten RDFTrees, RDFRatio en RDFClasses kunnen aan de hand van het externe XML bestand ingesteld worden. In ditzelfde bestand wordt ook de locatie van de trainingsdata meegegeven. Voor de opmaak van dit bestand wordt verwezen naar 4.4. Uit de trainingsdata worden de overige input waarden (nSamples, nFeatures) bepaald. Om de classificatiefout te minimaliseren, en zo dus een meer accurate en consistente classificatie
4.2 Random Decision Forest
48
te bereiken, werd op experimentele wijze de waarde van RDFTrees en RDFRatio bepaald. Deze kunnen afgeleid worden uit onderstaande grafieken. Bij deze berekeningen werd de classificatie telkens 50 keer herhaald. Na de 50 herhalingen werd het gemiddelde genomen uit de resultaten, om zo eventuele uitschieters zo goed mogelijk te compenseren. Om de fout van de classificatie voor te stellen wordt gebruik gemaakt van de zekerheid van elke classificatie. De onzekerheid van elke classificatie wordt opgeteld en op het einde wordt deze waarde gedeeld door het aantal classificaties. Stel dat het systeem 84% zeker is dat de meegegeven beweging behoort tot een bepaalde klasse, dan wordt 0,16 opgeteld bij de teller van deze verhouding. Eerst wordt de resulterende beslissingsboom ge¨evalueerd door de trainingsdata te classificeren. Dit geeft een beeld van de mogelijke overlap in de opgestelde bewegingen. Wanneer twee bewegingen sterk op elkaar gelijken zal de beslissingsboom minder zeker zijn van de classificaties van deze bewegingen, waardoor de foutwaarde hoger zal liggen. Wanneer deze grafieken werden opgesteld, werd de fout per klasse afzonderlijk bijgehouden. Het is echter onnodig dat de fouten voor elke klasse apart worden beschouwd in deze grafieken. Ook heeft deze test bij het begin van deze controle aangetoond dat de trainingsdata nog moest uitgebreid worden.
4.2 Random Decision Forest
49
Figuur 4.1: De invloed van RDFRatio en RDFTrees op de classificatie.
Op deze eerste grafiek wordt de evaluatie van de trainingsdata afgebeeld. Deze werd bekomen door na het aanmaken van de beslissingsboom alle trainingsdata te analyseren en het gemiddelde te nemen uit de fouten van de correcte classificaties. Het resultaat is de gemiddelde fout per classificatie in functie van RDFTrees en RDFRatio. Hoe kleiner de gemiddelde fout, hoe beter de resultaten zullen zijn. Uit deze grafiek valt dan ook snel af te leiden dat de waarde van RDFRatio zo dicht mogelijk bij 1 moet liggen voor de beste resultaten bij controle van de trainingsdata. Hoe dichter de waarde van RDFRatio ligt bij 1, hoe beter de beslissingsboom zal reageren op de data die in de trainingsset staat. Het is echter gewenst dat er een beslissingsboom wordt gegenereerd die optimaal werkt op alle data, voornamelijk ook data die niet in de trainingsset staat. De grafiek toont ook dat de waarde van RDFTrees slechts een beperkte invloed heeft. Hoewel de gemiddelde fout daalt wanneer deze waarde stijgt, moet opgemerkt worden dat te grote waardes voor RDFTrees ervoor zullen zorgen dat de opstarttijd van het programma sterk zal oplopen, terwijl er slechts een zeer kleine winst is in accuraatheid. Om dit aan
4.2 Random Decision Forest
50
te tonen worden 2 instellingen vergeleken, namelijk (500;0.95) en (1000;0.95). Hoewel er dubbel zo veel bomen getraind worden, is er slechts een winst van 1.6% aan accuraatheid. Ook zorgt een grotere waarde van RDFTrees voor een langere classificatietijd, doordat meer opgestelde bomen moeten overlopen worden per classificatie. Het is echter veel belangrijker dat de aangemaakte beslissingsboom optimale resultaten levert op nieuwe testdata. Daarom worden de voorgaande instellingen gebruikt om de testdata te evalueren. Daar er slechts een gering verschil is in accuraatheid bij de keuze van de waarde van RDFTrees, wordt deze waarde vastgezet op 500 gedurende deze evaluatie. Het resultaat van deze test wordt afgebeeld in onderstaande grafiek.
Figuur 4.2: De invloed van RDFRatio en RDFTrees op de testdata.
Uit de grafiek valt duidelijk af te leiden dat de testdata minder goede resultaten levert dan wanneer de beslissingsboom gecontroleerd wordt met de trainingsdata. Bij het classificeren van de testdata is de conclusie dat de beste resultaten zich voordoen wanneer de waarde voor RDFRatio zo dicht mogelijk bij 1 gekozen wordt. Deze bevinding zegt echter veel meer over de gebruikte trainingsdata dan over de waarde van RDFRatio. Hieruit mag namelijk afgeleid worden dat de trainingsdata zeer goed de verschillende mogelijkheden van werkelijk gebruik leert aan het systeem. Uit de grafiek wordt afgeleid dat de gemiddelde fout een acceptabele waarde van 5% bereikt wanneer RDFRatio groter wordt dan 0,5. Bij het testen van het volledige framework werden de bewegingen telkens bijgehouden
4.3 Systeemconstanten
51
in een bestand. Naast de bewegingsvector werd ook de classificatie bijgehouden. Deze classificatie werd echter gemaakt voordat de trainingsdata geoptimaliseerd werd. Hieruit bleek ook snel de invloed van de trainingsdata. Zo waren er in het begin van de verwerking van de testdata een aantal foutieve classificaties. Bij nader manueel onderzoek bleek echter dat de vermelde klasse in de testdata foutief was, terwijl de nieuwe classificatie correct was. Bij het classificeren van de testdata zijn er 3 belangrijke mogelijkheden. Correcte classificaties zijn de waarden die binnen de juiste klasse werden geplaatst met een zekerheid die groter is de grenswaarde RDFThreshold. Deze waarde wordt in het volgende onderdeel besproken. Wanneer de beslissingsboom een beweging binnen een klasse plaatst met een zekerheid die kleiner is dan de grenswaarde, is dit een slechte classificatie. Hier wordt geen belang gehecht aan het correct indelen van de beweging omdat de onzekere bewegingen niet verwerkt worden. Het is echter problematischer wanneer een beweging in de verkeerde klasse wordt ingedeeld met een zekerheid die groter is dan de grenswaarde. Dit is een foute classificatie. Wanneer het procentueel aantal foute classificaties berekend wordt, levert dit een betrouwbaar resultaat op voor waardes van RDFRatio groter dan 0,3. Wanneer voor RDFRatio de waarde 0,1 wordt gekozen, worden 20% van alle classificaties in de verkeerde klasse geplaatst. Vanaf RDFRatio groter wordt dan 0,3 daalt dit gehalte tot minder dan 3%. Dezelfde conclusie mag gemaakt worden wanneer het aantal slechte classificaties wordt bekeken. Als RDFRatio gelijk is aan 0,1 levert het systeem meer dan 25% slechte classificaties. Vanaf RDFRatio groter wordt dan 0,5 daalt het aantal slechte classificaties tot minder dan 5% van het totaal. Uit de testen met de trainingsdata en de testdata kan besloten worden dat de classificatie de gewenste accuraatheid levert wanneer RDFRatio een waarde heeft tussen 0,6 en 1. Om nog ruimte te laten voor nieuwe, onbekende bewegingen wordt de waarde 0,85 verkozen. De boven vermelde procentuele berekeningen bevestigen dat dit een goede waarde is. Om het gedrag van het systeem eenvoudig te kunnen wijzigen, wordt gebruik gemaakt van systeemconstanten. Deze constanten en hun betekenis worden in detail besproken in het volgende onderdeel
4.3
Systeemconstanten
In dit onderdeel komen de systeemconstanten aan bod. Dit zijn de constanten die het gedrag van het systeem wijzigen. Hieronder vallen ook de instellingen van de classificatie.
4.3 Systeemconstanten
52
Daar de instellingen van de classificatie reeds besproken werden, komen ze in dit onderdeel niet meer aan bod. Bij elke constante wordt het doel, gebruik en invloed bekeken. MotionLength Bij het bepalen van de bewegingssnelheid van elke hand, wordt een geschiedenis bijgehouden van de voorbije frames. De verplaatsing van elke hand wordt dan berekend door de huidige positie te vergelijken met de positie van hetzelfde hand op een van de voorbije frames. De constante MotionLength bepaalt hoe ver terug gegaan wordt in de tijd voor deze berekening. Dit bepaalt tevens ook de grootte van de lijst waarin de voorbije skeletten worden bijgehouden. Het is niet nodig om meer skeletten bij te houden dan deze constante aangeeft, vermits deze niet meer aangesproken worden. Deze constante wordt enkel gebruikt bij de eerste omzetting van het inkomende skelet naar bewegingssnelheid en richting. Daarna wordt MotionLength niet meer aangesproken voor berekeningen, maar de invloed van deze waarde werkt door tot op het moment van de classificatie. Bij een grotere waarde van MotionLength wordt verder in het verleden gewerkt voor de berekeningen. Hierdoor wordt het systeem minder gevoelig aan ruis. Maar, dit resulteert ook in een verminderde gevoeligheid aan korte bewegingen van de gebruiker. Doordat er verder in het verleden wordt teruggekeken, moet het systeem ook langer wachten voor dat de acties van de gebruiker gebruikt worden voor de analyse. Dit langer wachten resulteert in een grotere detectietijd, hetgeen een negatieve invloed heeft op de gebruikerservaring. Als de waarde echter te klein wordt, resulteert dit in een systeem dat overgevoelig is voor korte bewegingen. Hier moet wel benadrukt worden dat de ruis op de skelet data dan ook kan aanzien worden als een beweging. Dit kan dus resulteren in de detectie van foutieve of ongewenste interacties. Als men kijkt naar de invloed van deze constante op de detectietijd, is het snel duidelijk dat deze waarde zo klein mogelijk moet zijn. Bij het bepalen van een optimale waarde voor de constante MotionLength moet dus enerzijds gekeken worden naar de gevoeligheid voor ruis en snelle bewegingen van de gebruiker. Anderzijds moet de verwerkingstijd van het hele systeem zo laag mogelijk gehouden worden.
4.3 Systeemconstanten
53
MotionThreshold Het gebruik van deze constante werd reeds een aantal keer aangehaald. MotionThreshold bepaalt de basis voor de berekeningen van de minimumsnelheid voor detectie. Bij de berekening van de uiteindelijke minimumsnelheid is er een lineair verband tussen de basiswaarde, MotionThreshold, en het resultaat van de berekening. Daarom is elke opmerking bij de minimumsnelheid ook van toepassing op de waarde van deze constante. Wanneer de minimumsnelheid te hoog ligt, is dit nefast voor de gebruikerservaring en de werking van het systeem. In dit geval moet de gebruiker sneller bewegen dan wat natuurlijk aanvoelt. Hierdoor wordt het moeilijker om het systeem correct te gebruiken. Wanneer de minimumsnelheid echter te klein wordt, is dit minstens even nadelig voor het systeem. Bij een te lage minimumsnelheid zal de detectie opnieuw overgevoelig worden. Zo kan het systeem te snel beginnen registeren en kan deze registratie doorgaan nadat de bedoelde beweging reeds werd be¨ındigd. Hierdoor zal het systeem niet alleen de gewenste interactie analyseren, maar ook wat vooraf gaat aan deze beweging. Dit kan bijvoorbeeld voorkomen wanneer de gebruiker de handen naar een gewenste startpositie brengt voor de aanvang van de interactie. Ook resulteert een te lage minimumsnelheid in een systeem dat overgevoelig is voor ruis. Een optimale waarde voor de minimumsnelheid, en dus uiteindelijk voor MotionThreshold, levert een systeem dat bewegingen detecteert bij een natuurlijke snelheid, maar ongevoelig is voor mogelijke ruis. ProcessTiles Bij omzetting van de bewegingsdata naar de bewegingsvector werd aangehaald dat hierbij de data wordt opgedeeld in 4 gelijke delen. De waarde 4 wordt bepaald door de constante ProcessTiles. Deze constante is ook onlosmakelijk verbonden met de opmaak van de training- en testdata van het systeem. Een grotere waarde voor deze constante resulteert in meer verschillende mogelijkheden per beweging. Hierdoor ziet men dan ook een grotere set van trainingsdata. Dit is niet noodzakelijk slecht, maar zeker ook niet altijd even goed. Wanneer de bewegingsdata wordt opgesplitst in een groter aantal velden, krijgt elk datapunt een grotere invloed in zijn veld. Meer mogelijkheden kunnen resulteren in een preciezer systeem, omdat de relatieve invloed
4.3 Systeemconstanten
54
van elk beeld binnen zijn plaats in de bewegingsvector groter wordt. Maar dit resulteert dan ook in een stijgende invloed van ruis bij de detectie en analyse van de beweging. Wanneer deze constante kleiner wordt, resulteert dit op de eerste plaats in een sterke verlaging van het aantal mogelijke bewegingen. Hierdoor gaat een groot deel van de bewegingsdata verloren. Ook verlaagt dit de precisie van de bewegingsanalyse. Het resulteert in en systeem dat de data onnodig veel vereenvoudigt, waardoor de kans op foutieve classificatie stijgt. Deze waarde werd binnen dit onderzoek reeds in het begin vastgelegd. Om meer vrijheid te leveren aan verdere ontwikkeling van dit framework, werd het wel mogelijk gemaakt om deze te veranderen. Het is belangrijk om te vermelden dat wanneer deze constante gewijzigd wordt, er een volledig nieuwe set aan trainingsdata moet worden aangemaakt. TimerLength Zoals reeds werd aangegeven in 4.1, wordt na elke beweging de detectie voor een bepaalde tijd onderdrukt. Deze constante bepaalt hoe lang dit duurt. Bij de onderdrukking van de detectie moet wel aangegeven worden dat het enkel de detectie is die onderdrukt wordt. De user feedback en verwerking van de net geclassificeerde beweging lopen zonder onderbreking verder. Wanneer deze onderdrukkingstijd te groot wordt genomen, kan het gebeuren dat een correcte beweging niet of slechts gedeeltelijk wordt geanalyseerd. Wanneer de gebruiker bijvoorbeeld snel een aantal opeenvolgende bewegingen wil doen, zullen niet alle uitgevoerde beweging correct geregistreerd worden. Dit kan zorgen voor een verminderde gebruikerservaring. Als de tijd kleiner wordt genomen, kan de detectie reeds opnieuw beginnen wanneer de gebruiker nog niet klaar is voor een nieuwe interactie. Zo kan bij een te korte afkoeltijd een deel van de terugkerende beweging geregistreerd worden. Dit kan dan resulteren in ongewenste resultaten. Bij het opstellen van deze constante moet gekozen worden voor een waarde die enerzijds voldoende tijd geeft om eventueel de handen terug naar het lichaam te brengen, maar die niet te groot is om geen bewegingen te missen.
4.3 Systeemconstanten
55
DepthDifference Bij een natuurlijke houding voor non-verbale interactie worden de handen steeds iets vooruit gebracht. Deze constante bepaalt het minimale verschil in afstand tussen de handen en de schouders van de gebruiker. Het is eenvoudig om in te beelden dat een te grote waarde voor deze constante zal resulteren in zeer slechte resultaten. Het bemoeilijkt de interactie tussen het systeem en de gebruiker. Daar de gebruiker de handen verder vooruit moet plaatsen, zal dit resulteren in een onnatuurlijke en ongemakkelijke houding. Dit is slecht voor de gebruikerservaring en kan resulteren in een vroegtijdige stopzetting van het gebruik van het systeem. Maar toch is het belangrijk dat deze constante in het systeem zit. Het belang van DepthDifference wordt ge¨ıllustreerd met een voorbeeld. Wanneer de gebruiker een enkelhandige interactie wenst uit te voeren, zal de hand die niet gebruikt wordt veelal langs de zijde van de gebruiker blijven. Op deze positie is het dus belangrijk voor het systeem om te weten dat de tweede hand onbelangrijk is. Wanneer de constante DepthDifference dus te klein wordt gekozen, kunnen de bewegingen van de tweede hand wel geanalyseerd worden. Hierdoor kan het systeem de beweging foutief classificeren. Deze waarde wordt niet be¨ınvloed door de afstand tussen de gebruiker en de camera. Omdat er bij de berekeningen met DepthDifference gewerkt wordt met de re¨ele afstand tot de camera voor zowel het lichaam als de handen, wijzigt de gewenste afstand tussen de handen en het lichaam niet. Om de waarde voor deze constante te kiezen, kan men rekening houden met de menselijke anatomie. Als basis voor een natuurlijke houding bij de interactie werd gekeken hoe de gebruikers werken met dit systeem. Een vaak voorkomende pose is de bovenarmen naast ˆ °. het lichaam en de onderarmen vooruit. Hierbij vormen de ellebogen dus een hoek van 90A Uit deze houding werd een maximum waarde afgeleid voor DepthDifference, namelijk de lengte van de onderarm. Om rekening te kunnen houden met een breed doelpubliek werd een waarde gekozen die iets onder dit maximum zit. RDFThreshold Bij de classificatie van elke beweging wordt meegegeven hoe zeker de Classificatie entiteit is van zijn antwoord. Om te voorkomen dat onzekere bewegingen worden geregistreerd, maakt dit systeem gebruik van RDFThreshold. Via deze waarde kan ingesteld worden wat de minimale zekerheid moet zijn van het systeem bij elke classificatie.
4.4 Optimalisatie van het systeem
56
Wanneer deze waarde te groot wordt genomen, resulteert dit in het wegfilteren van mogelijks correcte classificaties. Zo worden dan enkel de bewegingen doorgelaten die heel dicht liggen bij de trainingsdata. Hierdoor gaat een groot voordeel van een beslissingsboom verloren, namelijk dat dergelijke classificatie methodes zeer goede resultaten leveren bij nieuwe data. Bij een te lage drempelwaarde kunnen foutieve classificaties wel worden doorgelaten. Dit kan zorgen voor een ongewenste reactie op een beweging. De waarde van RDFThreshold is zeer sterk afhankelijk van de gebruikte trainingsdata. Wanneer deze trainingsdata niet volstaat, zullen nieuwe bewegingen een lagere zekerheid hebben. Daarom moet deze drempel experimenteel bepaald worden uit de resultaten van de training- en testdata. Bij de optimalisatie van het volledige systeem moeten alle systeemconstanten samen bekeken worden. Het aanpassen van 1 constante heeft meestal zowel positieve als negatieve invloeden op de werking. Het is dan ook belangrijk om aandacht te besteden aan elke variabele. Het doel is om een set van constanten te vinden die zo veel mogelijk positieve invloeden heeft, terwijl ze elkaars negatieve veranderingen zo goed mogelijk annuleren. De keuze van dergelijk systeem komt aan bod in het volgende onderdeel.
4.4
Optimalisatie van het systeem
Bij het optimaliseren van de systeemconstanten moet rekening gehouden worden met de invloed van de ene constante op de werking in een ander deel van het systeem. Zo heeft een verlaging van MotionThreshold gevolgen die doordringen tot aan de classificatie. Bij een wijziging van deze constanten moet dus het volledige systeem getest en ge¨evalueerd worden. Eerst wordt een bereik opgesteld voor elke systeemconstante. De mogelijke waardes binnen dit bereik worden op experimentele wijze ge¨evalueerd. Aan de hand van MotionLength wordt de gevoeligheid ingesteld aan snelle wijzigingen. De aandacht ligt vooral bij zo weinig mogelijk vertraging voor het systeem. De resulterende gevoeligheid voor ruis wordt dan weggewerkt door de waarde van MotionThreshold af te stemmen op de gekozen waarde voor MotionLength. Voor de waarden van TimerLength en DepthDifference werd gezocht naar de waarden die de beste resultaten leverden zonder in te boeten aan gebruikerscomfort.
4.5 Kinect 2
57
De gekozen waarden van deze constanten wordt hieronder gegeven. <SystemSettings> <motionLength>4 <motionThreshold>0,04 <processTiles>4 1500 <depthDifference>250 5 500 0,85 0,85 C:/RDFTrainingsdata.txt
4.5
Kinect 2
Een week voor het einde van dit onderzoek werden de eerste aankondigingen van een nieuwe Xbox console bekend gemaakt, genaamd Xbox One. Bij deze console zit ook de nieuwe Kinect camera. Daar de volledige specificaties worden vrijgegeven na de deadline van deze studie, wordt hier berust op informatie die verkregen werd via een exclusieve preview bij Wired.com [21]. De informatie bij deze voorstelling werd geleverd door Scott Evans, de project manager van Research & Development voor New User Interfaces. Hier worden enkel de veranderingen besproken die relevant zijn in dit onderzoek. De verschillen tussen de huidige Kinect sensor en de nieuwe versie worden gegeven in tabel 4.2
4.5 Kinect 2
58 Kinect 1280x960 @ 30 FPS 640x480 @ 30 FPS
Kinect 2 Kleurbeeld 1920x1080 @ 60 FPS Dieptebeeld High Definition @ 30 FPS resolutie nog niet vrijgegeven Dieptemeting Gestructureerd IR patroon Active IR, ToF FOV 57 ◦ (H), 43 ◦ (V) Breedbeeld grootte nog niet vrijgegeven Skeleton Joints: precisie 2 joints per hand 5 joints per hand Max. aantal personen 2 6 Verbinding USB2.0 USB3.0 Tabel 4.2: De verschillen tussen de eerste en de tweede generatie van de Kinect camera.
Het eerste aandachtspunt is de stijging in zowel beeldresolutie als in FOV. Bij het gebruik van deze camera voor bewegingsinteractie zal dit een zeer gunstige invloed hebben voor de precisie van de detectie. De omschakeling van gestructureerd licht naar een actieve IR sensor zorgt voor een veel betere werking bij variabele belichtingswaardes. Uit het artikel werd afbeelding 4.3 gehaald om deze werking te demonstreren.
4.5 Kinect 2
59
Figuur 4.3: De werking van het actieve IR beeld bij variabele belichting.
In deze afbeeldingen kan gezien worden dat het actieve IR beeld geen breedbeeld is. Dit kan echter enkel bevestigd worden bij de officiele aankondiging van alle specificaties. Wat hierbij wel belangrijk is, is dat het actieve IR beeld niet be¨ınvloed wordt door de aanwezigheid of afwezigheid van licht. Dit heeft positieve gevolgen voor de beeldverwerking, omdat er zo geen verlies is van kwaliteit bij variabele belichtingswaarden. Ook opent dit potentieel meer mogelijkheden om de camera te gebruiken in direct zonlicht, maar dit moet eerst bevestigd worden door Microsoft. Tijdens de demonstratie van de nieuwe Kinect camera werd aangetoond dat de verwerkende software beter kan omgaan met joint occlusion. Dit is een term die gebruikt wordt bij skeletal tracking wanneer meerdere lichaamsdelen zich in dezelfde lijn naar de camera bevinden.
4.5 Kinect 2
60
Omdat het aanmaken van het skeletbeeld gebeurt aan de hand van een classificatiemethode, kan er steeds een kleine onzekerheid optreden bij elk lichaamsdeel. Bij joint occlusion wordt deze onzekerheid sterk vergroot, waaruit foutieve data kan ontstaan.De camera die voor dit onderzoek gebruikt wordt, heeft hiermee voornamelijk problemen wanneer de handen zich voor het bovenlichaam van de gebruiker bevinden. Daar dit een natuurlijke houding is waar de camera niet goed mee kan omgaan, plaatst dit een belangrijke beperking op het systeem. Uit het artikel over de nieuwe Kinect camera, voornamelijk uit de demonstratievideo, kan afgeleid worden dat Kinect 2 betere resultaten levert bij deze houding. Deze verandering, samen met de grotere precisie van het diepte- en kleurbeeld, resulteert in een grotere accuraatheid bij het opstellen van het skeletbeeld. Dit heeft positieve gevolgen voor de mogelijke bewegingen, daar er nu meer precieze data kan gebruikt worden voor de verwerking. In het volgende hoofdstuk wordt de werking van de ontwikkelde demo applicatie bekeken en ge¨evalueerd aan de hand van de opgestelde onderzoeksvragen.
RESULTATEN
61
Hoofdstuk 5 Resultaten 5.1
Testopstelling
Om het ontwikkelde framework te evalueren werd gebruik gemaakt van een testopstelling. De opstelling bestond uit een computerscherm en een Kinect camera, zoals reeds werd aangegeven in afbeelding 3.1. De vrije ruimte voor de camera was voldoende groot om het systeem te kunnen testen op verschillende afstanden en met meerdere mensen. De gebruikte instellingen waren het resultaat van de reeds besproken optimalisatie. Omdat de gebruikerstesten uitgevoerd werden op de opendeurdag, werd gekozen om afbeeldingen van de vorige opendeurdag te gebruiken als content. Voor de bewegingen werden vier intu¨ıtieve bewegingen gekozen, namelijk volgende of vorige afbeelding selecteren en de huidige afbeelding groter of kleiner maken. Om de huidige afbeelding op het scherm te wijzingen worden de swipes gebruikt. Wanneer het rechterhand naar links wordt bewogen, wordt de volgende afbeelding op het scherm geplaatst. Voor de vorige afbeelding wordt het linkerhand naar rechts bewogen. Om de schaal van de afbeelding kleiner of groter te maken, worden de handen respectievelijk naar elkaar toe of van elkaar weg bewogen. De camera wordt in de directe omgeving van het scherm geplaatst. Wanneer de gebruiker zich naar het scherm richt, staat deze in het gezichtsveld van de camera. Hier is het aspect intu¨ıtiviteit belangrijk. De camera zelf moet zo opgesteld staan dat de detectie onverhinderd mogelijk is over het hele bereik van de diepte.
5.2 Resultaten
5.2
62
Resultaten
Voor een bewegingsverwerkend programma is noodzakelijk om realtime de inkomende data te verwerken. De ontwikkelde testapplicatie haalt een gemiddelde van 25 FPS. Hieruit kan afgeleid worden dat 83% van de inkomende skeletdata verwerkt en geanalyseerd wordt door het systeem. Dit is ten voordele van de precisie van het systeem: hoe meer data kan verwerkt worden, hoe correcter de classificatie kan werken. Een mogelijke verklaring voor dit relatief hoog aantal beelden per seconde is dat er slechts een klein deel van de totale informatie wordt verwerkt. Het hoge aantal frames per seconde wordt ook weerspiegeld in de user feedback, welke werkt zonder merkbare onderbrekingen of vertragingen. De user feedback van deze testapplicatie houdt in dat de handen als cirkels worden voorgesteld op de afbeeldingen. Dankzij deze user feedback kan snel het voordeel van de toegepaste smoothing filter worden aangetoond. Zonder deze filter ziet men inconsistente representaties van de handen. Met de gekozen filter wordt dit een accuraat resultaat zonder willekeurige sprongen, waarbij kan opgemerkt worden dat er geen merkbare vertraging is. Bij het aantal beelden per seconde moet benadrukt worden dat het be¨ınvloed zal worden door de performantie van de verwerkende hardware. Daar er geen gebruik gemaakt wordt van parallellisatie bij de verwerking van de inkomende skeletdata, kan de verwerkingssnelheid zo nog verhoogd worden waar nodig. Een van de eisen van dit framework is dat de werking voor elke gebruiker mogelijk is zonder kalibratie. Van zodra een gebruiker de dichtste persoon is bij de camera, wordt zijn skelet geselecteerd en verwerkt. Vanaf dan heeft deze gebruiker de controle over het systeem. Dit wordt aangetoond door de user feedback, waarbij de handen op het scherm de bewegingen van de gebruiker nabootsen. De applicatie werd getest op de opendeurdag van Howest. Het was snel duidelijk dat nieuwe gebruikers nood hadden aan een zekere vorm van user training, vooraleer de bezoekers met het ontwikkelde systeem konden werken. De user training kon zich in de meeste gevallen beperken tot het voortonen van de mogelijke bewegingen. De gebruikers die hierna nog problemen hadden met de interactie, werden geholpen door aan te tonen dat bij de detectie van de handen rekening gehouden wordt met de afstand tussen de handen en het lichaam. Tijdens deze testen werd ontdekt dat sommige parameters nog verder moesten geoptimaliseerd worden. De gebruiksvriendelijkheid van de testapplicatie steeg dankzij de commentaren van de gebruikers. Deze commentaren werden in rekening gebracht door de systeemconstanten aan te passen. Nadat de gebruikers bekend waren met de mogelijke
5.2 Resultaten
63
besturingen van het systeem, kon er gesproken worden van een goede interactie. De invloed van interactiviteit op de aandachtsspanne van de gebruikers kon in dit geval moeilijk getest worden. In de ruimte waar deze test werd uitgevoerd, stonden verschillende andere interactieve applicaties opgesteld. Ook werden de meeste bezoekers rondgeleid, waardoor de nadruk van elke groep lag op het vormen van een globaal beeld van de werking, minder op een langdurige interactie met elke applicatie. Toch werd door de gebruikers de nood aangetoond van een korte user training. Deze user training kan best uitgevoerd worden zonder onderbreking van de interactiviteit of de weergegeven content. Deze kan zich beperken tot het tekstueel omschrijven van de mogelijke bewegingen, telkens de actieve gebruiker wijzigt. Een betere optie kan een avatar zijn die de mogelijke bewegingen voortoont, maar ook andere methodes zijn mogelijk. Bij het genereren van user feedback moet ook het sociale aspect in rekening genomen worden. Het Honeypot effect, dat in de literatuurstudie werd besproken, kan sterk be¨ınvloed worden door de user feedback. De invloed van de user feedback op het Honeypot effect zal optimaal zijn wanneer deze de aandacht trekt van voorbijgangers. De user feedback blijft natuurlijk voornamelijk een communicatiemiddel tussen de applicatie en de actieve gebruiker. De opmerkingen van de gebruikers kunnen in twee categorie¨en ingedeeld worden. Enerzijds was er commentaar op de werking van de testapplicatie en het framework. Anderzijds waren er opmerkingen die hun oorzaak vonden bij de werking en de beperkingen van de gebruikte camera. Er werd zoveel mogelijk rekening gehouden met de feedback die naar het ontwikkelde systeem gericht was. Zo werden de systeemconstanten aangepast waar nodig. De opmerkingen over de werking van het systeem werden in de meeste gevallen opgelost door de waarden van MotionThreshold en DepthDifference aan te passen. Wanneer voor deze beide constanten een goede waarde werd gevonden, werd dit positief onthaald bij de latere gebruikers. Wanneer opbouwende kritiek werd gegeven bij problemen die veroorzaakt werden door de camera, was het minder eenvoudig om deze aan te wenden. Zoals in het vorige hoofdstuk werd aangehaald heeft de nieuwe Kinect camera een opmerkelijk betere beeldkwaliteit en kan deze beter overweg met joint occlusion. De opmerkingen die naar de camera gericht waren, zouden bijna allemaal opgelost kunnen worden wanneer de testapplicatie zou werken met de nieuwe Kinect camera. Hierbij moet natuurlijk opgemerkt worden dat dit mogelijks niet volledig van toepassing zou zijn, mochten de specificaties van de nieuwe camera wijzigen. Tijdens deze gebruikerstesten werden een aantal doelstellingen niet getest. Zo werd enkel gewerkt met de Kinect. Er werd geen gebruik gemaakt van andere camera’s. De mogelijke
5.2 Resultaten
64
invloed van interactiviteit op de aandacht van voorbijgangers van digitale reclame werd niet getest. Wegens gebrek aan bruikbare interactieve content voor deze testapplicatie, kon deze test niet uitgevoerd worden. Uit de beschrijving van het ontwikkelde systeem blijkt dat de verschillende onderzoeksvragen behandeld werden. Het onderzoek richtte zich enerzijds op de gekozen bewegingen en anderzijds op het gebruik van RDF als classificatiemethode. Het gebruik van RDF als classificatiemethode werd uitgevoerd in combinatie met een bewegingsvector. Deze bewegingsvector wordt opgesteld met behulp van temporele bewegingsinformatie die via de camera verkregen wordt. Uit de gebruikersstudie blijkt dat er ruimte is voor verdere ontwikkelingen bij de keuze van de bewegingen. Het doel bestaat eruit om een optimale gebruiksomgeving te ontwikkelen die de interesse wekt van gebruikers en tegemoet komt aan de verwachtingen van ondernemingen die bereid zijn om te investeren in deze nieuwe toepassing.
BESLUIT EN TOEKOMSTPERSPECTIEVEN
65
Hoofdstuk 6 Besluit en toekomstperspectieven 6.1
Besluit
Bij deze studie kwamen twee onderzoeksvragen aan bod. Enerzijds werd het gebruik van RDF beslissingsbomen bij temporele bewegingsinformatie in vraag gesteld. Anderzijds moest de intu¨ıtiviteit van een gekozen set van bewegingen onderzocht worden. Deze twee vragen werden gedurende dit onderzoek aangewend om een generiek framework te ontwikkelen dat realtime verwerking aanbiedt. Daar beslissingsbomen geen directe analyse leveren van beeldmateriaal, moet dit eerst verwerkt worden. Zo wordt de temporele bewegingsinformatie omgezet naar een bewegingsvector. Deze stap vormt een belangrijk aspect in het beantwoorden van de eerste onderzoeksvraag. De tweede onderzoeksvraag wordt beantwoord met behulp van een aantal bewegingen die opgesteld werden naar de eisen van de opdrachtgever. Deze bewegingen werden ge¨evalueerd aan de hand van gebruikerstesten. De gebruikerstesten toonden aan dat de gekozen bewegingen als intu¨ıtief mogen aanschouwd worden. Daar bewegingsinteractie voor het merendeel van het publiek nog onbekend is, is er echter wel nood aan een zekere gebruikerstraining om de mogelijkheden van het systeem aan te tonen. Om de globale bruikbaarheid van het framework te vergroten, worden een aantal vrijheden aangeboden. Zo kan de te gebruiken camera zelf gekozen worden. Dit biedt grote opportuniteiten voor dit systeem, daar de grootste beperkingen momenteel veroorzaakt worden door de gebruikte camera. De bewegingen worden ingesteld aan de hand van trainingsdata voor het classificatiesysteem. Daarnaast kunnen ook de reacties op de bewegingen en de weergegeven content gewijzigd worden. Dit geheel resulteert in een framework dat verschillende velden van interactiviteit kan worden toegepast.
6.2 Toekomstperspectieven
66
Om optimale interactiviteit te kunnen leveren bij digital signage, levert dit systeem een real-time beeldverwerking. Hierbij wordt de actieve gebruiker automatisch gekozen uit de personen die voor de camera staan zonder nood aan kalibratie. De bepaling van de actieve gebruiker gebeurt aan de hand van de minimale afstand tot de camera. Ook deze selectie methode kan gewijzigd worden bij verdere ontwikkelingen. Toch heeft dit systeem zijn beperkingen. Daar er gewerkt wordt met de temporele bewegingsdata, is het nog niet mogelijk om statische poses te detecteren. Dit plaatst een beperking op de mogelijke interactiemethodes. In het huidige systeem kan aangetoond worden dat de meeste beperkingen veroorzaakt worden door de gebruikte camera. De belangrijkste beperking hierbij is de maximale afstand tussen de gebruiker en de camera. De Kinect genereert skeletbeelden tot maximaal 4m afstand van de camera. Aan de andere kant zit er ook een beperking op de minimale afstand. Wanneer de gebruiker te dicht staat bij de camera, staat deze niet volledig in het beeld, waardoor er geen skeletbeeld kan aangemaakt worden. Het werkbare gebied van deze camera kan vastgelegd worden op 0,8m tot 4m.
6.2
Toekomstperspectieven
Het onderzoek is hiermee niet voltooid. Er blijft ruimte voor verder onderzoek en bijkomende ontwikkelingen. Op de eerste plaats kunnen kleine onderdelen geoptimaliseerd worden, zoals de keuze van de bewegingen. Hierrond zou een onderzoek kunnen gevoerd worden naar de invloed van verschillende bewegingen. Ook kan er nog veel gewijzigd worden bij de user feedback. Het huidige systeem, waarbij de handen worden afgebeeld op het scherm, kan vervangen worden door bijvoorbeeld een avatar die de bewegingen van de gebruiker nabootst. Ook kan een afbeelding van de actieve gebruiker weergegeven worden, om zo duidelijk te maken wie de controle heeft. Bij de huidige bewegingsdetectie kan ook verder ontwikkeld worden. Zo kan de minimale bewegingssnelheid dynamisch gemaakt worden. Alle bewegingen van het skelet kunnen bijgehouden worden. Uit deze data kan dan berekend worden wat de ondergrens is van de bewegingssnelheid voor de huidige actieve gebruiker. Daar deze ondergrens bepaald wordt door de gegevens van de huidige gebruiker, kan de MotionThreshold optimaal bepaald worden voor elke gebruiker. Bij het gebruiken van de scale up of scale down kunnen de co¨ordinaten van de beweging
6.2 Toekomstperspectieven
67
bijgehouden worden, om zo de grootte van de verschaling te laten afhangen van de grootte van de gemaakte beweging. Wanneer een afbeelding vergroot wordt, zou het systeem ook een mogelijkheid kunnen bieden om de afbeelding te verslepen. Deze twee uitbreidingen doen sterk denken aan het complexe besturingssysteem in de film Minority Report.
Figuur 6.1: Futuristische bewegingscontrole van beeldschermen in de film Minority Report
Andere velden waarin dit framework kan toegepast worden zijn bijvoorbeeld operatiekamers of fabriekszalen. Bij een operatiekamer wordt de mens-computer interactie beperkt omdat er geen fysiek contact mag optreden, daar de handen van de chirurg steriel moeten blijven. Hier zit dus een grote toekomst voor bewegingsinteractie. Ook in fabriekszalen, waar de handen van de arbeiders vaak te vuil zijn om te kunnen werken met touchscreens, kan bewegingsinteractie als een mogelijkheid aanzien worden. Er is ruimte voor verder onderzoek naar de invloed van interactiviteit bij digitale reclame op de aandacht van voorbijgangers. Zoals in de literatuurstudie werd aangetoond, heeft interactiviteit een zekere aantrekking voor gebruikers, maar dit werd nog niet ge¨evalueerd met echte reclameboodschappen. Om dit hoofdstuk af te sluiten kan gezegd worden dat er een toekomst mogelijk is voor bewegingsinteractie, maar eerst moet gewerkt worden aan de sociale acceptatie bij het brede publiek. Wanneer de acceptatie stijgt, zullen meer gebruikers interesse tonen in dergelijke systemen. Dit zal een gunstige invloed hebben op de verdere onderzoeken in dit gebied.
BIBLIOGRAFIE
68
Bibliografie [1] Benjamin Wassermann, Adrian Hardt, and Gottfried Zimmermann. Generic gaze interaction events for web browsers, 2012. [2] Brian Badillo, Doug A. Bowman, William McConnel, Tao Ni, and Mara Silva. Literature survey on interaction techniques for large displays, 2006. [3] Kollorz Eva, Penne Jochen, Hornegger Joachim, and Barke Alexander. Gesture recognition with a Time-of-Flight camera. Int. J. Intell. Syst. Technol. Appl., 5(3/4):334– 343, 2008. 1462100. [4] Stephan Hussmann, Thorsten Ringbeck, and Bianca Hagebeuker. A performance review of 3D TOF vision systems in comparison to stereo vision systems, 2008. [5] Scharstein Daniel and Szeliski Richard. High-accuracy stereo depth maps using structured light, 2003. 1965865 195-202. [6] K.K. Biswas. Gesture recognition using Microsoft Kinect, 2011. [7] Chen Qing, Fran, Malric ois, Zhang Yi, Abid Muhammad, Cordeiro Albino, M. Petriu Emil, and D. Georganas Nicolas. Interacting with digital signage using hand gestures, 2009. 1577630 347-358. [8] Michael Van den Bergh and Luc Van Gool. Combining RGB and ToF cameras for real-time 3D hand gesture interaction, 2011. 1957009 66-72. [9] Francke Hardy, Ruiz-del-Solar Javier, and Verschae Rodrigo. Real-time hand gesture detection and recognition using boosted classifiers and active learning, 2007. 1782127 533-547. [10] Chang-Yi Kao and Chin-Shyurng Fahn. A Human-Machine interaction technique: Hand gesture recognition based on Hidden Markov Models with trajectory of hand motion. Procedia Engineering, 15(0):3739–3743, 2011.
BIBLIOGRAFIE
69
[11] Ghahramani Zoubin. An introduction to Hidden Markov Models and Bayesian networks, pages 9–42. World Scientific Publishing Co., Inc., 2002. 505743. [12] Ho Tin Kam. Random Decision Forests, 1995. 844681 278. [13] Md AtiqurRahman Ahad, J. K. Tan, H. Kim, and S. Ishikawa. Motion History Image: its variants and applications. Machine Vision and Applications, 23(2):255–281, 2012. [14] Steven Verstockt. Depth-based gesture interaction 2, 2012. [15] John Hardy, Enrico Rukzio, and Nigel Davies. Real world responses to interactive gesture based public displays, 2011. 2107600 33-39. [16] R. G. O’Hagan, A. Zelinsky, and S. Rougeaux. Visual gesture interfaces for virtual environments. Interacting with Computers, 14(3):231–250, 2002. [17] Shoemaker Garth, Tsukitani Takayuki, Kitamura Yoshifumi, and S. Booth Kellogg. Whole body large wall display interfaces, 2010. 1754236 4809-4812. [18] Daniel Michelis and J¨org M¨ uller. The audience funnel: Observations of gesture based interaction with multiple large displays in a city center. International Journal of Human-Computer Interaction, 27(6):562–579, 2011. [19] Hespanhol Luke, Tomitsch Martin, Grace Kazjon, Collins Anthony, and Kay Judy. Investigating intuitiveness and effectiveness of gestures for free spatial interaction with large displays, 2012. 2307804 1-6. [20] Mehran Azimi. Skeletal joint smoothing white paper, 2012. [21] Peter Rubin. Xbox one revealed, 2013.
LIJST VAN FIGUREN
70
Lijst van figuren 2.1 2.2
het verloop van een infrarode lichtpuls bij ToF dieptemeting . . . . . . . . De optische vervorming van een gestructureerd lichtpatroon op een niet-vlak oppervlak, gedemonstreerd met LumiGrids. . . . . . . . . . . . . . . . . . . een voorbeeld van een gestructureerd strepenpatroon . . . . . . . . . . . . een deel van het gestructureerde IR lichtpatroon van de Kinect camera . .
10
26 28
3.5 3.6
De gebruikte hardware. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Een voorbeeld van de use case van het ontwikkelde systeem . . . . . . . . . Een abstracte kijk op de interactie tussen de gebruiker en de entiteiten van het systeem. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Het verloop van de interactie tussen onderlinge klassen van de View entiteit en de Gesture entiteit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Het klassediagram van de data klassen CompactSkeleton en Hand . . . . . De verwerking van bewegingsdata tot de nodige vector voor de classificatie.
36 37 42
4.1 4.2 4.3
De invloed van RDFRatio en RDFTrees op de classificatie. . . . . . . . . . De invloed van RDFRatio en RDFTrees op de testdata. . . . . . . . . . . . De werking van het actieve IR beeld bij variabele belichting. . . . . . . . .
49 50 59
6.1
Futuristische bewegingscontrole van beeldschermen in de film Minority Report 67
2.3 2.4 3.1 3.2 3.3 3.4
11 12 15
30
LIJST VAN TABELLEN
71
Lijst van tabellen 2.1 2.2
Concept matrix van de mogelijke interactie methodes . . . . . . . . . . . . Concept matrix van 3D beeldvormingstechnieken . . . . . . . . . . . . . .
7 14
3.1
Werking van de HandMotion code . . . . . . . . . . . . . . . . . . . . . . .
41
4.1 4.2
Uitleg bij de gebruikte waardes om het classificatiesysteem te initialiseren. 47 De verschillen tussen de eerste en de tweede generatie van de Kinect camera. 58