Gebarentaalherkenning met convolutionele neurale netwerken Lionel Pigou Promotor: prof. dr. ir. Benjamin Schrauwen Begeleiders: Sander Dieleman, Pieter-Jan Kindermans, Philémon Brakel Masterproef ingediend tot het behalen van de academische graad van Master of Science in de ingenieurswetenschappen: computerwetenschappen Vakgroep Elektronica en Informatiesystemen Voorzitter: prof. dr. ir. Jan Van Campenhout Faculteit Ingenieurswetenschappen en Architectuur Academiejaar 2013-2014 Gebarentaalherkenning met convolutionele neurale netwerken Lionel Pigou Promotor: prof. dr. ir. Benjamin Schrauwen Begeleiders: Sander Dieleman, Pieter-Jan Kindermans, Philémon Brakel Masterproef ingediend tot het behalen van de academische graad van Master of Science in de ingenieurswetenschappen: computerwetenschappen Vakgroep Elektronica en Informatiesystemen Voorzitter: prof. dr. ir. Jan Van Campenhout Faculteit Ingenieurswetenschappen en Architectuur Academiejaar 2013-2014 Woord vooraf Ik wens Sander Dieleman en Pieter-Jan Kindermans hartelijk te bedanken voor hun begeleiding. Hun expertise en passie voor het vakgebied was zeer motiverend. Voor het nalezen van deze masterproef wil ik graag David De Lille, Sander Dieleman en Pieter-Jan Kindermans bedanken. v Overzicht Gebarentaalherkenning met convolutionele neurale netwerken Lionel Pigou Promotor: prof. dr. ir. Benjamin Schrauwen Begeleiders: Sander Dieleman, Pieter-Jan Kindermans, Phil´emon Brakel Masterproef ingediend tot het behalen van de academische graad van Master in de ingenieurswetenschappen: computerwetenschappen Vakgroep Elektronica en Informatiesystemen Voorzitter: prof. dr. ir. Jan Van Campenhout Faculteit Ingenieurswetenschappen en Architectuur Academiejaar 2013-2014 Universiteit Gent Trefwoorden: gebarentaalherkenning, convolutionele neurale netwerken, machine learning, deep learning, Microsoft Kinect vi Sign Language Recognition Using Convolutional Neural Networks Lionel Pigou. Superisors: Sander Dieleman, Pieter-Jan Kindermans. Promotor: Benjamin Schrauwen. Ghent University - Department of Electronics and Information Systems Abstract—There is an undenying communication problem between the Deaf community and the hearing majority. Innovations in automatic sign language recognition try to break down this communication barrier. Our contribution proposes a recognition system using the Microsoft Kinect, convolutional neural networks (CNNs) and GPU acceleration. Instead of constructing complex handcrafted features, CNNs are able to automate the process of feature construction [1]. We are able to recognize 20 isolated gestures from the Italian Sign Language (ISL). The predictive model is able to generalize on users and surroundings not occuring during training with a validation accuracy of 91.7%. The final test accuracy is 95.7% in the context of the ChaLearn Looking at People 2014 (CLAP14) competition. I. I NTRODUCTION Very few people can understand sign language. This complicates communication between the Deaf community and the hearing majority. The alternative of written communication is cumbersome, because the Deaf community is generally less skilled in writing a spoken language [2]. Furthermore, this type of communication is impersonal and slow in face-toface conversations. If an accident occurs, it is often necessary to quickly communicate with the emergency physician where written communication is not always possible. The purpose of this work is to contribute to the field of automatic sign language recognition. There are two main steps in building an automated recognition system for human actions in spatio-temporal data [3]. The first step is to extract features from the frame sequences. This will result in a representation consisting of one or more feature vectors, also called descriptors. This representation will aid the computer to distinguish between the possible classes of actions. The second step is the classification of the action. A classification model will use the constructed representation to predict the class of the action. In our model, the feature extraction is automated by using convolutional neural networks (CNNs). An artificial neural network is used (ANN) for classification. II. R ELATED W ORK The work in our research is a continuation of the previous work by Roel Verschaeren in [4]. He proposed a CNN model that recognizes a set of 50 different signs in the Flemish Sign Language with an error of 2.5%, using the Microsoft Kinect. However, this was achieved by training and evaluating the model on a single person in a single environment. In [5] an American Language recognition system is presented with a vocabulary of 30 words. They constructed appearance-based representations and a hand tracking system (a) RGB (b) Depth map (c) User index (d) Skeleton Fig. 2. Dataset for the ChaLearn gesture recognition challenges of 2013 [8] and 2014. to be classified with a hidden Markov model (HMM). An error rate of 10.91% was achieved on the RWTH-BOSTON-50 database. The approach in [6] uses the Microsoft Kinect to exract appearance-based hand features and track the position in 2D and 3D. The classification results were obtained by comparing a hidden Markov model (HMM) approach with sequential pattern boosting (SP-boosting). This resulted in an accuracy of 99.9% on 20 different isolated gestures on their specifically constructed dataset and 85.1% on a more realistic one with 40 gestures. The Microsoft Kinect was also used in [7] that proposes a recognition system for 239 words of the Chinese Sign Laguage (CSL). Here, the 3D movement trajectory of the hands where used in addition to a language model to construct sentences. This trajectory is aligned and matched with a gallery of known trajectories. The top-1 and top-5 recognition rates are 83.51% and 96.32% respectively. III. M ETHODOLOGY A. Dataset The used dataset is available in the context of the following competition: ChaLearn Looking at People Challenge 2014 Track 3: Gesture Spotting (CLAP14). The same dataset is used as the 2013 ChaLearn Multi-modal Gesture Recognition competition [8]. CLAP14 consists of 20 different Italian gestures, performed by 27 users with variations in surroundings, clothing, lighting and gesture movement. The videos are recorded with a Microsoft Kinect. This means the depth map, user index (location of the user in the depth map) and the joint postitions are given (Figure 2). We used 6600 gesture samples in the development set of CLAP14 for our experiments: 4600 for the training set and 2000 for the validation set. The test Convolutions 16@5x5 Pooling 2x2x2 Convolutions 32@5x5 Pooling 2x2x2 Convolutions 48@4x4 Pooling 2x2x2 512 en Flatt Input videos Feature map 2@64x64x32 Layer 1 Layer 2 Layer 3 Feature extraction Fig. 1. 20 ANN Classification The architecture of the convolutional neural network. This illustustration only shows one of the two identical CNNs. set of CLAP14 is also considered as the test set for this work and constists of 3543 samples. The users and backgrounds in the validation set do not occur in the training set. The users and backgrounds in the test set can occur in the training and validation set. B. Preprocessing In the preprocessing, the highest hand and the upper body are cropped using the given joint information. This results in four video samples (hand and body with depth and grayscale) of resolution 64x64x32 (32 frames of size 64x64). Furthermore, the noise in the depth maps is reduced with thresholding, background removal using the user index, and median filtering. The end result is shown in Figure 3 information of the feature maps are pooled together. These techniques are performed in multiple layers as shown in Figure 1. For the pooling method, we used max-pooling: only the maximum value in a local neighborhood of the feature map will remain. To accommodate video data, the maxpooling is performed in three dimensions. However, using 2D convolutions resulted in a better accuracy. The architecture of the model consists of two CNNs, one for extracting hand features and one for extracting upper body features. Each CNN is three layers deep. Classification is done with a classical ANN with one hidden layer. An illustration of the architecture is depicted in Figure 1. Also, local contrast normalisation (LCN) as in [15] is applied in the first two layers and all artificial neurons are rectified linear units (ReLUs [16], [17]). D. Training details (a) Original (b) Noise reduction Fig. 3. (c) 4 input channels Preprocessing. C. Convolutional neural network CNNs (based on [9]) are feature extraction models in the field of deep learning that recently prove to be very succesful at image recognition [10], [11], [12], [13]. As of now, the models are used by various industry leaders like Google and Facebook. And recently, researchers at Google applied CNNs on video data [14]. CNNs are inspired by the visual cortex of the human brain. The artificial neurons in a CNN will only connect to a local region of the visual field, called a receptive field. This is accomplished by performing discrete convolutions on the image with filter values as trainable weights. Multiple filters are applied for each channel, and together with the activation functions of the neurons, they form feature maps. This is followed by a pooling scheme, where only the interesting During training, dropout [18] and data augmentation are used to generalise the model. The data augmentation is performed in realtime on the CPU during the training phase while the model trains on the GPU as in [10]. This consists of spatial and temporal translations, zooming, and rotations. We used Nesterov’s accelerated gradient descent (NAG) [19] with a fixed momentum-coefficient of 0.9 and mini-batches of size 20. The learning rate is initialised at 0.003 with a 5% decrease after each epoch. The weights in the CNNs are randomly inititialised with a normal distribution µ = 0 and σ = 0.04, and σ = 0.02 for the weights of the ANN. The biases in the CNNs are initialised with 0.2 and the biases in the ANN with 0.1. Experiments are conducted on one machine with a hexacore processor (Intel Core i7-3930K) and a NVIDIA GeForce GTX 680 GPU. The models are implemeted using the Python libraries Theano [20], and PyLearn2 [21] for the fast implementation of 2D convolutions by Alex Krizhevsky [10]. IV. R ESULTS The validation results of the most notable experiments are shown in Table I. We observe a validation accuracy of 91.70% (8.30% error rate) for our best model. Furthermore, ReLUs prove to be very effective with an improvement of 23.8% with TABLE I VALIDATION RESULTS . Tanh units ReLU + dropout + LCN (first 2 layers) + data augmentation Error rate (%) Impovement (%) 18.90 14.40 11.90 10.30 8.30 23.8 17.4 13.4 19.4 respect to tanh units. The accuracy on the test set is 95.68% and we observe a 4.13% rate on false positives for continuous predictions in the test videos. These results rank us fifth of the 35 registered teams for the CLAP14 competition. As of writing, the results and methods of the other participants are not yet publicly available. V. C ONCLUSION This work shows that convolutional neural networks can be used to accurately recognize different signs of a sign language, with users and surroundings not included in the training set. This generalization capacity of CNNs in spatio-temporal data can contribute to the broader research field on automatic sign language recognition. R EFERENCES [1] S. Ji, M. Yang, and K. Yu, “3D convolutional neural networks for human action recognition.” IEEE transactions on pattern analysis and machine intelligence, vol. 35, no. 1, pp. 221–31, Jan. 2013. [2] M. Van Herreweghe, “Prelinguaal dove jongeren en nederlands: een syntactisch onderzoek,” Universiteit Gent. Faculteit Letteren en Wijsbegeerte, 1996. [3] R. Poppe, “A survey on vision-based human action recognition,” Image and vision computing, vol. 28, no. 6, pp. 976–990, 2010. [4] R. Verschaeren, “Automatische herkenning van gebaren met de microsoft kinect,” 2012. [5] M. M. Zaki and S. I. Shaheen, “Sign language recognition using a combination of new vision based features,” Pattern Recognition Letters, vol. 32, no. 4, pp. 572–577, 2011. [6] H. Cooper, E.-J. Ong, N. Pugeault, and R. Bowden, “Sign language recognition using sub-units,” The Journal of Machine Learning Research, vol. 13, no. 1, pp. 2205–2231, 2012. [7] X. Chai, G. Li, Y. Lin, Z. Xu, Y. Tang, X. Chen, and M. Zhou, “Sign Language Recognition and Translation with Kinect,” 2013. [8] S. Escalera, J. Gonzlez, X. Bar, M. Reyes, O. Lopes, I. Guyon, V. Athistos, and H. Escalante, “Multi-modal gesture recognition challenge 2013: Dataset and results,” ICMI, 2013. [9] Y. Lecun, L. Bottou, Y. Bengio, and P. Haffner, “Gradient-based learning applied to document recognition,” Proceedings of the IEEE, vol. 86, no. 11, 1998. [10] A. Krizhevsky, I. Sutskever, and G. Hinton, “Imagenet classification with deep convolutional neural networks,” Advances in Neural Information, pp. 1–9, 2012. [11] D. Cires¸an, U. Meier, and J. Schmidhuber, “Multi-column deep neural networks for image classification,” in Computer Vision and Pattern Recognition (CVPR), 2012 IEEE Conference on. IEEE, 2012, pp. 3642– 3649. [12] M. D. Zeiler and R. Fergus, “Visualizing and understanding convolutional neural networks,” arXiv preprint arXiv:1311.2901, 2013. [13] I. J. Goodfellow, Y. Bulatov, J. Ibarz, S. Arnoud, and V. Shet, “Multidigit number recognition from street view imagery using deep convolutional neural networks,” arXiv preprint arXiv:1312.6082, 2013. [14] A. Karpathy, G. Toderici, S. Shetty, T. Leung, R. Sukthankar, and L. Fei-Fei, “Large-scale video classification with convolutional neural networks,” in CVPR, 2014. [15] K. Jarrett and K. Kavukcuoglu, “What is the best multi-stage architecture for object recognition?” Computer Vision, 2009 IEEE 12th International Conference on, pp. 2146–2153, 2009. [16] V. Nair and G. E. Hinton, “Rectified linear units improve restricted boltzmann machines,” in Proceedings of the 27th International Conference on Machine Learning (ICML-10), 2010, pp. 807–814. [17] X. Glorot, A. Bordes, and Y. Bengio, “Deep Sparse Rectifier Networks,” Proceedings of the 14th International Con- ference on Artificial Intelligence and Statistics, vol. 15, pp. 315–323, 2011. [18] G. E. Hinton, N. Srivastava, A. Krizhevsky, I. Sutskever, and R. R. Salakhutdinov, “Improving neural networks by preventing co-adaptation of feature detectors,” arXiv preprint arXiv:1207.0580, 2012. [19] I. Sutskever, J. Martens, G. Dahl, and G. Hinton, “On the importance of initialization and momentum in deep learning,” in Proceedings of the 30th International Conference on Machine Learning (ICML-13), 2013, pp. 1139–1147. [20] J. Bergstra, O. Breuleux, F. Bastien, P. Lamblin, R. Pascanu, G. Desjardins, J. Turian, D. Warde-Farley, and Y. Bengio, “Theano: a CPU and GPU math expression compiler,” in Proceedings of the Python for Scientific Computing Conference (SciPy), Jun. 2010, oral Presentation. [21] I. J. Goodfellow, D. Warde-Farley, P. Lamblin, V. Dumoulin, M. Mirza, R. Pascanu, J. Bergstra, F. Bastien, and Y. Bengio, “Pylearn2: a machine learning research library,” arXiv preprint arXiv:1308.4214, 2013. Inhoudsopgave Woord vooraf v Overzicht vi Afkortingen xii 1 Inleiding 1 1.1 Probleemstelling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.1.1 Vlaamse Gebarentaal . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.1.2 Automatische gebarentaalherkenning . . . . . . . . . . . . . . . . . . 2 1.2 Doelstelling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3 Herkenning van menselijke acties in spatio-temporele data . . . . . . . . . . 4 1.3.1 Beeldrepresentatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.3.2 Classificatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Aanverwante studies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.4.1 Omtrent gebarentaalherkenning . . . . . . . . . . . . . . . . . . . . . 7 1.4.2 Omtrent videoclassificatie met CNN’s . . . . . . . . . . . . . . . . . 8 Leeswijzer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.4 1.5 2 Theoretisch kader 2.1 2.2 9 Machine learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.1.1 Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.1.2 Overfitting en generalisatie . . . . . . . . . . . . . . . . . . . . . . . 10 2.1.3 Artificieel neuraal netwerk . . . . . . . . . . . . . . . . . . . . . . . . 11 2.1.4 Gradient descent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.1.5 Deep learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Convolutioneel neuraal netwerk (CNN) . . . . . . . . . . . . . . . . . . . . . 17 2.2.1 Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.2.2 Filterbank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.2.3 Max-pooling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 x xi Inhoudsopgave 2.2.4 2.3 Volledig netwerk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Optimalisatietechnieken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.3.1 Normalisatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.3.2 Momentum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.3.3 Dropout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.3.4 Data-augmentatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3 Onderzoeksopzet en resultaten 3.1 3.2 26 Dataset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.1.1 Eigenschappen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.1.2 Opdeling van de data . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Voorverwerking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.2.1 Bijsnijding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.2.2 Ruisonderdrukking in dieptebeeld . . . . . . . . . . . . . . . . . . . . 31 3.3 Architectuur, hyperparameters en training . . . . . . . . . . . . . . . . . . . 33 3.4 Opstelling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.5 Experimenten en validatieresultaten . . . . . . . . . . . . . . . . . . . . . . 37 3.5.1 Invloed van de invoerkanalen . . . . . . . . . . . . . . . . . . . . . . 38 3.5.2 Invloed van de architectuur . . . . . . . . . . . . . . . . . . . . . . . 39 3.6 Segmentatie en realtime demo . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.7 Eindresultaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 4 Conclusie 43 4.1 Besluit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 4.2 Aanbevelingen voor verder onderzoek . . . . . . . . . . . . . . . . . . . . . . 44 Bibliografie 45 Afkortingen ANN artificieel neuraal netwerk Aug data-augmentatie CNN convolutioneel neuraal netwerk Drop dropout FIFO first in, first out HMM hidden Markov model LCN lokaal contrast normalisatie LRN lokaal response normalisatie NAG Nesterov’s accelerated gradient ReLU rectified linear unit xii Hoofdstuk 1 Inleiding Het eerste hoofdstuk is de inleiding van de masterproef. Hier wordt de probleemstelling (Sectie 1.1) en de doelstelling (Sectie 1.2) uitgelicht. Verder wordt in Sectie 1.3 een inleiding gegeven omtrent de automatische herkenning van menselijke acties. Tot slot wordt er in Sectie 1.4 de prestaties en technieken van aanverwante studies besproken. 1.1 1.1.1 Probleemstelling Vlaamse Gebarentaal Vlaamse Gebarentaal is een visuele taal waarbij men begrippen communiceert door specifieke hand-, arm-, hoofd- en lichaamsbewegingen te maken. Het is een volwaardige taal met een eigen lexicon en grammatica onafhankelijk van het Nederlands (of een andere gesproken taal). De Vlaamse Gebarentaal kan gebruikt worden in alle (face-to-face) situaties waarin ook een gesproken taal gebruikt kan worden, gaande van een gesprek aan de ontbijttafel tot het geven van een academische presentatie. In tegenstelling tot wat velen denken, is “gebarentaal” geen internationale taal. In Vlaanderen gebruikt men de Vlaamse Gebarentaal, die verschillend is van de Frans-Belgische Gebarentaal in Walloni¨e of de Nederlandse Gebarentaal in Nederland. Er bestaan een vijftal dialecten of varianten van de Vlaamse Gebarentaal, die gebruikt worden in regio’s die ongeveer overeenkomen met de vijf Vlaamse provincies. Deze varianten verschillen slechts in beperkte mate [Van Herreweghe & Vermeerbergen, 2009]. Hierdoor verstaat slechts een kleine groep van mensen de lokale gebarentaal. Dit bemoeilijkt de communicatie tussen de Dovengemeenschap en horenden. Er zijn dove of slechthorende mensen die een gesproken taal kunnen beheersen, omdat ze niet doof geboren zijn of omdat ze het geleerd hebben, maar velen kunnen dit maar in beperkte mate. Ook hun schriftelijke 1 Hoofdstuk 1. Inleiding 2 vaardigheden in een gesproken taal (bijvoorbeeld het Nederlands) zijn gemiddeld beperkter dan die van de gemiddelde horende persoon [Van Herreweghe 96]. Bovendien is schriftelijke communicatie onpersoonlijk en te traag voor directe conversaties. Bij een ongeval is het vaak ook noodzakelijk te communiceren met de spoedarts en is schriftelijke communicatie niet altijd mogelijk. In dergelijke situaties worden vaak tolken Vlaamse Gebarentaal ingezet, maar een Vlaming met gehoorsbeperking krijgt voor priv´e-situaties (zoals een doktersbezoek) maar 18 tolkuren per jaar terugbetaald van de Vlaamse overheid. 1.1.2 Automatische gebarentaalherkenning Automatische gebarentaalherkenning heeft als doel het leven van mensen, die geen gesproken taal beheersen, te vergemakkelijken. Het herkennen van gebaren is voor de mens een relatief eenvoudige taak. Onze hersenen zijn namelijk in staat te interpreteren wat men te zien krijgt, waardoor men vrijwel onmiddellijk verschillende gebaren van elkaar kan onderscheiden. Mensen zien waar de handen zich bevinden, in welke richting de armen bewegen en hoe de vingers gestrekt of geplooid worden. Deze interpretatiemogelijkheden van de mens zijn zeer complexe neurologische fenomenen waar men nog altijd niet van weet hoe ze precies werken. De automatisering van gebarentaalherkenning introduceert een hele reeks van problemen waar men in eerste instantie niet aan zou denken. Dit komt omdat deze voor de mens triviaal of niet-bestaand zijn. Computers en slimme apparaten hebben de mogelijkheid om te “zien” door de aansluiting van een camera. Tegenwoordig is dat zelfs mogelijk met dieptezicht door 3D-cameratechnologie. Maar de interpretatiemogelijkheden van computers zijn nog ver verwijderd van die van de mens. Het enige wat de computer waarneemt zijn pixelwaarden. De grootte van die pixelwaarden is gebaseerd op de lichtintensiteit van het opgenomen beeld. Dat heeft als gevolg dat beelden uit een donkere ruimte heel andere pixelwaarden bevatten dan beelden uit een goed verlichte ruimte, terwijl beide beelden verder dezelfde zouden kunnen zijn. Gebarentaalherkenning is dus moeilijk, omwille van de grote variabiliteit van de invoer. De gebruiker kan ver van of dicht bij de camera staan, links of rechts, onder of boven in het beeld. De gebruikers kunnen klein of groot zijn, andere lichaamsverhoudingen hebben of verschillende kleding dragen. Ze zijn links- of rechtshandig, maken zeer expressieve of meer ingetogen gebaren. De achtergrond van de gebruiker kan storende elementen bevatten, er kunnen meerdere gebruikers in beeld komen of de ruimte kan slecht verlicht zijn. Deze problemen, en nog vele andere die niet vermeld werden, zijn zaken waar het ideale herkenningssysteem rekening mee moet houden. Een bijkomend probleem is dat gebarentaal uit een continue stroom van gebaren bestaat. Hoofdstuk 1. Inleiding 3 Deze continue stroom zal in eerste instantie automatisch gesegmenteerd moeten worden, omdat men moet weten wanneer een afzonderlijk gebaar begint en wanneer het eindigt. Men moet hiervoor rekening houden met de “bewegingsepenthesis”, dit is het fenomeen op de grens tussen twee gebaren waar men een beweging maakt om van het einde van het eerste gebaar over te gaan naar het begin van het tweede gebaar. Onderzoek naar zulke automatische segmentatie is zeer schaars [Yang et al., 2010], maar is desondanks een essentieel onderdeel voor het herkenningssysteem. Vlaamse Gebarentaal heeft daarnaast ook een specifieke grammatica, waarbij afzonderlijke gebaren gecombineerd worden tot grotere betekenisvolle eenheden, i.e. zinsdelen of hele zinnen. De automatisering hiervan vereist dat taalspecifieke regels worden toegepast om de herkende gebaren te combineren. Niet alleen in de dovengemeenschap is gebarentaal belangrijk, maar ook in sommige omgevingen of situaties waar gesproken taal niet mogelijk is. Enkele voorbeelden zijn vliegvelden, drukke restaurants en tijdens het diepzeeduiken. Men spreekt in deze gevallen eerder over afgesproken gebaren dan over een volwaardige taal. 1.2 Doelstelling Het doel van deze masterthesis is om een stap vooruit te maken in het domein van automatische gebarentaalherkenning met behulp van convolutionele neurale netwerken (afgekort door CNN’s) en GPU-acceleratie. Een CNN is een model uit deep learning, een subtak van machine learning. De recente succesverhalen van CNN’s in domeinen als videoclassificatie [Karpathy et al., 2014], [Ji et al., 2013] en fotoclassificatie [Krizhevsky et al., 2012], [Cire¸san et al., 2011a],[Cire¸san et al., 2011b] en de toepassing ervan in de industrie door o.a. Google en Facebook, staven het gebruik van deze techniek. Deze masterproef is een verderzetting op het werk van Roel Verschaeren, die zijn masterthesis aan de UGent in juni 2012 verdedigde [Verschaeren, 2012]. Hij heeft met succes een CNN ontwikkeld die 50 verschillende gebaren kan herkennen op een gebruiker met een nauwkeurigheid van 97.5%. Het model wordt getraind door elk gebaar tien keer op te nemen met een Microsoft Kinect om tot een dataset te komen van 500 voorbeelden. Dit moet herhaald worden voor elke gebruiker, aangezien het model niet kan trainen op de ene gebruiker en herkennen op de andere. De generalisering (het concept van generalisatie wordt ge¨ıntroduceerd in Sectie 2.1.2) van het model van Roel Verschaeren is ´e´en van de doelen voor deze masterproef. Dit wil zeggen dat het CNN gebaren moet herkennen op gebruikers en omgevingen die niet in de trainingsfase voorkomen. Hiervoor is de gebarendataset die Roel Verschaeren heeft Hoofdstuk 1. Inleiding 4 opgenomen niet voldoende, zoals aangetoond wordt in zijn werk. De dataset uitbreiden is een zeer tijdrovende taak en ik heb daarom beslist om de ChaLearn dataset [Escalera et al., 2013] te gebruiken die meerdere malen groter is, maar 20 gebaren bevat in plaats van 50. Naast generalisering is het ook de bedoeling state-of-the-art acceleratietechnieken voor CNN’s en neurale netwerken toe te passen om een competitief resultaat te behalen op de ChaLearn wedstijden van 2013 en 2014. Zonder optimalisatietechnieken, om de training te versnellen en het model te doen generaliseren, is het haast onmogelijk om competitieve resultaten te behalen. Verder zal een realtime herkenningssysteem ontwikkeld worden voor 20 verschillende ge¨ısoleerde gebaren, gebruik makend van de Microsoft Kinect. Om dit te verwezenlijken is een segmentatiesysteem nodig, dat automatisch bepaalt wanneer een gebaar begint en eindigt. Desondanks zal er de nadruk gelegd worden op classificatietechnieken en minder op segmentatietechnieken. Kort samengevat, zijn dit de hoofddoelen voor deze masterthesis: • verdere ontwikkeling van het CNN, gebaseerd op het werk van Roel Verschaeren, voor de herkenning van ge¨ısoleerde gebaren in een beperkt vocabularium, • generalisatie voor de herkenning op gebruikers en achtergronden die niet in de trainingset voorkomen, • acceleratie om de trainingsfase te versnellen, • segmentatie voor de herkenning in continue video’s en realtime toepassingen, • ontwikkeling van een realtime-demo, gebruik makend van de Microsoft Kinect 3D camera. 1.3 Herkenning van menselijke acties in spatio-temporele data Het herkennen van menselijke acties, inclusief gebaren(taal), in spatio-temporele data bestaat uit twee hoofdstappen (Figuur 1.1. De eerste stap is de extractie van features in de sequentie van beelden. Een video zal dus eerst getransformeerd worden in een representatie die robuuster is voor herkenning. Deze representatie bestaat uit ´e´en of meerdere featurevectoren (ook descriptors genoemd) . De tweede stap is de classificatie van de actie. Deze stap zal gebruik maken van de representatie om een klasselabel aan de invoervideo toe te kennen. De technieken en modellen die in deze sectie beschreven worden zijn gebaseerd op de onderzoekswerken [Poppe, 2010] en [Ali & Shah, 2010]. 5 Hoofdstuk 1. Inleiding Feature-extractie Video Beeldrepresentatie Classificatie Klasse Figuur 1.1: Overzicht van een herkenningssysteem met behulp van videodata. 1.3.1 Beeldrepresentatie De verschillende benaderingen voor de herkenning van menselijke handelingen en activiteiten is volgens [Ali & Shah, 2010] op te delen in categorie¨en op basis van representaties. Representaties kunnen gebaseerd zijn op: • Visuele features: men tracht hier het uiterlijk van het menselijk lichaam of lichaamsdelen te modelleren met featurevectoren zoals SIFT (Scale Invariant Feature Transform), Haar of HOG (Histogram of Oriented Gradients) descriptors. Met behulp van, bijvoorbeeld, Hidden Markov Modellen (HMM) kan er rekening gehouden worden met het tijdsaspect. • Vormfeatures: representaties gebaseerd op vormfeatures zullen randen en silhouetten extraheren om de pose van het menselijk lichaam te encoderen per frame. Dit kan eveneens uitgebreid worden naar meerdere frames door HMM of volumefeaturedescriptors te gebruiken. • Volumefeatures (3D-features): deze features worden ge¨extraheerd door de video’s als driedimensionale volumes te benaderen. Een mogelijke methode is om bovenstaande descriptors uit te breiden in drie dimensies, met de tijdscomponent als derde dimensie. Enkele voorbeelden zijn 3D SIFT, 3D HOG en 3D Haar descriptors. • Points/Region/Volume Of Interest (POI, ROI, VOI): hier worden punten (1D), gebieden (2D) of volumes (3D) getracked in de beelden van de video’s. De trajecten van deze features in de tijdsdimensie kunnen ook nuttig zijn. • Optical flow: deze features zijn gebaseerd op de bewegingsinformatie aanwezig in de video’s. De optical flow is de distributie van de snelheid van bewegende objecten in een beeld. Deze kunnen bepaald worden door schattingen te maken met opeenvolgende frames. Er bestaan dus beeldrepresentaties die de temporele dimensie in rekening brengen en anderen die enkel features extraheren per frame. Deze laatsten moeten rekenen op de classificatieprocedure om de temporele variaties te hanteren. Bij traditionele methoden moet er feature engineering gebeuren vooraleer een classificatie kan gemaakt worden. Dit wil zeggen dat er eerst een aantal featurevectoren moeten Hoofdstuk 1. Inleiding 6 gekozen worden en de extractie uit de invoer expliciet moet ge¨ımplementeerd worden. Met convolutionele neurale netwerken wordt automatisch geleerd tijdens de trainingsfase welke features het meest gunstig zijn om te extraheren zonder expliciet te specificeren hoe deze kenmerken eruit moeten zien. 1.3.2 Classificatie Eens een representatie gevormd is, wordt het gebruikt door een classificatiemodule die de juiste klasse van mogelijke menselijke acties zal aanduiden. In het geval waar de beeldrepresentatie nog een te hoge dimensionaliteit bezit, zal meestal een tussenstap toegevoegd worden om de dimensionaliteit te reduceren, zoals PCA (Principal Component Analysis). Veelgebruikte classificatietechnieken die niet specifiek rekening houden met de tijdsdimensie zijn de volgende: • k-nearest neighbor (kNN) • artifici¨ele neurale netwerken (ANN) • support vector machines (SVM) • random forests (RF) Modellen die wel rekening houden met het temporele aspect: • hidden Markov modellen (HMM) • dynamic time warping (DTW) • conditional random fields (CRF) • sequential pattern boosting (SP-boosting) Voor de experimenten van deze thesis wordt een artificieel neuraal netwerk gebruikt, omdat dit de meest gebruikte classificatiemethode is bij convolutionele neurale netwerken. CNN’s zijn namelijk gebaseerd op ANN’s. Desondanks wordt soms ook met andere classificatietechnieken ge¨experimenteerd. Hoofdstuk 1. Inleiding 1.4 1.4.1 7 Aanverwante studies Omtrent gebarentaalherkenning [Zaki & Shaheen, 2011] gebruiken een representatie gebaseerd op een combinatie van visuele features: de handvorm, de handori¨entatie, de plaats van articulatie en de handbeweging. Enkel de meest dominante hand wordt getracked. Als classificatietechniek wordt een hidden Markov model (HMM) toegepast. Het systeem wordt getest op de RWTH-BOSTON-50 database met videos van Amerikaanse Gebarentaal met een vocabularium van 50 woorden (waarvan 30 gebruikt worden) en drie gebruikers. Het eindresultaat is een foutpercentage van 10.91%. [Cooper et al., 2012] presenteren een aantal benaderingen voor gebarenherkenning met behulp van visuele handfeatures, 2D - en 3D tracking met de Microsoft Kinect, en vergelijken HMM met SP-boosting voor classificatie. Ze gebruiken een zelf-opgenomen dataset en halen een herkenningsnauwkeurigheid van 99.9% op 20 verschillende ge¨ısoleerde gebaren en 85.1% op een meer realistische dataset met 40 gebaren. [Chai et al., 2013] herkennen 239 woorden uit de Chinese Gebarentaal door eveneens gebruik te maken van de Microsoft Kinect 3D camera. Het 3D-bewegingstraject van de gebruiker wordt gealigneerd en gematched met een gallerij van gekende trajecten. Hierbij wordt elk woord vijf keer opgenomen. De top-1 en top-5 herkenningspercentages zijn 83.51% en 96.32% respectievelijk. Verder wordt ook een taalmodel ontwikkeld voor de opbouw van zinnen. [Verschaeren, 2012], waarop deze masterproef gebaseerd is, heeft met success een convolutioneel neuraal netwerk ontwikkeld die 50 verschillende gebaren uit de Vlaamse Gebarentaal kan herkennen op een gebruiker met een nauwkeurigheid van 97.5%. Het model wordt getraind door elk gebaar tien keer op te nemen met een Microsoft Kinect om tot een dataset te komen van 500 voorbeelden. Dit moet herhaald worden voor elke gebruiker, aangezien het model niet kan trainen op de ene gebruiker en herkennen op de andere. [Vannieuwenhuyse, 2013], een masterthesis van de UGent, bouwt een herkenningssteem met behulp van hidden Markov modellen. Hier wordt een Microsoft Kinect gebruikt voor de positie en de richting van de vingers en van beide handen te extraheren. Daarvoor wordt een dataset van 20 verschillende ge¨ısoleerde gebaren opgenomen. Het eindresultaat is een nauwkeurigheid van 84.33%. Hoofdstuk 1. Inleiding 1.4.2 8 Omtrent videoclassificatie met CNN’s [Ji et al., 2013] ontwikkelt een 3D convolutioneel neuraal netwerk voor de herkenning van menselijke acties in realistische, ongecontroleerde omgevingen. Door driedimensionale convoluties worden zowel spatiale als temporele features automatisch ge¨extraheerd uit de video’s. De automatiseren van feature extractie heeft als gevolg dat er geen handgemaakte features meer moeten geconstrueerd worden. Experimenten en evaluaties worden uitgevoerd op de TRECVID 2008 dataset, waar het de beste resultaten tot nu toe behaalt, en de KTH dataset, waar het zeer competitieve resultaten behaalt. [Karpathy et al., 2014] toont aan dat automatische feature-extractie met CNN’s een aanzienlijke verbetering is ten opzichte van handgemaakte feature-extractie: van 55.3% naar 63.9% classificatienauwkeurigheid op een dataset van 1 miljoen YouTube videos met 487 te classificeren categori¨en. Daarnaast wordt ge¨experimenteerd met verschillende fusietechnieken om de ge¨extraheerde features van elk beeld lokaal in de tijd met elkaar te fuseren. De conclusie is dat de verbetering ten opzichte van het model zonder fusering niet zo significant is (een nauwkeurigheid van 59.3% naar 60.9%). Verder worden de bovenste lagen van het model hertraind met de UCF- 101 Action Recognition dataset en kan een sterke verbetering waargenomen worden in vergelijking met het UCF-101 baseline model (een nauwkeurigheid van 43.9% naar 63.3%). 1.5 Leeswijzer In het tweede hoofdstuk worden de technische en theoretische aspecten van dit werkstuk in detail uiteengezet. Hier komen machine learning (Sectie 2.1), convolutionele neurale netwerken (Sectie 2.2) en optimalisatietechnieken (Sectie 2.3) aan bod. Hoofdstuk 3 beschrijft de onderzoeksopzet en de onderzoeksresultaten. De gebruikte dataset (Sectie 3.1), de voorverwerking op deze dataset (Sectie 3.2), de architectuur van het model (Sectie 3.3), de opstelling voor de experimenten (Sectie 3.4), de validatieresultaten (Sectie 3.5), de segmentatietechnieken (Sectie 3.6) en de testresultaten (Sectie 3.7) worden in het hoofdstuk besproken. Het laatste hoofdstuk formuleert een besluit in Sectie 4.1 en bespreekt enkele aanbevelingen voor verder onderzoek in Sectie 4.2. . Hoofdstuk 2 Theoretisch kader 2.1 2.1.1 Machine learning Inleiding Kort samengevat, verwijst Machine learning naar computers die leren voorspellen uit data. Volgens Arthur Samuel in 1959 is de definitie van machine learning “het vakgebied dat computers de mogelijkheid geeft om te leren zonder expliciet geprogrammeerd te worden” [Samuel, 1959]. In 1997 gaf Tom Mitchell de volgende definitie: “Een computerprogramma leert van ervaring E met betrekking tot een klasse van taken T en prestatiemaat P, als de prestaties op taken in T, gemeten door P, verbetert met ervaring E” [Mitchell, 1997]. Een predictief model zal leren een prestatiemaat te verbeteren door ervaring op te doen. Het leren (of trainen) gebeurt door (hyper)parameters van een model te optimaliseren met behulp van algoritmen uit machine learning. Deze optimalisatie-algoritmen zorgen ervoor dat de parameters van het model iteratief worden bijgestuurd tijdens het trainen. De prestatiemaat moet goed gekozen worden zodat het een zo nauwkeurig mogelijke indicatie geeft over het predictief vermogen van het systeem. Tijdens de trainingsfase wordt het model geoptimaliseerd, tijdens de evaluatiefase wordt het model ge¨evalueerd en tijdens de testfase wordt een finale evaluatie gemaakt of wordt het systeem toegepast in een productie-omgeving. Ervaring wordt opgedaan door het predictief model te trainen met behulp van een dataset. De beschikbare data wordt meestal opgedeeld in drie delen: een trainingset, een validatieset en een testset die in de trainingsfase, de evaluatiefase en de testfase respectievelijk worden gebruikt. De trainingset is meestal de grootste omdat deze gebruikt wordt om de parameters van het model te bepalen (= leren of trainen). De validatieset en de testset moeten groot 9 10 Hoofdstuk 2. Theoretisch kader genoeg zijn om representatieve evaluatie- en testscores te verkrijgen. De testset mag tijdens de ontwikkeling van het model niet gebruikt worden, omdat men anders een systeem kan opbouwen dat geoptimaliseerd wordt om zo goed mogelijk te presteren op de gebruikte testset. Zou men nadien met een andere testset evalueren, zal die testscore niet zo hoog zijn, waardoor de finale evaluatiescore niet meer representatief is. Het type of de categorie van machine learning dat in deze thesis de bovenhand zal halen is gesuperviseerde classificatie. Gesuperviseerd, omdat de traingset bestaat uit voorbeeldparen van invoeren en uitvoeren. De invoeren zijn de datavoorbeelden en de uitvoeren zijn klasselabels. Met andere woorden, de trainingset bevat de oplossing voor de voorspellingen. Het identificeren of voorspellen tot welke klasse een nieuw voorbeeld behoort, wordt classificatie genoemd. Een nieuw voorbeeld is een ongeziene datavoorbeeld die niet voorkomt in de trainingset. De uitvoer van het model is een klasselabel die de voorspelde klasse aangeeft. Zoals later beschreven zal worden, kan de uitvoer ook de voorspelde probabiliteiten voor elke klasse weergeven. Een classificatieprobleem in machine learning kan als volgt beschreven worden. Gegeven een trainingset T : T = {(x(n) , y (n) )} , x(n) ∈ RD , y (n) ∈ N, n = 1, ..., N (2.1) met x(n) de n-de datavoorbeeld met klasselabel y (n) , D het aantal dimensies van x, en N het aantal trainingsvoorbeelden. Het classificatieprobleem is dan het schatten/benaderen van een model f met parameters θ zodat: f (x, θ) = y, ∀(x, y) ∈ T. (2.2) Het uiteindelijke getrainde classificatiemodel kan zowel een benadering als een exacte schatting van f en θ zijn. De onbekende klasselabel y van een nieuw voorbeeld xnieuw wordt voorspeld door f (xnieuw , θgetrained ) = yˆ. Een welbekend predictief model voor classificatie is een artificieel neuraal netwerk (ANN). ANN’s worden gebruikt als classificatiesysteem voor de experimenten van deze thesis en zullen in de volgende subsectie besproken worden. 2.1.2 Overfitting en generalisatie Overfitting is het fenomeen dat veroorzaakt wordt door de trainingset dat niet groot genoeg is, door een te groot aantal modelparameters (men zegt ook dat het model te complex is) of door een combinatie van beide. Het gevolg is dat de prestatie aanzienlijk vermindert indien men het model op ongeziene data evalueert. Met andere woorden, het 11 Hoofdstuk 2. Theoretisch kader model is niet gegeneraliseerd om patronen te herkennen op data die niet in de trainingset voorkomen. Generalisatie is dus het vermogen om nauwkeurige voorspelling te maken op nieuwe datavoorbeelden. Overfitting gebeurt doordat het model de trainingsdata memoriseert en dus de aanwezige ruis en imperfecties probeert te modelleren door de exacte schatting (of allesinds een zeer nauwkeurige benadering) van f en θ in (2.2) te bekomen. Om dit tegen te gaan wordt de dataset opgedeeld in een trainingset en een validatieset. Op deze manier is het doel niet meer om een zo nauwkeurig mogelijke f en θ te schatten. In de plaats daarvan wordt een evaluatiescore op de validatieset geminimaliseerd (of gemaximaliseerd, afhankelijk van de gekozen scorefunctie). Nu is er echter het probleem dat het model geoptimaliseerd wordt voor de validatieset en dus is er nog altijd sprake van overfitting. Is de prestatie ook dezelfde met data buiten de validatie- en trainingset? Deze score is dus niet representatief voor het voorspellingsvermogen van het model. Daarom wordt de beschikbare data opgedeeld in drie delen: 60% van de data dient als trainingset, 20% validatieset en 20% testset (andere verdelingen zijn mogelijk). Het enige verschil is dat de testset nooit mag dienen als middel om het model aan te passen met als doel een beter prestatie te verkrijgen op de testscore. Daarvoor dient de validatieset. In het ideale geval wordt de testset slechts ´e´en keer gebruikt voor de eindevaluatie. Voor alle duidelijkheid, dit zal het generalisatievermogen niet verbeteren, maar de testscore zal een betere indicatie van generalisatie weergeven dan de validatiescore. Om de generalisatie van een model te verbeteren, wordt gebruik gemaakt van regularisatie en data-augmentatie, die beiden later zullen besproken worden. 2.1.3 Artificieel neuraal netwerk Artifici¨ele neurale netwerken (ANN’s) zijn ge¨ınspireerd door het neurale netwerk in het menselijk brein. In onze hersenen worden ongeveer 100 miljard neuronen met elkaar verbonden in een complex netwerk. Neuronen zijn op zichzelf staande verwerkingseenheden en vormen de bouwstenen van het zenuwstelsel. Ze ontvangen, verwerken en versturen informatie doorheen de hersenen en het lichaam. Bij een artificieel neuron wordt dit nagebootst door middel van invoer, gewichten, een bias, een sommatie, een activatiefunctie en een uitvoer zoals afgebeeld in Figuur 2.1a. Een artificieel neuron kan formeel als volgt beschreven worden: yneuron = a b + D X i=1 ! x i wi (2.3) 12 Hoofdstuk 2. Theoretisch kader 2 Invoer x2 w2 x3 w3 1 Activatie Σ Uitvoer y a(x) x1 Gewichten w1 Bias b 0 −1 −2 (a) Artifici¨ele neuron. ReLU Tanh unit Sigmo¨ıde unit −1 0 1 2 x (b) Activatiefuncties. Figuur 2.1: Een artifici¨ele neuron met 3 invoerdimensies. waar xi de i-de invoer van de neuron is, y de uitvoer, a de activatiefunctie, b de bias en wi het gewicht voor de verbinding met de i-de invoer. De activatiefunctie zorgt voor een niet-lineariteit in het ANN. Hierdoor kunnen nietlineaire classificatieproblemen opgelost worden. Dit zal het voorspellingsvermogen van het model aanzienlijk verbeteren. Artifici¨ele neuronen worden vaak genoemd naargelang hun activatiefunctie. De meest gebruikte neuronen (of units) zijn afgebeeld in Figuur 2.1b en hebben de volgende definitie: Tanh unit: a(x) = tanh(x) 1 Sigmo¨ıde unit: a(x) = 1 + exp(−x) (2.4) Rectified linear unit (ReLU): a(x) = max(0, x) De tangens hyperbolicus- en de sigmo¨ıde-functie zorgen ervoor dat de waarden doorheen het netwerk binnen het bereik [-1,1] en [0,1] respectievelijk blijven. ReLU’s verwijderen negative waarden door ze op 0 af te beelden en passen een identieke afbeelding toe op het volledige [0,+∞] bereik. De artifici¨ele neuronen worden in verschillende lagen met elkaar verbonden om een artificieel neuraal netwerk te vormen (Figuur 2.2). In het kader van deze thesis worden enkel feedforward ANN’s beschouwd, i.e. ANN’s zonder lussen. De eerste laag is de invoerlaag, de laatste laag wordt de uitvoerlaag of de softmaxlaag genoemd en alle lagen ertussen worden verborgen lagen genoemd. De invoerlaag neemt waarden aan van de datavoorbeelden die men tracht te classificeren. De softmaxlaag geeft als uitvoer de voorspelde probabiliteiten voor elke klasse. Opeenvolgende lagen hebben een volledige connectiviteit, wat wil zeggen dat elke unit in een laag verbonden wordt met elke unit in de volgende laag. Het aantal verborgen lagen en het aantal verborgen units zijn hyperparameters die geoptimaliseerd moeten worden door evaluatie op de validatieset. 13 Hoofdstuk 2. Theoretisch kader Verborgen Invoer Verborgen Softmax (1) w(1) x1 h1 w(2) (2) h1 (1) x2 h2 w(3) p(y = 1|x) (2) x3 h2 p(y = 2|x) (1) x4 h3 x5 (2) 1 b 1 1 b(3) b(1) Figuur 2.2: Een artificieel neuraal netwerk met 2 klassen, 4 invoerdimensies en 2 verborgen lagen. De uitvoer van de j-de verborgen laag h(j) (x) wordt gedefinieerd door: a b(j) + w(j) x ,j = 1 h i h(j) (x) = a b(j) + w(j) h(j−1) (x) , 1 < j ≤ L (2.5) met L het aantal verborgen lagen en w(j) x het inwendig product van de invoer met de gewichten (i.e. gewogen som van de invoer). De uitvoer van het ANN wordt bepaald door de softmaxlaag. Deze laag bevat evenveel units als het aantal klassen voor het classificatieprobleem. De neuronen hebben een verschillende functionaliteit dan die van de verborgen units. Ze geven namelijk de voorspelde probabiliteit van elke klasse weer: α(x) = b(L+1) + w(L+1) h(L) (x) exp[α(x)j ] p(y = j|x) = PC i=1 exp[α(x)i ] (2.6) softmax(x) = [p (y = 1|x) , . . . , p (y = C|x)]T De functie α is de pre-activatie (de bewerkingen v´oo´r de activatie) van de laatste verborgen laag en C is het aantal klassen. p(y = j|x) is de voorspelde probabiliteit dat y, de te voorspellen klasse-index, gelijk is aan de klasse-index j, gegeven de invoer x. Het ANN kan beschreven worden als het classificatiemodel f : f (x, θ)j = softmax(x, θ)j = p(y = j|x, θ) (2.7) met parameters θ: θ = {w(1) , b(1) , . . . , w(L+1) , b(L+1) } (2.8) Indien men slechts ´e´en klasse wil, in plaats van voorspelde probabiliteiten, kan men de 14 Hoofdstuk 2. Theoretisch kader klasse selecteren met de hoogste voorspelde probabiliteit: y = arg max f (x, θ)j j (2.9) De parameters θ zijn waarden die initieel willekeurig worden gekozen. In het geval van neurale netwerken, worden ze tijdens de trainingsfase iteratief bijgestuurd door middel van backpropagation. Backpropagation is een algoritme die de fout op de voorspelling van een voorbeeld in omgekeerde richting door het netwerk zal laten propageren (terugpropagatie, backpropagation) en op basis daarvan de paramaters zal aanpassen. Voor deze iteratieve aanpassingen wordt gebruikt gemaakt van gradient descent, dat in de volgende subsectie uitgelicht wordt. 2.1.4 Gradient descent Gradient descent is een algoritme die de uitvoer van een functie minimaliseert door de parameters van die functie iteratief te optimaliseren. De functie die we proberen minimaliseren is, in het geval van machine learning, de kostfunctie L(θ) (engels: loss function of cost function): N 1 X L(θ) = E(f (x(n) , θ), y (n) ) + Ω(θ) N (2.10) n=1 waarbij E(f (x(n) , θ), y (n) ) de foutfunctie is en Ω(θ) de regularisieterm. De waarde van de foutfunctie is een indicatie van de gemaakte fout op de voorspellingen. In het eerste deel van de kostfunctie wordt dus de gemiddelde voorspellingsfout berekend. De foutfunctie kan op verschillende manieren worden gedefinieerd (dit moet gekozen worden, zie verder). Het tweede gedeelte van de kostfunctie is de regularisieterm. Deze zal bepaalde extreme waarden van θ afstraffen. Dit kan helpen overfitting tegen te gaan. De foutfunctie en de regularisieterm zullen later in meer detail besproken worden. Gradient descent wil het minimum van de kostfunctie vinden en hiervoor moet het dus de parameters θ van het model f optimaliseren, zodat de foutfuntie E zo laag mogelijk wordt. Dit is juist ook wat men wil bereiken met het trainen van een model: men wil de parameters van het model vinden zodat het voorspellingsvermogen zo hoog mogelijk is, of anders gezegd, de voorspellingsfout moet zo laag mogelijk. De optimale parameters θopt worden dus bereikt door de kostfunctie L te minimaliseren: θopt = arg min L(θ) (2.11) θ Het gradient descent-algoritme zal dit globale minimum echter meestal niet exact kunnen 15 Hoofdstuk 2. Theoretisch kader Figuur 2.3: Een illustratie van gradient descent uit [Brunet, 2010] met behulp van een 2D voorstelling van de parameterruimte en contourlijnen van de kostfunctie. De zwarte lijnstukken duiden de aanpassingen van gradient descent aan voor elke iteratie. Het rode punt is een lokaal minimum. bepalen. Er zal namelijk gezocht worden naar een lokaal minimum. Men gaat eerst de gradi¨enten van de kostfunctie ten opzichte van alle parameters in de parameterruimte bepalen. Informeel gezegd, beschrijven de gradienten de “helling” van de kostfunctie in de parameterruimte. Omdat we een lokaal minimum willen bereiken wordt er elke iteratie een stap gezet in de richting waar de helling het stijlst naar beneden gaat (Figuur 2.3). Dit wil zeggen dat de parameters θ van het model iteratief gewijzigd worden door volgende aanpassingsregel: θ ← θ − α∇θ L(t, θ) (2.12) met α de leersnelheid (een hyperparameter) en ∇θ L(t, θ) de gradient van de kostfunctie op iteratie t. De leersnelheid α heeft een grote invoed op het algoritme. Een te kleine waarde voor α resulteert in een te trage convergentie en een te grote waarde resulteert in overshooting, waar de parameterwaarden te grote sprongen maken en dus het lokale mininum zullen voorbijgaan. De kostfunctie zoals gedefinieerd in (2.10) heeft zeer veel berekingen nodig. Namelijk, het moet de foutfunctie voor alle voorbeelden in de trainingset berekenen en dan pas kan er een aanpassingstap gemaakt worden. Mini-batch gradient descent wordt toegepast om dit probleem op te lossen. Om een schatting van de kostfunctie te maken zal men elke iteratie slechts een deel (een mini-batch) van de trainingsvoorbeelden betrekken: L(t, θ) = 1 B B(t+1) X E(f (x(n) , θ), y (n) ) + Ω(θ) (2.13) n=Bt+1 De grootte van de mini-batch B is een hyperparameter en t is de huidige iteratie. Merk op dat de mini-batches in een epoch (i.e. een overloop van de trainingset) disjunct zijn. Typische foutfuncties zijn de absolute fout |y − y 0 | of de kwadratische fout (y − y 0 )2 , maar 16 Hoofdstuk 2. Theoretisch kader voor de experimenten in deze masterproef wordt de negatieve log-likelihood gebruikt: E(f (x, θ), ylabel ) = − ln f (x, θ)ylabel (2.14) = − ln p(y = ylabel |x, θ) De negatieve log-likelihood neemt dus eerst de voorspelde probabiliteit voor de correcte klasse die overeenkomt met het invoervoorbeeld x. Deze probabiliteit wordt door middel van de softmaxlaag in een ANN berekend. Logischer wijze zou deze waarde zo dicht mogelijk bij 1 moeten liggen. Door nadien de negatieve ln van deze probabiliteit te nemen, zullen waarden dichter bij nul veel meer afgestraft worden, omdat de limiet naar 0 gelijk is aan oneindig. De regularisieterm is niet altijd aanwezig in de kostfunctie, maar kan vaak helpen om het predictief model te doen generaliseren. Extreme gewichten kunnen namelijk vaak het gevolg zijn van overfitting op de trainingset. De regularisieterm zal ervoor zorgen dat de gewichten niet meer zulke extremiteiten vertonen. Dit wordt gedaan door de waarden van de gewichten op de volgende manier in de kostfunctie te betrekken: Ω(θ) = γ XXX k | i j {z (k) |wij | +λ `1-regularisatie } XXX k | i (k) (wij )2 (2.15) j {z `2-regularisatie } De hyperparameters γ en λ bepalen de mate van `1- en `2-regularisatie respectievelijk. `1-regularisatie bepaalt de mate waarin gewichten zo veel mogelijk 0 willen zijn (sparsity), omdat het alle gewichtwaarden evenveel afstraft. Met de kwadratering straft `2-regularisatie grote waarden veel meer af dan kleine, waardoor de gewichten klein gehouden worden. 2.1.5 Deep learning Het domein van deep learning ([Lecun et al., 1998], [Hinton et al., 2006], [Bengio et al., 2007], [Bengio, 2009]) is een subdomein van machine learning. Met deep learning zal een predictief model in de trainingsfase leren welke representatie van de invoer het beste is voor classificatie. Met andere woorden, de invoer wordt eerst automatisch omgezet in een representatie die beter en gemakkelijker te interpreteren valt door de computer. Dit gebeurt in een hi¨erarchie van verschillende opeenvolgende lagen. In de eerste lagen worden kenmerken ge¨extraheerd van laag niveau, zoals randen. In volgende lagen worden kenmerken ge¨extraheerd van hoger niveau. Bijvoorbeeld, vingers worden gevormd door specifieke randen in het beeld en in een volgende laag vormen de vingers een hand. Dit heeft als gevolg dat er geen noodzaak is om zelf kenmerken te extraheren. Bij traditionele methoden moet er feature engineering gebeuren vooraleer een classificatie 17 Hoofdstuk 2. Theoretisch kader Feature-extractielaag Normalisatie Filterbank Nietlineariteit Pooling (a) E´en feature-extractielaag Invoer Laag 1 ... Laag n Classificatie (b) Meerdere lagen Figuur 2.4: Feature-extractie architectuur in deep learning. kan gemaakt worden. Dit wil zeggen dat men eerst een aantal kenmerken moeten kiezen en de extractie uit de invoer expliciet moet implementeren. Met deep learning wordt automatisch geleerd tijdens de trainingsfase welke kenmerken het meest gunstig zijn om te extraheren zonder ze handmatig op te stellen. Een feature-extractielaag in een deep learning-model is afgebeeld in Figuur 2.4a. Meestal wordt eerst de invoer genormaliseerd om het leren te versnellen. De filterbank zorgt voor een expansie van de invoer. Deze expansie is nodig om de verschillende klassen beter te onderscheiden. Men gaat als het ware in een hogere dimensie kijken of het verschil in de klassen beter te onderscheiden valt. De parameters in de filterbank worden automatisch in de trainingsfase geleerd. Vervolgens wordt een niet-lineaire module toegepast zodat het niet-lineaire onderscheidingen kan maken. Als laatste worden de interessantste delen bij elkaar gepoold. Pooling zal elk lokaal venster of elke partitie van de invoer filteren tot ´e´en enkele waarde door, bijvoorbeeld, enkel het maximum over te houden. Dit zal dus de dimensionaliteit weer reduceren. Meerdere lagen worden geconcateneerd en de eindrepresentatie wordt gebruikt voor classificatie (Figuur 2.4b). Een van de meest succesvolle modellen uit deep learning zijn convolutionele neurale netwerken die in de volgende sectie worden besproken. 2.2 Convolutioneel neuraal netwerk (CNN) Het model uit deep learning dat de laatste jaren state-of-the-art resultaten behaalt is het convolutioneel neuraal netwerk (afgekort door CNN). Recente onderzoeksresultaten bewijzen dat CNN’s recordbrekende classificatieresultaten behalen voor beeldherkenningsproblemen [Krizhevsky et al., 2012], [Cire¸san et al., 2012], [Zeiler & Fergus, 2013a], [Goodfellow et al., 2013a]. Deze methoden worden reeds toegepast in de industrie door o.a. Google en Facebook. Sinds kort worden CNN’s door Google ook toegepast op videodata [Karpathy14]. 18 Hoofdstuk 2. Theoretisch kader ... ... ... (a) Volledige connectiviteit ... (b) Lokale connectiviteit Figuur 2.5: Receptieve velden. 2.2.1 Inleiding Convolutionele neurale netwerken zijn feature-extractiemodellen uit deep learning die ge¨ınspireerd zijn door de visuele cortex in onze hersenen. Deze hi¨erarchische meer-lagen artifici¨ele neurale netwerken zijn in staat visuele patronen rechtstreeks uit pixels te herkennen zonder enige voorverwerking. Het probleem met diepe artifici¨ele neurale netwerken, zoals beschreven in Sectie 2.1.3, is de volledige connectiviteit tussen de verschillende verborgen lagen. Het aantal parameters is direct gerelateerd aan de invoerdimensie, zoals getoond in Figuur 2.5a, waardoor deze modellen ongeschikt zijn voor afbeeldingen of video’s. Daarom is het een betere oplossing om elke artifici¨ele neuron met slechts een lokaal gebied van de invoerafbeelding te verbinden zoals in Figuur 2.5b. Deze gebieden worden receptieve velden genoemd. Alle mogelijke gebieden (ook overlappende) worden verbonden met een verschillende unit. Naast de lokale connectiviteit in CNN’s, worden de parameters tussen de units ook gedeeld. Dit wil zeggen dat de units in Figuur 2.5b elk dezelfde set van gewichten hanteren. Als de receptieve velden een grootte van 5x5 hebben, zullen slechts 25 gewichten nodig zijn (per invoerkanaal). Een CNN bestaat uit opeenvolgende feature-extractielagen (ook convolutielagen genoemd). Elke laag bestaat voornamelijk uit twee basisstappen: een filterbank en een pooling-module. De filterbank bestaat uit featuremaps die verkregen worden door tweedimensionale discrete convoluties uit te voeren met verschillende filters op de invoer. In de pooling-module wordt hier gebruik gemaakt van max-pooling, al zijn er andere subsampling methoden die gebruikt kunnen worden. Max-pooling zal de dimensionaliteit reduceren door enkel de belangrijkste waarden van de featuremaps over te houden. 19 Hoofdstuk 2. Theoretisch kader 2.2.2 Filterbank De lokale verbindingen in een CNN zijn eigenlijk niets anders dan discrete convolutiefilters (Figuur 2.6a): (w ∗ x)n1 ...nD = +∞ X wm1 ...mD xn1 −m1 ,...,nD −mD (2.16) m1 ,...,mD =−∞ met x de invoer van de filter, w de waarden van de filter en D het aantal dimensies. De filter w is slechts voor een aantal waarden niet gelijk aan nul. De uitvoer van deze convolutie is de voornaamste stap in de opbouw van een featuremap. In een filterbank worden er zo meerdere featuremaps gevormd, telkens met een verschillende filter (Figuur 2.6b). Het aantal featuremaps per laag in een CNN zijn hyperparameters. Naast de convoluties wordt ook een bias opgeteld en vervolgens wordt een niet-lineaire activatiefunctie toegepast. De filterbank kan op volgende wijze beschreven worden: y (ij) = a b(ij) + Ni X n=1 2D: (ij) = a b(ij) + ypq ! w(ijn) ∗ x(in) Qi Ni X Pi X X (ijn) (in) wp0 q0 xp−p0 ,q−q0 (2.17) n=1 p0 =1 q 0 =1 3D: (ij) ypqr = a b(ij) + Qi X Ni X Pi X Ri X (ijn) (in) wp0 q0 r0 xp−p0 ,q−q0 ,r−r0 n=1 p0 =1 q 0 =1 r0 =1 (ij) waar ylmk de pixel op positie (p, q) van de r-de frame in de j-de featuremap van de i-de laag is en w(ijn) de filterparameters die het j-de uitvoerkanaal verbindt met het n-de invoerkanaal in de i-de laag. Ni is het aantal invoerkanalen voor de i-de laag. De groottes van de filters in de i-de laag zijn Pi x Qi en Pi x Qi x Ri (hoogte x breedte x frames) voor respectievelijk het tweedimensionaal en het driedimensionaal geval. Traditioneel worden enkel 2D featuremaps berekend voor feature-extractie in afbeeldingen of frames in video’s. Maar er kan ook met spatio-temporele features ge¨experimenteerd worden door 3D featuremaps te berekenen met driedimensionale discrete convoluties zoals in (2.17). 2.2.3 Max-pooling De tweede techniek die wordt toegepast in een CNN-laag is max-pooling. Deze zal elke featuremap opsplitsen in kleine partities. Nadien wordt enkel de maximale waarde van 20 Hoofdstuk 2. Theoretisch kader 2,0 1,0 0,0 1 2,1 1, 0,1 2 2,2 1, 0,2 0 W2 0 0 W0 1 W0 2 W0 W1 1 1 W1 W2 22 4 1,1 W 2 13 W1 6 3x3 Filter Invoer Invoer Uitvoer (a) 2D Discrete convolutie Feature maps (b) Filterbank 3 13 18 13 16 3 15 14 13 3 max → 1 10 18 7 16 15 14 2x2 Uitvoer 4x4 Invoer (c) 2x2 Max-pooling Figuur 2.6: De basistechnieken in een convolutielaag van een convolutioneel neuraal netwerk. elke partitie overgehouden, zoals aangetoond wordt in Figuur 2.6c. Hierdoor zal dus de dimensionaliteit verminderen terwijl de belangrijkste featurewaarden (de maximumwaarden) behouden worden. Omdat in deze thesis met video’s wordt gewerkt zijn de featuremaps driedimensionaal en wordt er 3D max-pooling gebruikt. Om dit formeel te beschrijven wordt meestal gebruik gemaakt van een vensterfuntie VS1 xS2 xS3 (p, q, r) die overal nul is behalve in de partitie met grootte S1 xS2 xS3 , waarover het maximum genomen wordt: (ij) ypqr = max[x(ij) VS1 xS2 xS3 (p, q, r)] (2.18) Max-pooling zal ook zorgen voor translatie-invariantie. Bijvoorbeeld, indien een hand een aantal pixels naar links of naar rechts verschuift, de handfeatures worden uiteindelijk bij elkaar gepoold tot dezelfde posities in de featuremaps. Hetzelfde geldt voor translaties in de tijdsdimensie. 2.2.4 Volledig netwerk Door gebruik te maken van beide bovenstaande technieken, namelijk convoluties en maxpooling, wordt er een convolutielaag in een CNN gevormd. Maar CNN’s zouden niet tot deep learning behoren moesten ze niet diep zijn. Daarom worden meerdere lagen geconcateneerd en de uiteindelijke representatie dient als invoer voor de classificatiemodule, zoals te zien is in het voorbeeld in Figuur 2.7. Een CNN heeft een diepe architectuur, zodat het features kan extraheren die in de eerste lagen kleinschalig zijn, zoals randen, en in de laatste lagen kunnen de features vingers of handen zijn. Dit komt, omdat de features samen worden gepoold met max-pooling. 21 Hoofdstuk 2. Theoretisch kader Convoluties Pooling Convoluties Pooling Convoluties Pooling kk Afvla ing Invoer video Feature map Convolutielaag 1 Convolutielaag 2 Convolutielaag 3 Feature-extractie ANN Classificatie Figuur 2.7: Een driedimensionaal convolutioneel neuraal netwerk met 4 featuremaps in de eerste laag, 8 maps in de tweede laag en 16 in de derde. Eraan gekoppeld is een neuraal netwerk (ANN) met ´e´en verborgen laag. 2.3 Optimalisatietechnieken Indien we een predictief model opbouwen met de tot hier toe beschreven technieken, zou er al een competente prestatie kunnen behaald worden. Maar state-of-the-art toepassingen verbeteren deze prestatie aanzienlijk door gebruik te maken van een aantal optimalisatietechnieken die uit recent onderzoek voortvloeien. Dit zijn aanpassingen en toevoegingen bovenop de basistechnieken die de generalisatie en/of de snelheid van de trainingsfase verbeteren. Deze sectie veronderstelt dat de optimalisaties op CNN’s en ANN’s worden toegepast. Een recente innovatie omtrent neurale netwerken zijn het gebruik van rectified linear units (ReLU’s) ([Glorot et al., 2011], [Nair & Hinton, 2010]) zoals besproken in Sectie 2.1.3. Men zou op het eerste zicht vermoeden dat de discontinu¨ıteit in de oorsprong voor problemen zorgt bij de gradi¨entberekeningen voor het gradient descent-algoritme. Maar in de praktijk is de pre-activatie (de waarden v´ oo´r de activatiefunctie) nooit negatief voor alle voorbeelden in de traingset. Namelijk, indien voor slechts een klein aantal trainingsvoorbeelden de pre-activatie groter is als 0, zal de unit in staat zijn om te leren. De vier optimalisatietechnieken die hier besproken worden, zijn normalisatie, momentum, dropout en data-augmentatie. Normalisatie en momentum zullen zowel de prestatie als de trainingssnelheid vehogen. Dropout en data-augmentatie, daarentegen, zijn technieken die het model beter generaliseren, maar de trainingsfase vertragen. 2.3.1 Normalisatie Normalisatie wordt soms als een basisstap van een CNN beschouwd, omdat het zeer vaak wordt gebruikt. Pixels zijn namelijk gebaseerd op lichtintensiteiten. Dus een donkere ruimte zal zeer verschillende waarden produceren als een goed belichte ruimte. Een model zoals 22 Hoofdstuk 2. Theoretisch kader LCN LCN (a) Donkere achtergrond, laag contrast (b) Lichte achtergrond, hoog contrast Figuur 2.8: Lokaal contrast normalisatie. het CNN kan hiervoor relatief gemakkelijk invaranties aanleren, maar dit gaat welliswaar ten koste van trainingstijd. Daarom wordt een techniek gebruikt om het contrast (de verschillen in lichtintensiteit) te normaliseren. De meest gebruikte techniek in CNN’s is lokaal contrast normalisatie (LCN) [Jarrett & Kavukcuoglu, 2009]: vij = xij − X kpq xi+p,j+q pq yij = vij / max[mean(σij ), σij ] !1/2 X 2 σij = kpq xi+p,j+q (2.19) pq met vij het resultaat van de lokale substractie, xij de pixels van het invoerbeeld, kpq de waarden van de genormaliseerde Gaussiaanse filter, yij de pixels van het lokaal contrast genormaliseerd beeld en σij de lokale standaardafwijking. Bij deze methode wordt dus een gaussiaanse blur-filter over het beeld toegepast en afgetrokken van het originele. Dit heeft als resultaat dat enkel snel veranderende pixelwaarden, zoals randen, overblijven. Het is een vorm van hoogdoorlaatfilter. Nadien worden de absolute waarden van de pixels genomaliseerd door een deling met de lokale standaardafwijking. Het eindresultaat is afgebeeld in Figuur 2.8. LCN kan toegepast worden op alle featuremaps in elke laag van een CNN. Het zorgt voor lokale en spatiale competitie tussen de features, waardoor de generalisatie verbetert. In een variant op (2.19) kunnen naburige featuremaps in de normalisatie eveneens betrokken worden. Een tweede normalisatietechniek die recent in [Krizhevsky et al., 2012] succesvol wordt gebruikt, is lokaal response normalisatie (LRN of CCN: cross channel normalisation), waar de helderheid i.p.v. het contrast wordt genormaliseerd over naburige featuremaps: i ypq = xipq / k + α min(N −1,i+n/2) X j=max(0,i−n/2) β (xjpq )2 (2.20) 23 Hoofdstuk 2. Theoretisch kader µvt θb g(θb ) θa µvt θt+1 θt θt g(θt + µvt ) θt+1 g(θa ) g(θt ) θlok min θlok min (b) Klassieke momentum (a) Parameterruimte θlok min (c) NAG Figuur 2.9: Het verschil tussen het klassieke momentum en Nesterov’s accelerated gradient (NAG). De gradi¨entvector wordt hier afgekort als g(θt ) = −α∇θt L(t, θt ). met xipq de i-de featuremap op positie (x, y), n (hyperparameter) het aantal naburige featuremaps die betrokken worden op dezelfde spatiale positie, N het aantal featuremaps in de laag, en de constanten k,α en β zijn hyperparameters. 2.3.2 Momentum Momentum is een optimalisatietechniek voor het (mini-batch) gradient descent-algoritme. Het is te vergelijken met het impuls-begrip (Engels: momentum) uit de natuurkunde. Als een bal van een helling in een vallei rolt, zal deze niet plots stilstaan op een dieptepunt van de vallei. De bal zal eerst nog wat verder rollen door zijn impuls. In het geval van gradient descent, zou er zonder momentum gezocht worden naar een lokaal minimum voor de kostfunctie en op dit punt blijven vastzitten. Als momentum wordt toegevoegd aan het algoritme, zal er tijdens de trainingsfase, informeel gezegd, over te kleine putten in de parametervallei gerold worden. Dit wordt verwezenlijkt door de snelheid van verandering in de parameteraanpassingen te vertragen. Een aanpassing zal, bijvoorbeeld, voor 90% dezelfde zijn als de vorige en voor 10% in de richting en grootte zoals de huidige gradi¨enten het aangeven. In dat geval is de momentumco¨effici¨ent gelijk aan 0.9. [Sutskever et al., 2013] brengt het belang van momentum in deep learning aan het licht en vergelijkt tevens het klassieke momentum met Nesterov’s accelerated gradient (NAG). De gewijzigde aanpassingsregel met het klassieke momentum wordt op deze manier gedefinieerd: vt+1 = µvt − α∇θt L(t, θt ) (2.21) θt+1 = θt + vt+1 waarbij µ ∈ [0, 1] de momentumco¨effici¨ent (een hyperparameter) is. En Nesterov’s accelerated gradient (NAG) wordt als volgt beschreven: vt+1 = µvt − α∇θt L(t, θt + µvt ) θt+1 = θt + vt+1 (2.22) Hoofdstuk 2. Theoretisch kader 24 Het verschil is dat bij NAG, voor het berekenen van de gradi¨enten, eerst een iteratie verder zal gedacht worden. Alvorens de parameters aan te passen wordt het huidige momentum-component µvt opgeteld met θt en hiervan worden de gradi¨enten berekend. Figuur 2.9 maakt duidelijk dat dit een gunstigere aanpassing levert, omdat het uiteindelijke punt zich dichter bij het lokaal minimum bevindt. 2.3.3 Dropout Dropout is een recent bevinding die in [Hinton et al., 2012] voor het eerst aan bod komt. Het is een techniek die het ANN zal aanpassen tijdens de trainingsfase, zodat het model tijdens de evaluatie robuuster zal zijn. Elk artificieel neuron, voor elk trainingsvoorbeeld die doorlopen wordt, zal met een probabiliteit Bernoulli(p) uitgeschakeld worden (i.e. de uitvoer wordt gelijkgesteld aan nul). De hyperparameter p wordt doorgaans op 0.5 gehouden, zodat gemiddeld de helft van alle units verwijderd worden. Dit gebeurt enkel in de trainingsfase en dus moet de uitvoer van de units geschaald worden met een factor 1/(1 − p) tijdens het trainen. Deze techniek zorgt ervoor dat er geen co-adaptatie tussen de units ontstaat. Co-adaptatie is het fenomeen wanneer units op elkaar rekenen om patronen te herkennen. Zonder dropout kunnen de units leren dat de anderen de features goed genoeg herkennen en zelf dus niets of niet veel moeten bijdragen. Met dropout is elke unit er tijdens de trainingsfase voor de helft van tijd niet, dus kunnen ze er niet co-adapteren. Dit zal dus elke artifici¨ele neuron op zichzelf nuttiger maker. 2.3.4 Data-augmentatie Een laatste optimalisatietechniek is data-augmentatie. De beste manier om overfitting tegen te gaan is meer data vergaren. Maar dat is natuurlijk niet altijd mogelijk en is meestal zeer tijdrovend. Daarom zal data-augmentatie helpen om artifieel data bij te cre¨eren. Dit wordt gedaan door bestaande trainingsvoorbeelden te augmenteren. Augmentatie kan op vele verschillende creatieve wijzen gebeuren, maar de meest voor de hand liggenden zijn beeld- en videotransformaties, en het toevoegen van ruis. Enkele voorbeelden van dataaugmentatie zijn (zie ook Figuur 2.10): beeldrotaties, spatiale - en temporele translaties, bijsnijden of zoomen (resampling in tijd en/of ruimte), elastische beelddistorties en witte Gaussiaanse ruis en impulsruis. 25 Hoofdstuk 2. Theoretisch kader (a) Translaties (b) Rotaties (c) Zoomen (d) Ruis Figuur 2.10: Enkele voorbeelden van data-augmentatie. Hoofdstuk 3 Onderzoeksopzet en resultaten 3.1 Dataset De gebruikte dataset is beschikbaar gesteld in het kader van de wedstrijd “2014 ChaLearn Looking at People Challenge Track 3: Gesture Spotting” . Dit is dezelfde dataset als de wedstrijd van een jaar eerder: “2013 ChaLearn Multi-modal Gesture Recognition” [Escalera et al., 2013]. Het doel in deze wedstrijden is om gebaren in de gegeven video’s, opgenomen met een Microsoft Kinect 3D camera, te herekennen en/of te spotten. De opdrachten in beide wedstrijden zijn desondanks niet dezelfde. In 2013 mocht audio gebruikt worden om gebaren te herkennen. In 2014 is de audio uit de dataset verwijderd en wordt er meer de nadruk gelegd op het spotten van gebaren. Dit wil zeggen dat men naast classificatie ook het begin- en eindframe van een gebaar moet detecteren. De dataset bevat 13858 gebarenvoorbeelden van 20 verschillende Italiaanse gebaren met volgende benamingen: vattene, ok, vieniqui, cosatifarei, perfetto, basta furbo, prendere, cheduepalle, noncenepiu, chevuoi, fame, daccordo, tantotempo, seipazzo, buonissimo, combinato, messidaccordo, freganiente en sonostufo (zie Figuur 3.1). Deze worden uitgevoerd door 27 verschillende gebruikers. Dit wordt aangeleverd in 940 video’s, waaronder 470 (ongeveer 7000 gebaren) die gelabeld zijn in de trainingset, 230 (3418 gebaren) in de validatieset en 240 in de testset (3543 gebaren). 3.1.1 Eigenschappen Een aantal veronderstellingen en eigenschappen over de opgenomen dataset voor de wedstrijden zijn de volgende: • Een videobestand bevat een continue stroom van ´e´en enkele gebruiker die ge¨ısoleerde 26 27 Hoofdstuk 3. Onderzoeksopzet en resultaten (1) Vattene (2) Viene qui (3) Perfetto (4) E un furbo (5) Che due palle (6) Che vuoi (7) Vanno d’accordo (8) Sei pazzo (9) Cos hai combinato (10) Nonme me friega niente (11) Ok (12) Cosa ti farei (13) Basta (14) Le vuoi prendere (15) Non ce ne piu (16) Ho fame (17) Tanto tempo fa (18) Buonissimo (19) Si sono d’accordo (20) Sono stufo Figuur 3.1: De 20 Italiaanse gebaren [Escalera et al., 2013]. 28 Hoofdstuk 3. Onderzoeksopzet en resultaten (a) RGB-stroom (b) dieptebeeld (c) gebruikersindex (d) skeletinformatie Figuur 3.2: ChaLearn Gesture Recognition dataset gegevens. gebaren uitoefent. • Sommige gebaren zijn zogenaamde “ruisgebaren” , omdat ze niet behoren tot de set van de 20 Italiaanse gebaren. • De camera zelf beweegt niet en wordt gericht op het bovenlichaam van de gebruiker. • Ten alle tijde is slechts ´e´en gebruiker aanwezig in het visuele veld. • De gebaren worden enkel met de armen en de handen uitgevoerd. • Er is geen afgesproken rusthouding tussen de gebaren in. • Gebaren die slechts ´e´en hand gebruiken, kunnen zowel met de linkse als de rechtse hand uitgevoerd worden. • Er zijn variaties in: achtergrond, kleding, huidskleur, belichting, resolutie en gebaaruitvoering. Er worden vier verschillende datastromen gegeven (zie Figuur 3.2): • RGB-beeld: kleurenbeeld in 8-bit 640x480 resolutie. • Dieptebeeld: de z-component per pixel in millimeters met een 11-bit 640x480 resolutie. • Gebruikersindex: geeft aan waar de gebruiker zich in het dieptebeeld bevindt met een niet-nul waarde. • Skeletinformatie: voor elke frame worden de gewrichtsposities en -ori¨entaties gegeven. De skeletinformatie bestaat uit de volgende data: • Gewrichttypes (Figuur 3.3): HipCenter, HipLeft, Spine, KneeLeft, ShoulderCenter, AnkleLeft, Head, FootLeft, ShoulderLeft, HipRight, ElbowLeft, KneeRight, WristLeft, AnkleRight, HandRight, FootRight, HipCenter, Spine. • WorldPosition: de x-,y- en z-componenten van de globale positie in millimeters. Hoofdstuk 3. Onderzoeksopzet en resultaten 29 Figuur 3.3: Gewrichten die getracked worden door de Microsoft Kinect. • PixelPosition: de pixelco¨ordinaten in het RGB-beeld van het middelpunt van het gewricht. • WorldRotation: de ori¨entatie in de driedimensionale ruimte van het gewricht of van het bot van het skelet. Om dit te beschrijven zijn er vier co¨ordinaten nodig (in radialen). 3.1.2 Opdeling van de data De dataset die gebruikt wordt voor de experimenten van deze thesis, is de trainingset van de ChaLearn 2014 dataset. Deze bevat namelijk veel nauwkeurigere labels dan die van de ChaLearn 2013 dataset. Het nadeel is echter dat de labels van de validatieset pas op 9 mei 2014 beschikbaar worden gesteld. Daarom worden voor de meeste experimenten enkel de trainingset gebruikt. Dit heeft dan weer als voordeel dat er meer experimenten uitgevoerd kunnen worden in een kortere tijd, door de minder omvangrijke dataset. Uit 470 video’s in de trainingset van de wedstrijd worden 6600 niet-corrupte voorbeelden voorverwerkt. Een voorbeeld is corrupt als er belangrijke informatie ontbreekt, zoals bijvoorbeeld de skeletinformatie. De 6600 voorbeelden worden opgesplitst in 4600 trainingsvoorbeelden en 2000 validatievoorbeelden. De validatievoorbeelden bevatten een achtergrond en gebruikers die niet voorkomen in de trainingsvoorbeelden. De validatieset van de wedstrijd wordt enkel gebruikt om de segmantatie van de video’s te optimaliseren (zie Sectie 3.6). De testset van de wedstrijd wordt ook beschouwd als de testset voor deze masterproef. De gebruikers en de achtergronden in de testset komen deze keer w´el voor in de trainingset en de validatieset. Daarom kan men verwachten dat het classificatieresultaat op de testset beter zou zijn dan op de validatieset. Kort samengevat, wordt de beschikbare data op de volgende manier opgedeeld: Hoofdstuk 3. Onderzoeksopzet en resultaten 30 • Trainingset: 4600 gebaren uit de trainingset van de wedstrijd. • Validatieset voor classificatie: 2000 gebaren uit de trainingset van de wedstrijd, met gebruikers en achtergronden die niet voorkomen in de trainingset. • Validatieset voor segmentatie: 3418 gebaren. Dit is de validatieset van de wedstrijd. • Testset: 3543 gebaren met gebruikers en achtergronden die wel kunnen voorkomen in de trainingset en de validatieset. Dit is de testset van de wedstrijd. 3.2 Voorverwerking Om het CNN te helpen wordt er enige voorverwerking op de dataset toegepast alvorens de trainingsfase te starten. In theorie is er geen voorverwerking nodig, maar omdat de dataset beperkt is, zal de voorverwerking helpen om de belangrijkste patronen te herkennen in plaats van te overfitten op de overtollige informatie of de ruizige dieptebeelden. Daarom wordt zoveel mogelijk overtollig beeldmateriaal weggeknipt en de interresantste delen van de video’s naar boven gebracht. Daarnaast worden ook de ruizige dieptebeelden van de Microsoft Kinect bewerkt, door de achtergrond weg te filteren en de ruis te onderdrukken. Vooraleer beeldverwerkingen worden toegpast, worden de video’s van de trainingset gesegmenteerd aan de hand van de meegegeven labels. Een label bevat het ID en het beginen eindframe van het gebaar. Van elk gebaar worden 32 frames ge¨extraheerd rond het middenste frame en de RGB-stroom wordt omgezet in een grijswaardenbeeld. Na de beeldverwerkingen worden alle beelden herschaald naar een resolutie van 64x64. Op die manier wordt in de voorverwerking voor elk gebaar een videovoorbeeld van grootte 64x64x32 permanent opgeslagen. Belangrijk om op te merken is dat voor data-augmentatie de videovoorbeelden opgeslagen worden met een resolutie van 128x128x32 en na augmentatie de voorbeelden herschaald worden naar 64x64x32. 3.2.1 Bijsnijding In een eerste fase werd ge¨experimenteerd met het uitknippen van beide handen. Dit is mogelijk, omdat de positie van de handen gegeven is in de skeletinformatie (HandLeft en HandRight). De grootte van het uit te snijden gebied wordt bepaalt door: l= |HipCenter − Head| 2 (3.1) Dit is experimenteel bepaald door te kijken naar het resultaat. Deze grootte is niet constant, omdat de gebruiker dichter of verder van de camera kan staan, en grotere mensen hebben 31 Hoofdstuk 3. Onderzoeksopzet en resultaten (a) Detectie van hand en bovenlichaam. (b) Eindresultaat van voorverwerking. Figuur 3.4: Het resultaat van de voorverwerking. vaak ook grotere handen. Nadien werd vastgesteld dat beide handen niet hoeven uitgeknipt te worden. Namelijk, de meeste gebaren (in het geval voor deze dataset) worden met ´e´en hand uitgevoerd. En de gebaren die beide handen gebruiken, voeren dezelfde (gespiegelde) beweging uit met links en rechts. Daarom wordt voor elk gebaar gedetecteerd welk hand gemiddeld het hoogst opgetild wordt. Indien de linkerhand wordt gebruikt, wordt de video gespiegeld ten opzichte van de verticale as. Op die manier hoeft het model slechts ´e´en richting te leren herkennen. Het bovenlichaam wordt eveneens uitgeknipt, omdat hier meer informatie te vinden is over de positie van beide armen ten opzichte van het lichaam. De grenzen voor het uitgeknipt gebied wordt bepaald door: ytop = HipCentery − 1.4h ybodem = HipCentery + 0.7h (3.2) h = |HipCenter − Head| Opnieuw is dit experimenteel bepaald door te kijken naar het resultaat. Verder wordt ervoor gezorgt dat het gebied een 1:1 ratio heeft. En ook hier worden de video’s gespiegeld ten opzichte van de verticale as, indien de linkerhand gebruikt wordt. Het resultaat van de bijsnijdingen is te zien op Figuur 3.4. 3.2.2 Ruisonderdrukking in dieptebeeld De dieptebeelden van de Microsoft Kinect hebben een zeer ruizig karakter. Daarom worden een aantal technieken toegepast om de ruis te onderdrukken en de achtergrond weg te werken. De verschillende stappen worden gevisualiseerd in Figuur 3.5 en worden in wat volgt uitgelicht. 32 Hoofdstuk 3. Onderzoeksopzet en resultaten (1) Origineel (2) Thresholding (3) Achtergrond (4) Mediaanfilter Figuur 3.5: Voorverwerking van het dieptebeeld. Een eerste stap zal het hoogste 20% van het mogelijke bereik in het dieptebeeld thresholden. Thresholding is een techniek die een te kiezen interval van waarden op nul zal afbeelden. De pixels van het dieptebeeld B(x, y), met mogelijke waarden tussen a en b, worden op deze manier gethreshold: B 0 (x, y) = 0 als B(x, y) > 0.8(a − b) (3.3) B(x, y) anders Deze grote waarden zouden objecten zeer dicht bij de camera moeten voorstellen. In de dataset zijn er echter geen objecten dicht bij de camera, aangezien de gebruikers telkens een zekere afstand houden. Daarom kan men met zekerheid zeggen dat deze grote waarden ruis bevatten. In de volgende stap wordt er getracht de achtergrond te verwijderen. Hiervoor wordt de gebruikersindex ingezet. De gebruikersindex bevat zelf ook aanzienlijke ruis, waardoor men niet zomaar de achtergrond kan verwijderen door het als een binair masker te beschouwen. De index wordt gebruikt om statistieken uit de dieptewaarden van de gebruiker te bepalen. Door die statistieken kan men de achtergrond beter van de gebruiker onderscheiden. In het gebied BI waar de gebruiker zich volgens de index zou bevinden, wordt de mediaan B˜I en de standaardafwijking σBI berekend. Vervolgens wordt alles wat kleiner is dan B˜I − 3σBI gethreshold: B 0 (x, y) = 0 als B(x, y) < B˜I − 3σBI (3.4) B(x, y) anders Zoals men kan zien in de derde stap van Figuur 3.5, blijft er nog heel wat ruis achter. Aangezien het hier duidelijk om impulsruis gaat, is een mediaanfilter hiervoor geschikt. Een mediaanfilter is een niet-lineaire filter die het hele dieptebeeld zal afgaan en elke pixel zal vervangen door de mediaan in een lokaal venster (in dit geval wordt een venster van 3x3 gekozen). Dit zorgt ervoor dat impulsruis volledig verwijderd wordt, in plaats van uitgesmeerd, zoals met een Gaussiaanse filter. Daarnaast worden randen met een Hoofdstuk 3. Onderzoeksopzet en resultaten 33 Figuur 3.6: De architectuur van het gebruikte classificatiemodel voor de experimenten. mediaanfilter goed behouden in vergelijking met andere filters. 3.3 Architectuur, hyperparameters en training De architectuur van het model waarmee ge¨experimenteerd wordt, is afgebeeld in Figuur 3.6. De voorverwerking zal voor vier invoerkanalen zorgen met een resolutie van 64x64x32 (32 frames met grootte 64x64): het grijswaardenbeeld en het dieptebeeld van de hand en het bovenlichaam. De twee kanalen van de hand worden in een verschillend CNN gestopt dan die van het bovenlichaam. De architecturen van beide CNN’s zijn ten alle tijden identiek aan elkaar. Ze bestaan elk uit drie lagen met in de eerste laag 16 5x5 filters, in de tweede laag 32 5x5 filters en in de laatste laag 48 4x4 filters. Voor max-pooling wordt in alle lagen gepoold in vensters van 2x2x2. Het ANN bestaat uit ´e´en verborgen laag met 512 units. Alle units zijn ReLU’s, al zijn er een tweetal experimenten die met tanh units worden uitgevoerd. Voor de normalisatie wordt in de eerste twee lagen van het CNN lokaal contrast normalisatie (LCN) gebruik. In de derde laag wordt variantienormalisatie per featuremap toegepast v´ o´ or en na de filter-pool combinatie: (x − µ)/σ. Alle bovenstaande architectuurbeslissingen en de hyperparameters uit Tabel 3.1 werden experimenteel en enigszins op intu¨ıtie en goede raad van de begeleiders bepaald. Het is namelijk onmogelijk om in een korte tijd alle mogelijke combinaties van hyperparameters uit te proberen. Merk op dat `1- en `2-regularisatie niet wordt gebruikt. Hier wordt initieel mee ge¨experimenteerd, maar uiteindelijk wordt vastgesteld dat dropout voldoende regulariseert en `1- en `2-regularisatie geen verbetering biedt. Voor de experimenten met data-augmentatie worden de transformaties in Tabel 3.1 toegepast op de trainingsvoorbeelden. Dit wordt in real time uitgevoerd tijdens het trainen Hoofdstuk 3. Onderzoeksopzet en resultaten Hyperparameter Waarde Filters: Laag 1 Laag 2 Laag 3 16@5x5 32@5x5 48@4x4 Verborgen units ANN Leersnelheid Leervertraging per epoch Mini-batch grootte `1-regularisatie `2-regularisatie Momentumco¨effici¨ent Dropout LCN filters 512 3.10−3 5% 20 0 0 0.9 50% (p = 0.5) 9x9 in laag 1 en 7x7 in laag 2 en 3 Initialisatie: Gewichten CNN Bias CNN Gewichten ANN Bias ANN Gaussiaans verdeeld (µ = 0, σ = 0.04) 0.2 Gaussiaans verdeeld (µ = 0, σ = 0.01) 0.1 Data-augmentatie: Zoom Rotatie Spatiale translatie Temporele translatie [0, 10]%, uniform verdeeld [-3, 3]°, uniform verdeeld [-5, 5] pixels, uniform verdeeld [-4, 4] frames, uniform verdeeld 34 Tabel 3.1: Hyperparameters. met behulp van meerdere processen en een multicore processor. De processor is hiervoor beschikbaar, omdat het model op de GPU getraind wordt (zie volgende sectie). Met een gedeelde FIFO-wachtrij over alle processen worden de geaugmenteerde voorbeelden aan het model doorgegeven. Het trainingsalgoritme maakt gebruik van mini-batch gradient descent en NAG-momentum. Tijdens het trainen wordt na elke epoch (i.e. een overloop van de trainingset) het model ge¨evalueerd met de validatievoorbeelden. De trainingsfase wordt stopgezet als de trainingskost en -fout zeer lage waarden behaald hebben (afhankelijk van experiment, omdat een lage waarde met data-augmentatie 3% betekent, terwijl dit 0.1% is zonder data-augmentatie) en er een aantal epochs geen verbetering op de laagste validatiefout te zien is. Op het moment dat de validatiefout het laagst is, wordt het model met zijn parameters permanent opgeslagen. Deze laagste validatiefout wordt dan beschouwd als het validatieresultaat. De trainingsfase telt gemiddeld voor alle experimenten 25 tot 35 epochs, waarbij elke epoch 5 tot 10 minuten duurt met GPU-acceleratie en 3 tot 5 keer trager zonder GPU-acceleratie. Hoofdstuk 3. Onderzoeksopzet en resultaten 35 Het resultaat van een getraind model wordt gevisualiseerd in Figuur 3.7 1 . Men ziet duidelijk dat het CNN geleerd heeft om de contouren van het bovenlichaam en de vingers naar boven te halen. Merk op dat het ook geleerd heeft om zo veel mogelijk verschillende features te extraheren. De featuremaps zijn bijna allemaal verschillend. Dit zal helpen de verschillende klassen te onderscheiden. De laatste lagen worden moeilijker herkenbaar voor de mens, maar juist meer herkenbaar voor de computer. 3.4 Opstelling De experimenten worden uitgevoerd op een aantal beschikbare PC’s van het Reservoir Lab aan de vakgroep voor Elektronica en Informatiesystemen van de UGent. Deze bevatten hexacore processors (Intel Core i7-3930K) met een kloksnelheid van 3.2GHz en en maximum turbofrequentie van 3.8GHz. Het predictief model wordt met GPU-technologie getraind met behulp van een NVIDIA GeForce GTX 680 grafische kaart. De programmeertaal die gebruikt wordt is Python. Om datamanipulatie en GPU-acceleratie toe te passen, bestaan er handige en krachtige bibliotheken voor Python. Het is tegenwoordig een van de meest gebruikte talen voor wetenschappelijke berekeningen in het algemeen. Er wordt voornamelijk gebruik gemaakt van de volgende open source Python bibliotheken: • SciPy-stack2 : een collectie van wetenschappelijke software. NumPy is hierin het meest fundamentele pakket. • Theano 0.6 [Bergstra et al., 2010]: een softwarepakket dat mathematische expressies omzet tot een symbolische graaf om nadien te compileren tot een functie die transparant gebruik maakt van GPU-acceleratie. Daarnaast biedt Theano een aantal veelgebruikte functies in machine learning, zoals bijvoorbeeld de implementatie van de softmaxlaag in een ANN. • PyLearn2 [Goodfellow et al., 2013b]: een bibliotheek met modellen voor machine learning. Hiervoor is Theano vereist. Deze bibliotheek wordt enkel gebruikt voor de Python-wrappers van enkele snelle GPU-implementaties die ontwikkeld werden voor het werk van [Krizhevsky et al., 2012]. Namelijk, de implementatie van een filterbank met 2D-convoluties en de implementatie van lokaal response normalisatie. Voor de realtime demonstratie wordt een Microsoft Kinect gebruikt, met Python-bindings voor het Kinect SDK-pakket van Microsoft. Er is tijdens het academiejaar een alpha versie 1 2 Noteer dat dit niet exact dezelfde architectuur bevat dan in de experimenten voor de validatieresultaten. http://www.scipy.org/ 36 Hoofdstuk 3. Onderzoeksopzet en resultaten 2@ 64x64x32 Convolutie: 16 filters (7x7) 16 @ 58x58x32 Max-pooling (2x2x2) + LCN 16 @ 29x29x16 Convolutie: 32 filters (8x8) 32 @ 22x22x16 Max-pooling (2x2x2) + LCN 32 @ 11x11x8 Convolutie: 64 filters (6x6) 64 @ 6x6x8 Max-pooling (2x2x2) 64 @ 3x3x4 Figuur 3.7: Visualisatie van het convolutioneel neuraal netwerk. 37 Hoofdstuk 3. Onderzoeksopzet en resultaten Fout (%) Verbetering (%) 20.20 18.90 14.40 11.90 10.30 8.30 6.4 23.8 17.4 13.4 19.4 Tanh units + momentum ReLU + momentum + dropout + LCN (eerste 2 lagen) + data-augmentatie Tabel 3.2: Validatieresultaten. van de Microsoft Kinect versie 2 besteld geweest, maar deze is defect aangekomen en er kon geen nieuwe opgestuurd worden. 3.5 Experimenten en validatieresultaten De validatieresultaten zijn weergegeven in Tabel 3.2. Het model dat gebruikt werd om deze resultaten te behalen, is beschreven in Sectie 3.3. De opdeling van de dataset wordt in Sectie 3.1.2 uitgelicht. Opmerkelijk is de grote verbetering wanneer overgeschakeld wordt van tanh units naar ReLU’s. Een verbetering van 23.8% op de het foutpercentage door ´e´en enkele optimalisatietechniek toe te passen, is een grote sprong. Daarom wordt in wat volgt ook alleen maar met ReLU’s ge¨experimenteerd. Momentum heeft weinig effect op de verbetering van de validatiefout, maar deze is vooral ingezet voor het versnellen van de trainingsfase. Dropout, met een verbetering van 17.3%, bewijst hier een grote rol te spelen in de generalisering. Met LCN kunnen we het foutpercentage nog verder laten dalen tot 10.3%. Tot slot wordt met data-augmentatie nog een verbetering van maar liefst 19.4% gehaald. Het beste waargenomen resultaat is dus een validatienauwkeurigheid van 91.7% (foutpercentage van 8.3%) met behulp van ReLU’s, momentum, dropout, LCN en data-augmentatie. De vergelijking van de trainingssnelheden zijn afgebeeld in Figuur 3.8. Merk op dat de epochs voor de verschillende gevallen ongeveer even lang duren, omdat hetzelfde model wordt gebruikt, en data-augmentatie wordt op de CPU’s uitgevoerd. Men ziet duidelijk dat dropout de trainingstijd ruwweg verdubbelt. De reden hiervoor is dat het artificieel neuraal netwerk wordt aangepast door dropout. Willekeurige units worden verwijderd waardoor het leren vertraagd wordt. Maar door LCN in de eerste twee lagen van het CNN toe te passen, kan het weer aanzienlijk versneld worden. En dit zonder dat de trainingsfout te snel een kleine waarde aannneemt. Men ziet dat zonder dropout, de trainingsfout vrij snel naar nul convergeert. Dit is meestal een indicatie dat het model overfit. Er valt namelijk snel niets meer te trainen. De fout is gelijk aan nul en de kostfunctie heeft een lokaal minimum 38 Hoofdstuk 3. Onderzoeksopzet en resultaten 35 NAG NAG+Drop NAG+Drop+LCN NAG+Drop+LCN+Aug Trainingsfout (%) 30 25 20 15 10 5 0 0 5 10 15 20 Epoch Figuur 3.8: Vergelijking van de trainingssnelheid voor de verschillende optimalisatietechnieken. bereikt, terwijl de validatiefout vaak vele malen groter is. Met data-augmentatie zien we niet meer zo’n sterke daling van de trainingsfout. Dit kan verklaard worden doordat de data aan de invoer praktisch nooit hetzelfde is over alle epochs, waardoor de generalisatie van het model verbetert. Omdat met data-augmentatie de trainingsfase aanzienlijk wordt vertraagd, zal er in wat volgt verschillende experimenten vergeleken worden zonder data-augmentatie (het voorlaatste resultaat in Tabel 3.2). Hier wordt een classificatiefout behaald van 10.3% met behulp van ReLU’s, NAG-momentum, dropout en LCN (alle optimalisatietechnieken zonder data-augmentatie). 3.5.1 Invloed van de invoerkanalen De invoerkanalen van het model zijn de voorverwerkte video’s die besproken worden in Sectie 3.2. Er zijn in totaal vier invoerkanalen: het grijswaardenbeeld en het dieptebeeld van de hand en het bovenlichaam. Om na te gaan welk soort invoerkanaal het meeste nuttige informatie voor het CNN bevat, wordt ge¨experimenteerd door enkel ´e´en kanaalsoort als invoer te beschouwen. De resultaten voor deze experimenten zijn te vinden in Tabel 3.3. Uit deze resultaten blijkt dat de nuttigste informatie voor het CNN zich bevindt in de voorverwerkte dieptebeelden. Door de grijswaardenbeelden toe te voegen aan de dieptebeelden gaat het foutpercentage slechts van 11.55% naar 10.3%, terwijl deze van 23.3% naar 10.3% gaat in het omgekeerde geval. Verder wordt waargenomen dat gebaren iets minder te onderscheiden zijn door enkel het bovenlichaam in te voeren t.o.v. enkel de hand. Dit kan verklaard worden doordat sommige gebaren dezelfde armbewegingen maken, maar verschillende handuitdrukking. Er zijn daarenboven meer verschillende handuitdrukkingen dan verschillende armbewegingen tussen de 20 gebaren. 39 Hoofdstuk 3. Onderzoeksopzet en resultaten Fout (%) Grijswaarden + diepte: Bovenlichaam Hand 15.45 14.05 Bovenlichaam + hand: Grijswaarden Diepte 23.30 11.55 Spatiale resolutie: 32x32 64x64 128x128 11.15 10.30 11.70 Tabel 3.3: Invloed van het invoerkanaal op het valiatieresultaat. # lagen 2 3 4 Fout (%) 11.90 10.30 10.95 Filters 9x9 - 5x5 - 3x3 5x5 - 5x5 - 4x4 3x3 - 4x4 - 3x3 Fout (%) 10.30 10.30 11.75 # filters 8 - 16 - 24 16 - 32 - 48 32 - 64 - 48 Fout (%) 11.60 10.30 11.10 Tabel 3.4: Invloed van de architectuur op het validatieresultaat. 3.5.2 Invloed van de architectuur Met het architectuur van het CNN wordt ook ge¨experimenteerd (Tabel 3.4). Maar zoals de resultaten aangeven, hebben deze niet zoveel invloed op het eindresultaat in vergelijking met de invoerkanalen in de vorige sectie. De grootste afwijking die waargenomen wordt is als er twee CNN lagen in plaats van drie worden gebruikt (van 10.3% naar 11.9%). Dit wil zeggen dat de diepte van het architectuur het belangrijkst is. Daarnaast kan men ook zien dat te kleine filters niet zo goed features kunnen extracten als grotere filters (van 10.3% naar 11.75%). Verder kan men ook sleutelen aan het aantal filters in elke laag. Teveel filters zorgen voor teveel parameters, waardoor het model meer kan overfitten. En te weinig filters zorgen voor een te hoge bias, omdat de expansie van de filterbank niet groot genoeg is om de 20 klassen van elkaar te onderscheiden. Dit gezegd zijnde, hebben deze architectuurwijzigingen in het algemeen niet zoveel invloed. De validatieresultaten van een aantal noemenswaardige experimenten omtrent de architectuur van het model zijn weergegeven in Tabel 3.5. Met frame-pooling, wordt 3D max-pooling vervangen door spatiale 2D max-pooling en de frames worden nadien bij elkaar gepoold. Alle frames worden gepartitioneerd in groepen van twee frames. Van elke groep blijft de frame over waar het gemiddelde het grootst is. De reden voor dit experiment is dat max-pooling over videoframes niet zo initiu¨ıtief lijkt voor de mens. Als men, bijvoorbeeld, max-poold over twee frames waar een hand beweegt, zal het resulterende 40 Hoofdstuk 3. Onderzoeksopzet en resultaten Experimeten Frame-pooling 2D pooling (i.p.v. 3D) 3D convoluties (i.p.v. 2D) LCN in 3 lagen LRN (i.p.v. LCN) Fout (%) 13.60 11.95 10.75 10.90 13.50 Tabel 3.5: Invloed van de architectuur op het validatieresultaat. Een aantal noemenswaardige experimenten. frame twee handen bevatten. Op het eerste zicht lijkt dit een vreemde manier om features te extraheren. Maar voor de computer blijkt dit helemaal geen probleem te zijn. En zoals de resultaten aangeven is zelfs zonder pooling over de derde dimensie een betere oplossing dan frame-pooling (van 11.95% naar 13.6%). Verder wordt ook ge¨experimenteerd met 3D convoluties. De filtergroottes voor het resultaat in de tabel (10.75%) zijn 3x5x5 in de eerste laag, 5x5x5 in de tweede laag en 3x4x4 in de laatste CNN laag. Tijdens het academiejaar werd meerdere malen ge¨experimenteerd met 3D convoluties, maar 2D convoluties gaven altijd betere resultaten en maken het model ook minder rekenintensief. Er wordt daarenboven ook steeds ervoor gezorgt dat het aantal parameters in elke laag afgestemd wordt op de validatievoorbeelden. Tot slot wordt ge¨experimenteerd met normalisaties. Als men LCN ook in de laatste laag van het CNN toepast, zal dit geen gunstig effect geven. In de laatste laag is er niet veel lokaliteit meer, door de lage resoluties van de featuremaps. Het enige wat LCN zal doen ten opzichte van variantienormalisatie, is informatie verliezen aan de randen van de featuremaps, door de toepassing van de Gaussiaanse filter. Verder wordt er ook een experiment uitgevoerd met LRN met dezelfde hyperparamters als gebruikt wordt in [Krizhevsky et al., 2012]. Deze normalisatie wordt niet zo vaak gebruikt, en het resultaat voor dit experiment is ongustig, daarom wordt beslist om het verder niet meer te gebruiken. 3.6 Segmentatie en realtime demo De validatieresultaten van vorige sectie zijn behaald door continue videostromen in stukken te knippen door middel van de meegeleverde labels. Met andere woorden, tot nu toe werd manueel aangegeven wanneer een gebaar begint en wanneer dit eindigt. Indien men gebarentaalherkenning wil automatiseren moet deze temporele segmentatie uiteraard automatisch gebeuren. Bovendien is dit ook noodzakelijk voor de ChaLearn wedstrijd (beschreven in Sectie 3.1). De testset van de wedstrijd is namelijk niet gelabeled. Dit gezegd zijnde, is er voor classificatie meer aandacht besteed dan voor segmentatie. Er zijn geen 41 Hoofdstuk 3. Onderzoeksopzet en resultaten state-of-the-art technieken gebruikt, maar desondanks is de ontwikkelde segmentatiemodule voldoende functioneel om een degelijke score te halen op de testset en de validatieset van de wedstrijd. Voor de segmentatie wordt een eenvoudige sliding window-techniek toegepast over 32 frames. Alle mogelijke intervallen van 32 frames worden in het model gevoerd, waardoor de voorspelde probabiliteiten van elke klasse worden verkregen. Als tijdens het verloop van de frames in de video de maximale probabiliteit hoog genoeg is (bijvoorbeeld hoger dan 0.9), zal er voorspeld worden dat een gebaar aan het begin van dat interval begint. Eens de maximale probabiliteit weer daalt of dat het maximum verschuift naar een andere klasse, zal er voorspeld worden dat het gebaar eindigt. Om een duidelijker onderscheid te maken tussen segmenten met een gebaar en segmenten zonder gebaar, wordt een extra klasse aan het model toegevoegd die de videosegmenten zonder gebaar categoriseren. De hierboven beschreven segmentatietechniek is eveneens toegepast voor de ontwikkeling van het realtime demo met de Microsoft Kinect. Voor deze demo moet ervoor gezorgt worden dat de voorverwerking, de evaluatie en de segmentatie snel genoeg zijn voor realtime gebruik. Dit blijkt, zelfs met een middenklasse laptop uit 2013, geen groot probleem te zijn. Door het aantal predicties per seconde klein genoeg te kiezen, kan het gemakkelijk aangepast worden aan de gebruikte computer. 3.7 Eindresultaten De testset voor deze masterproef is de testset van de 2014 ChaLearn wedstrijd en bevat 240 video’s (3543 gebaren) van gebruikers en achtergronden die eveneens kunnen voorkomen in de trainingset en de validatieset. De classificatiefout die het beste model hierop behaalt is 4.32% met alle optimalisatietechnieken ingeschakelt, inclusief data-augmentate. Dit model is geoptimaliseerd op de validatieset, waar het een fout van 8.3% behaalt. De video’s bevatten ook een aantal gebaren die niet tot de 20 klassen behoren. Hierop worden eveneens een aantal fouten gemaakt door het model, namelijk 4.13% zijn fout-positieve voorspellingen. De test- en validatiescore van de wedstrijd wordt bepaald op basis van de Jaccard Index per gebaar: Jn = An ∩ B n An ∪ B n (3.5) met An en Bn binaire vectors waarbij de 1-waarden de frames aangeven dat het n-de gebaar wordt uitgevoerd. An is de ground truth van alle frames waar het n-de gebaar in de video voorkomt en Bn is de voorspelling. De score is gelijk aan het gemiddelde van Jn Hoofdstuk 3. Onderzoeksopzet en resultaten 42 over alle gebaren in zowel de ground truth als in de predicties. Het is een mate van overlap tussen de voorspellingen en de ground truth. In het geval van fout-positieven (voorspelde gebaren die niet in de ground truth voorkomen) wordt de Jaccard Index automatisch 0 voor dat voorspelde gebaar en dat zal meegeteld worden in het gemiddelde. De totale Jaccard Index-gebaseerde validatiescore van de wedstrijd is 0.790, ofwel 79.0% overlap. De testscore bedraagt 0.789, ofwel 78.9% overlap. Dit verschil is zeer klein, omdat in de testset dezelfde gebruikers en achtergronden voorkomen als de validatieset van de wedstrijd (niet de validatieset van deze masterproef). Van de 35 teams die zich hebben ingeschreven voor de ChaLearn wedstrijd, behaalt deze score de vijfde plaats. De resultaten en de methodes van de andere teams zijn op dit moment nog niet publiekelijk bekend gemaakt. Kort samengevat, zijn dit de eindresultaten voor de testset: • Classificatiefout: 4.32% • Fout-positieven: 4.13% • Temporele overlap: 78.9% Hoofdstuk 4 Conclusie 4.1 Besluit Er is aangetoond dat het mogelijk is om 20 verschillende ge¨ısoleerde gebaren te herkennen met behulp van de Microsoft Kinect, convolutionele neurale netwerken (CNN’s) en GPUacceleratie. Er is een validatienauwkeurigheid van 91.70% en een testnauwkeurigheid van 95.68% waargenomen. De reden dat het testresultaat beter is dan het validatieresultaat is omdat het model geoptimaliseerd wordt op de validatieset met gebaren die uitgevoerd worden door gebuikers en omgevingen die niet in de trainingset voorkomen. In de voorverwerking wordt het bovenlichaam en de bovenste hand uitgesneden, en wordt de ruis in het dieptebeeld onderdrukt. Er worden twee CNN’s gebruikt, ´e´en voor de extractie van handfeatures en ´e´en voor het bovenlichaam. Een artifieel neuraal netwerk (ANN) met ´e´en verborgen laag zorgt voor de classificatie. Generalisatietechnieken zoals dropout, data-augmentatie en rectified linear units (ReLU’s), en acceleratietechnieken, zoals lokaal contrast normalisatie (LCN), momentum en GPU-technologie, zijn met success toegepast en onderzocht met behulp van de dataset van de 2014 ChaLearn wedstrijd. ReLU’s en het gebruik van voorverwerkte dieptebeelden bewijzen de meeste invloed op het classificatieresultaat te hebben. Verder tonen de experimenten aan dat kleine aanpassingen aan de architectuur van CNN’s weinig impact hebben op het resultaat. De temporele segmentatie van videostromen wordt verwezenlijkt door in elk interval van 32 frames te bepalen of de maximale voorspelde klasseprobabiliteit voldoende groot is en door een extra klasse toe te voegen met segmenten zonder gebaar. Met behulp van bovenstaande technieken is er een realtime demo ontwikkeld met de Microsoft Kinect die de 20 Italiaanse gebaren met hoge nauwkeurigheid kan herkennen. 43 Hoofdstuk 4. Conclusie 4.2 44 Aanbevelingen voor verder onderzoek Automatische herkenning van ge¨ısoleerde gebaren volstaat niet, omdat gebarentaal een continue gebarenstroom is met bewegingsepenthesis. Er kan onderzocht worden hoe de segmentatie van de videostroom aangepakt moet worden en hoe men met bewegingsepenthesis moet omgaan. Hiervoor kunnen eerst de standaard-aanpakken uit de spraakverwerking ge¨evalueerd worden, want daar bestaan detzelfde problemen. Gesproken taal is namelijk een continue stroom van geluid en moet gesegmenteerd worden in het geval van spraakherkenning. Hier bestaat ook het probleem van epenthesis en/of hiaatdelging. Extra klanken of medeklinkers worden toegevoegd om de uitspraak te vergemakkelijken. “Hoe is het ermee?”, bijvoorbeeld, spreekt men in spraaktaal uit als “Hoe-w-istermee?”. Een ge¨ıntegreerd model zou opgebouwd kunnen worden op basis van een CNN, dat segmentatie, bounding box bepaling en classificatie simultaan implementeert. [Erhan et al., 2013] gebruikt diepe modellen voor zowel objectdetectie, i.e. het bepalen van een bounding box, als classificatie. [Zeiler & Fergus, 2013b] toont aan hoe eenzelfde netwerk zou kunnen gebruikt worden voor zowel bounding box-bepaling als classificatie. Verder zou onderzocht kunnen worden hoe men een taalmodel moet ontwikkelen die de afzonderlijke gebaren kan combineren tot betekenisvolle zinnen. Dit taalmodel zal eveneens de prestatie van het herkenningssysteem verbeteren. Het onderzoekswerk omtrent een specifieke gebarentaal kan ook overgebracht worden naar een andere taal. Hierbij kunnen technieken uit transfer learning [Pan & Yang, 2010] gebruikt worden. Het herkenningsmodel zal geleerde kennis over de gebruikte gebarentaal bezitten. Een deel van deze kennis is specifiek voor de taal. Maar vooral de eerste lagen van het diep model, waar laagniveau kenmerken worden ge¨extraheerd (zoals randen, vingers en handen), zijn over te dragen naar andere gebarentalen en/of dialecten. Dit zal dus het bouwen van herkenners voor andere gebarentalen en varianten vereenvoudigen. Het onderzoek naar automatische gebarentaal met behulp van deep learning is veelbelovend voor de herkenning in realistische omstandigheden. Het zal niet alleen doven en slechthorenden vooruit helpen, maar kan ook gebruikt worden als een tool die taalkundig onderzoek naar gebarentaal vergemakkelijkt. Daarnaast kan alle innovatie omtrent CNN’s en deep learing van nut zijn voor andere toepassingen, zoals beeldherkenning, sc`ene-interpretatie en -segmentatie, en andere taken waar videodata aan te pas komt. Bibliografie [Ali & Shah, 2010] Ali, S. & Shah, M. (2010). Human action recognition in videos using kinematic features and multiple instance learning. Pattern Analysis and Machine Intelligence, IEEE Transactions on, 32(2), 288–303. [Bengio, 2009] Bengio, Y. (2009). Learning deep architectures for ai. Foundations and trends in Machine Learning, 2(1), 1–127. [Bengio et al., 2007] Bengio, Y., Lamblin, P., Popovici, D., Larochelle, H., et al. (2007). Greedy layer-wise training of deep networks. Advances in neural information processing systems, 19, 153. [Bergstra et al., 2010] Bergstra, J., Breuleux, O., Bastien, F., Lamblin, P., Pascanu, R., Desjardins, G., Turian, J., Warde-Farley, D., & Bengio, Y. (2010). Theano: a CPU and GPU math expression compiler. In Proceedings of the Python for Scientific Computing Conference (SciPy). Oral Presentation. [Brunet, 2010] Brunet, F. (2010). Contributions to Parametric Image Registration and 3D Surface Reconstruction. PhD thesis, Universit´e d’Auvergne. [Chai et al., 2013] Chai, X., Li, G., Lin, Y., Xu, Z., Tang, Y., Chen, X., & Zhou, M. (2013). Sign Language Recognition and Translation with Kinect. [Cire¸san et al., 2012] Cire¸san, D., Meier, U., & Schmidhuber, J. (2012). Multi-column deep neural networks for image classification. In Computer Vision and Pattern Recognition (CVPR), 2012 IEEE Conference on (pp. 3642–3649).: IEEE. [Cire¸san et al., 2011a] Cire¸san, D. C., Meier, U., Gambardella, L. M., & Schmidhuber, J. (2011a). Convolutional neural network committees for handwritten character classification. In Document Analysis and Recognition (ICDAR), 2011 International Conference on (pp. 1135–1139).: IEEE. [Cire¸san et al., 2011b] Cire¸san, D. C., Meier, U., Masci, J., Gambardella, L. M., & Schmidhuber, J. (2011b). Flexible, high performance convolutional neural networks for 45 Bibliografie 46 image classification. In Proceedings of the Twenty-Second international joint conference on Artificial Intelligence-Volume Volume Two (pp. 1237–1242).: AAAI Press. [Cooper et al., 2012] Cooper, H., Ong, E.-J., Pugeault, N., & Bowden, R. (2012). Sign language recognition using sub-units. The Journal of Machine Learning Research, 13(1), 2205–2231. [Erhan et al., 2013] Erhan, D., Szegedy, C., Toshev, A., & Anguelov, D. (2013). Scalable object detection using deep neural networks. arXiv preprint arXiv:1312.2249. [Escalera et al., 2013] Escalera, S., Gonz`alez, J., Bar´o, X., Reyes, M., Lopes, O., Guyon, I., Athistos, V., & Escalante, H. (2013). Multi-modal gesture recognition challenge 2013: Dataset and results. ICMI. [Glorot et al., 2011] Glorot, X., Bordes, A., & Bengio, Y. (2011). Deep Sparse Rectifier Networks. Proceedings of the 14th International Con- ference on Artificial Intelligence and Statistics, 15, 315–323. [Goodfellow et al., 2013a] Goodfellow, I. J., Bulatov, Y., Ibarz, J., Arnoud, S., & Shet, V. (2013a). Multi-digit number recognition from street view imagery using deep convolutional neural networks. arXiv preprint arXiv:1312.6082. [Goodfellow et al., 2013b] Goodfellow, I. J., Warde-Farley, D., Lamblin, P., Dumoulin, V., Mirza, M., Pascanu, R., Bergstra, J., Bastien, F., & Bengio, Y. (2013b). Pylearn2: a machine learning research library. arXiv preprint arXiv:1308.4214. [Hinton et al., 2006] Hinton, G. E., Osindero, S., & Teh, Y.-W. (2006). A fast learning algorithm for deep belief nets. Neural computation, 18(7), 1527–1554. [Hinton et al., 2012] Hinton, G. E., Srivastava, N., Krizhevsky, A., Sutskever, I., & Salakhutdinov, R. R. (2012). Improving neural networks by preventing co-adaptation of feature detectors. arXiv preprint arXiv:1207.0580. [Jarrett & Kavukcuoglu, 2009] Jarrett, K. & Kavukcuoglu, K. (2009). What is the best multi-stage architecture for object recognition? Computer Vision, 2009 IEEE 12th International Conference on, (pp. 2146–2153). [Ji et al., 2013] Ji, S., Yang, M., & Yu, K. (2013). 3D convolutional neural networks for human action recognition. IEEE transactions on pattern analysis and machine intelligence, 35(1), 221–31. [Karpathy et al., 2014] Karpathy, A., Toderici, G., Shetty, S., Leung, T., Sukthankar, R., & Fei-Fei, L. (2014). Large-scale video classification with convolutional neural networks. In CVPR. Bibliografie 47 [Krizhevsky et al., 2012] Krizhevsky, A., Sutskever, I., & Hinton, G. (2012). Imagenet classification with deep convolutional neural networks. Advances in Neural Information, (pp. 1–9). [Lecun et al., 1998] Lecun, Y., Bottou, L., Bengio, Y., & Haffner, P. (1998). Gradient-based learning applied to document recognition. Proceedings of the IEEE, 86(11). [Mitchell, 1997] Mitchell, T. M. (1997). Machine learning. 1997. Burr Ridge, IL: McGraw Hill, 45. [Nair & Hinton, 2010] Nair, V. & Hinton, G. E. (2010). Rectified linear units improve restricted boltzmann machines. In Proceedings of the 27th International Conference on Machine Learning (ICML-10) (pp. 807–814). [Pan & Yang, 2010] Pan, S. J. & Yang, Q. (2010). A survey on transfer learning. Knowledge and Data Engineering, IEEE Transactions on, 22(10), 1345–1359. [Poppe, 2010] Poppe, R. (2010). A survey on vision-based human action recognition. Image and vision computing, 28(6), 976–990. [Samuel, 1959] Samuel, A. L. (1959). Some studies in machine learning using the game of checkers. IBM Journal. [Sutskever et al., 2013] Sutskever, I., Martens, J., Dahl, G., & Hinton, G. (2013). On the importance of initialization and momentum in deep learning. In Proceedings of the 30th International Conference on Machine Learning (ICML-13) (pp. 1139–1147). [Van Herreweghe & Vermeerbergen, 2009] Van Herreweghe, M. & Vermeerbergen, M. (2009). Flemish sign language standardisation. Current Issues in Language Planning, 10. [Vannieuwenhuyse, 2013] Vannieuwenhuyse, J. (2013). Gebarentaal herkennen met de microsoft kinect. [Verschaeren, 2012] Verschaeren, R. (2012). Automatische herkenning van gebaren met de microsoft kinect. [Yang et al., 2010] Yang, R., Sarkar, S., & Loeding, B. (2010). Handling movement epenthesis and hand segmentation ambiguities in continuous sign language recognition using nested dynamic programming. Pattern Analysis and Machine Intelligence, IEEE Transactions on, 32(3), 462–477. [Zaki & Shaheen, 2011] Zaki, M. M. & Shaheen, S. I. (2011). Sign language recognition using a combination of new vision based features. Pattern Recognition Letters, 32(4), 572–577. Bibliografie 48 [Zeiler & Fergus, 2013a] Zeiler, M. & Fergus, R. (2013a). Stochastic pooling for regularization of deep convolutional neural networks. arXiv preprint arXiv:1301.3557, (pp. 1–9). [Zeiler & Fergus, 2013b] Zeiler, M. D. & Fergus, R. (2013b). Visualizing and understanding convolutional neural networks. arXiv preprint arXiv:1311.2901.
© Copyright 2024 ExpyDoc