Gesture recognition with Kinect. Joakim Larsson

Similar documents
Biometrics Prof. Phalguni Gupta Department of Computer Science and Engineering Indian Institute of Technology, Kanpur. Lecture No.

Introduction to Statistical Hypothesis Testing Prof. Arun K Tangirala Department of Chemical Engineering Indian Institute of Technology, Madras

An Efficient Indexing Approach to Find Quranic Symbols in Large Texts

Information Extraction. CS6200 Information Retrieval (and a sort of advertisement for NLP in the spring)

NPTEL NPTEL ONINE CERTIFICATION COURSE. Introduction to Machine Learning. Lecture-59 Ensemble Methods- Bagging,Committee Machines and Stacking

Grade 6 Math Connects Suggested Course Outline for Schooling at Home

TEXT MINING TECHNIQUES RORY DUTHIE

Math 10 Lesson 1 4 Answers

QCAA Study of Religion 2019 v1.1 General Senior Syllabus

Curriculum Guide for Pre-Algebra

Deep Neural Networks [GBC] Chap. 6, 7, 8. CS 486/686 University of Waterloo Lecture 18: June 28, 2017

Georgia Quality Core Curriculum

NPTEL NPTEL ONLINE CERTIFICATION COURSE. Introduction to Machine Learning. Lecture 31

From Machines To The First Person

APAS assistant flexible production assistant

Potten End Church of England Primary School Curriculum Map. Year 6

TECHNICAL WORKING PARTY ON AUTOMATION AND COMPUTER PROGRAMS. Twenty-Fifth Session Sibiu, Romania, September 3 to 6, 2007

Verification of Occurrence of Arabic Word in Quran

Touch Receptors and Mapping the Homunculus

Boosting. D. Blei Interacting with Data 1 / 15

A New Parameter for Maintaining Consistency in an Agent's Knowledge Base Using Truth Maintenance System

philippine studies Ateneo de Manila University Loyola Heights, Quezon City 1108 Philippines

TAF_RZERC Executive Session_29Oct17

McDougal Littell High School Math Program. correlated to. Oregon Mathematics Grade-Level Standards

for E XCELLENCE Evaluation Worksheets Your Snapshots The Kingdom Perspective

ECE 5424: Introduction to Machine Learning

Balancing Authority Ace Limit (BAAL) Proof-of-Concept BAAL Field Trial

I thought I should expand this population approach somewhat: P t = P0e is the equation which describes population growth.

E-BOOK # PROFORM 470 HR MANUAL DOCUMENT

Question Answering. CS486 / 686 University of Waterloo Lecture 23: April 1 st, CS486/686 Slides (c) 2014 P. Poupart 1

1. Introduction Formal deductive logic Overview

CS224W Project Proposal: Characterizing and Predicting Dogmatic Networks

The AEG is requested to: Provide guidance on the recommendations presented in paragraphs of the issues paper.

Thank you for downloading the FREE SAMPLE of Follower one of the 4- session Bible studies from ym360 s Event Resources.

Now you know what a hypothesis is, and you also know that daddy-long-legs are not poisonous.

Lecture 9. A summary of scientific methods Realism and Anti-realism

A Quranic Quote Verification Algorithm for Verses Authentication

Six Sigma Prof. Dr. T. P. Bagchi Department of Management Indian Institute of Technology, Kharagpur. Lecture No. # 18 Acceptance Sampling

Grade 6 correlated to Illinois Learning Standards for Mathematics

The Only Perception Process

Laboratory Exercise Saratoga Springs Temple Site Locator

Parish of Christ the King

Ms. Shruti Aggarwal Assistant Professor S.G.G.S.W.U. Fatehgarh Sahib

How to Write A Seminar Paper. Part II: Writing Strategies. A Yale Graduate Writing Center Workshop Series

FamilySearch / FamilyTree Lesson #7 Submitting Names for Temple Ordinances

Our Life Group Where is God Taking Us? Week 6 October 14, 2018

Device Agnostic: Why You Need to Transform Now

think that people are generally moral relativists. I will argue that people really do believe in moral

Application for curing ailments through mudra science

UML. Saman A. Barakat.

The Fixed Hebrew Calendar

AUTOMATION. Presents DALI

He was told to send us his data and he did send something, but I do not believe that there is anything there about the aggregations. I may be wrong.

Carolina Bachenheimer-Schaefer, Thorsten Reibel, Jürgen Schilder & Ilija Zivadinovic Global Application and Solution Team

ECE 5424: Introduction to Machine Learning

Artificial Intelligence Prof. Deepak Khemani Department of Computer Science and Engineering Indian Institute of Technology, Madras

INTRODUCTION TO HYPOTHESIS TESTING. Unit 4A - Statistical Inference Part 1

Evaluation of potential mergers of the Provo-Orem MSA and the Ogden-Clearfield MSA with the Salt Lake City MSA

Introduction. Selim Aksoy. Bilkent University

6.041SC Probabilistic Systems Analysis and Applied Probability, Fall 2013 Transcript Lecture 21

Computational Learning Theory: Agnostic Learning

Let us begin by first locating our fields in relation to other fields that study ethics. Consider the following taxonomy: Kinds of ethical inquiries

Youth Bible Drill. They lift their Bibles to waist high; one hand supports it while the other rests on top.

6.080 / Great Ideas in Theoretical Computer Science Spring 2008

Agnostic KWIK learning and efficient approximate reinforcement learning

Argument Harvesting Using Chatbots

Who wrote the Letter to the Hebrews? Data mining for detection of text authorship

An Easy Retail Management System

November Frank W. Nelte A CALENDAR FOR THE CHURCH OF GOD TODAY

Outline of today s lecture

Computing Machinery and Intelligence. The Imitation Game. Criticisms of the Game. The Imitation Game. Machines Concerned in the Game

H V Jagadish Speaks Out on PVLDB, CoRR and Data-driven Research

Introduction to the Make Jesus Culture Conference

Introduction. Selim Aksoy. Bilkent University

The UPV at 2007

Quorum Website Terms of Use

Radiomics for Disease Characterization: An Outcome Prediction in Cancer Patients

Order-Planning Neural Text Generation from Structured Data

I. Plato s Republic. II. Descartes Meditations. The Criterion of Clarity and Distinctness and the Existence of God (Third Meditation)

This report is organized in four sections. The first section discusses the sample design. The next

HOW TO WRITE AN NDES POLICY MODULE

ERKAMETER E INNOVATION MEETS DESIGN

Hey everybody. Please feel free to sit at the table, if you want. We have lots of seats. And we ll get started in just a few minutes.

August Parish Life Survey. Saint Benedict Parish Johnstown, Pennsylvania

RELIGIOUS EDUCATION IN THE EARLY YEARS ~ PRE-PRIMARY TO YEAR THREE

COS 226 Algorithms and Data Structures Fall Midterm

ANGELS SPECIALIST SCHOOL INTERNATIONAL SCHEME OF WORK FOR MATHEMATICS (TERM 2) GRADE 3

Identifying Anaphoric and Non- Anaphoric Noun Phrases to Improve Coreference Resolution

Position Description. Minister of Student and Family Ministries. VISION STATEMENT Discipleship Evangelism Service

Anaphora Resolution in Biomedical Literature: A

Reference Resolution. Regina Barzilay. February 23, 2004

Reference Resolution. Announcements. Last Time. 3/3 first part of the projects Example topics

correlated to the Massachussetts Learning Standards for Geometry C14

Prioritizing Issues in Islamic Economics and Finance

The Power of Attraction & Manifestation: The Secret.

HARRY JEROME BUSINESS AWARD ACCEPTANCE SPEECH CARLTON BRAITHWAITE TORONTO, MARCH FULFILLING THE DREAM

Executive Summary. Each table discussion included five questions.

This document is an example only. Do not take anything from this and present it as your own if you do so your application will be disqualified.

The American Society of Dowsers 4, 3, 2, 1... Of Dowsing.

Torah Code Cluster Probabilities

Transcription:

Gesture recognition with Kinect Joakim Larsson

Outline Task description Kinect description AdaBoost Building a database Evaluation

Task Description The task was to implement gesture detection for some gestures using a Kinect sensor. The gesture chosen was if the user was pointing in a direction.

Kinect Kinect is a motion sensing input device. It records the distance between the sensor and any objects in its way as a point cloud. From these points there exists software to extract a human body from the point cloud live.

Kinect

Kinect

First solution The first solution used was to extract the joints and determine if the hand-, wrist-, elbow-joints position for both arms was close to forming a line. In such a scenario the user would be considered to be pointing. This solution required the user to hold their arms VERY straight however.

The method eventually chosen uses the meta algorithm AdaBoost.

AdaBoost AdaBoost stands for Adaptive boosting. It won the Gödel Prize in 2003. It s an algorithm with which a machine can be taught what classifiers are significant when determining whether a discrete event has occurred or not.

AdaBoost example Imagine we wish to classify a four number string on an unknown criterion. The only thing we know of the criterion is the information we can gather from a set of training examples.

AdaBoost Example STRING CLASS 0001 FALSE 0012 FALSE 0415 FALSE 0881 FALSE 0888 TRUE 1234 FALSE 1235 FALSE 1299 TRUE 1515 FALSE 1559 FALSE 7654 TRUE 7771 TRUE 7777 TRUE 7779 TRUE 7780 TRUE 8337 TRUE 8502 FALSE 9001 FALSE 9039 TRUE 9999 TRUE In order to classify the training set some simple classifiers are needed. In this example case the classifiers are of two natures: Treating the strings as integers and asking whether they are above or below a certain threshold value. Counting how many of the integers in the string that are of a certain type.

AdaBoost Example STRING CLASS >7650 0001 FALSE FALSE 0012 FALSE FALSE 0415 FALSE FALSE 0881 FALSE FALSE 0888 TRUE FALSE 1234 FALSE FALSE 1235 FALSE FALSE 1299 TRUE FALSE 1515 FALSE FALSE 1559 FALSE FALSE 7654 TRUE TRUE 7771 TRUE TRUE 7777 TRUE TRUE 7779 TRUE TRUE 7780 TRUE TRUE 8337 TRUE TRUE 8502 FALSE TRUE 9001 FALSE TRUE 9039 TRUE TRUE 9999 TRUE TRUE Examination shows that in this example 7650 is the best threshold value.

AdaBoost Example STRING CLASS >7650 CORRECT 0001 FALSE FALSE TRUE 0012 FALSE FALSE TRUE 0415 FALSE FALSE TRUE 0881 FALSE FALSE TRUE 0888 TRUE FALSE FALSE 1234 FALSE FALSE TRUE 1235 FALSE FALSE TRUE 1299 TRUE FALSE FALSE 1515 FALSE FALSE TRUE 1559 FALSE FALSE TRUE 7654 TRUE TRUE TRUE 7771 TRUE TRUE TRUE 7777 TRUE TRUE TRUE 7779 TRUE TRUE TRUE 7780 TRUE TRUE TRUE 8337 TRUE TRUE TRUE 8502 FALSE TRUE FALSE 9001 FALSE TRUE FALSE 9039 TRUE TRUE TRUE TRUE 9999 TRUE TRUE TRUE TRUE TRUE 0,8 0,2 Examination shows that in this example 7650 is the best threshold value. This labels 80 % of the examples correctly.

AdaBoost Example STRING CLASS >7650 CORRECT #0>0 CORRECT 0001 FALSE FALSE TRUE TRUE FALSE 0012 FALSE FALSE TRUE TRUE FALSE 0415 FALSE FALSE TRUE TRUE FALSE 0881 FALSE FALSE TRUE TRUE FALSE 0888 TRUE FALSE FALSE TRUE TRUE 1234 FALSE FALSE TRUE FALSE TRUE 1235 FALSE FALSE TRUE FALSE TRUE 1299 TRUE FALSE FALSE FALSE FALSE 1515 FALSE FALSE TRUE FALSE TRUE 1559 FALSE FALSE TRUE FALSE TRUE 7654 TRUE TRUE TRUE FALSE FALSE 7771 TRUE TRUE TRUE FALSE FALSE 7777 TRUE TRUE TRUE FALSE FALSE 7779 TRUE TRUE TRUE FALSE FALSE 7780 TRUE TRUE TRUE TRUE TRUE 8337 TRUE TRUE TRUE FALSE FALSE 8502 FALSE TRUE FALSE TRUE FALSE 9001 FALSE TRUE FALSE TRUE FALSE 9039 TRUE TRUE TRUE TRUE TRUE 9999 TRUE TRUE TRUE FALSE FALSE 0,8 0,35 0,2 0,65 The next criterion would be to see how many zeroes are in the string. After that ones. And so on.

AdaBoost Example STRING CLASS Weight >7650 CORRECT #0>0 CORRECT #0>1 CORRECT #1>0 CORRECT 0001 FALSE 0,05 FALSE TRUE TRUE FALSE TRUE FALSE TRUE FALSE 0012 FALSE 0,05 FALSE TRUE TRUE FALSE TRUE FALSE TRUE FALSE 0415 FALSE 0,05 FALSE TRUE TRUE FALSE FALSE TRUE TRUE FALSE 0881 FALSE 0,05 FALSE TRUE TRUE FALSE FALSE TRUE TRUE FALSE 0888 TRUE 0,05 FALSE FALSE TRUE TRUE FALSE FALSE FALSE FALSE 1234 FALSE 0,05 FALSE TRUE FALSE TRUE FALSE TRUE TRUE FALSE 1235 FALSE 0,05 FALSE TRUE FALSE TRUE FALSE TRUE TRUE FALSE 1299 TRUE 0,05 FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE 1515 FALSE 0,05 FALSE TRUE FALSE TRUE FALSE TRUE TRUE FALSE 1559 FALSE 0,05 FALSE TRUE FALSE TRUE FALSE TRUE TRUE FALSE 7654 TRUE 0,05 TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE 7771 TRUE 0,05 TRUE TRUE FALSE FALSE FALSE FALSE TRUE TRUE 7777 TRUE 0,05 TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE 7779 TRUE 0,05 TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE 7780 TRUE 0,05 TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE 8337 TRUE 0,05 TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE 8502 FALSE 0,05 TRUE FALSE TRUE FALSE FALSE TRUE FALSE TRUE 9001 FALSE 0,05 TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE 9039 TRUE 0,05 TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE 9999 TRUE 0,05 TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE 1 0,8 0,35 0,35 0,15 0,2 0,65 0,65 0,85

AdaBoost Example The classifier that give the smallest error, i.e. the one that for the training set returns the correct classification most often is chosen as our primary classifier.

AdaBoost Example STRING CLASS Weight >7650 CORRECT #0>0 CORRECT #0>1 CORRECT #1>0 CORRECT 0001 FALSE 0,05 FALSE TRUE TRUE FALSE TRUE FALSE TRUE FALSE 0012 FALSE 0,05 FALSE TRUE TRUE FALSE TRUE FALSE TRUE FALSE 0415 FALSE 0,05 FALSE TRUE TRUE FALSE FALSE TRUE TRUE FALSE 0881 FALSE 0,05 FALSE TRUE TRUE FALSE FALSE TRUE TRUE FALSE 0888 TRUE 0,05 FALSE FALSE TRUE TRUE FALSE FALSE FALSE FALSE 1234 FALSE 0,05 FALSE TRUE FALSE TRUE FALSE TRUE TRUE FALSE 1235 FALSE 0,05 FALSE TRUE FALSE TRUE FALSE TRUE TRUE FALSE 1299 TRUE 0,05 FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE 1515 FALSE 0,05 FALSE TRUE FALSE TRUE FALSE TRUE TRUE FALSE 1559 FALSE 0,05 FALSE TRUE FALSE TRUE FALSE TRUE TRUE FALSE 7654 TRUE 0,05 TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE 7771 TRUE 0,05 TRUE TRUE FALSE FALSE FALSE FALSE TRUE TRUE 7777 TRUE 0,05 TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE 7779 TRUE 0,05 TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE 7780 TRUE 0,05 TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE 8337 TRUE 0,05 TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE 8502 FALSE 0,05 TRUE FALSE TRUE FALSE FALSE TRUE FALSE TRUE 9001 FALSE 0,05 TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE 9039 TRUE 0,05 TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE 9999 TRUE 0,05 TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE 1 0,8 0,35 0,35 0,15 0,2 0,65 0,65 0,85 In the example using #1= 0 as a classifier nets 3/20 incorrect labelings.

AdaBoost Example In order to determine how well the classifier worked we assign it an α-value dependent on its error rate. α " = $ % & ln $)* + * +

AdaBoost Example We now want to find additional classifiers Since our current classifier classifies some examples quite well, but others not so much we want our next classifier to primarily classify those incorrectly labeled correctly. The relative weight of the different examples are thus multiplied by e α if the classifier classified incorrectly and e α otherwise.

AdaBoost Example STRING CLASS Weight 0001 FALSE 0,015 0012 FALSE 0,015 0415 FALSE 0,015 0881 FALSE 0,015 0888 TRUE 0,015 1234 FALSE 0,015 1235 FALSE 0,015 1299 TRUE 0,085 1515 FALSE 0,015 1559 FALSE 0,015 7654 TRUE 0,015 7771 TRUE 0,085 7777 TRUE 0,015 7779 TRUE 0,015 7780 TRUE 0,015 8337 TRUE 0,015 8502 FALSE 0,085 9001 FALSE 0,015 9039 TRUE 0,015 9999 TRUE 0,015

AdaBoost Example We then continue by picking out the criterion that minimizes the weighted errors. Afterwards, we calculate the corresponding α- value, and calculate the new weights for our training set. Afterwards, the best weighted criterion is calculated. This continues until we have a sufficiently good combined classifier.

AdaBoost Example STRING CLASS Weight >1240 CORRECT #0>0 CORRECT #0>1 CORRECT 0001 FALSE 0,015 FALSE TRUE TRUE FALSE TRUE FALSE 0012 FALSE 0,015 FALSE TRUE TRUE FALSE TRUE FALSE 0415 FALSE 0,015 FALSE TRUE TRUE FALSE FALSE TRUE 0881 FALSE 0,015 FALSE TRUE TRUE FALSE FALSE TRUE 0888 TRUE 0,015 FALSE FALSE TRUE TRUE FALSE FALSE 1234 FALSE 0,015 FALSE TRUE FALSE TRUE FALSE TRUE 1235 FALSE 0,015 FALSE TRUE FALSE TRUE FALSE TRUE 1299 TRUE 0,085 TRUE TRUE FALSE FALSE FALSE FALSE 1515 FALSE 0,015 TRUE FALSE FALSE TRUE FALSE TRUE 1559 FALSE 0,015 TRUE FALSE FALSE TRUE FALSE TRUE 7654 TRUE 0,015 TRUE TRUE FALSE FALSE FALSE FALSE 7771 TRUE 0,085 TRUE TRUE FALSE FALSE FALSE FALSE 7777 TRUE 0,015 TRUE TRUE FALSE FALSE FALSE FALSE 7779 TRUE 0,015 TRUE TRUE FALSE FALSE FALSE FALSE 7780 TRUE 0,015 TRUE TRUE TRUE TRUE FALSE FALSE 8337 TRUE 0,015 TRUE TRUE FALSE FALSE FALSE FALSE 8502 FALSE 0,085 TRUE FALSE TRUE FALSE FALSE TRUE 9001 FALSE 0,015 TRUE FALSE TRUE FALSE TRUE FALSE 9039 TRUE 0,015 TRUE TRUE TRUE TRUE FALSE FALSE 9999 TRUE 0,015 TRUE TRUE FALSE FALSE FALSE FALSE 1 0,715686 0,205882 0,343137 0,284314 0,794118 0,656863 In the example using #0> 0 as a classifier nets a better weighted value, despite the numerical thresholding correctly classifying more examples.

AdaBoost Example The final classifier for examples x outside the training set is then given by the sign of: 0 234 0 α 0 & h 0 x where h 0 x is the k:th classifier returning +1 for passing classification and -1 otherwise.

AdaBoost with Kinect This is the algorithm that is in use in the gesture detection software that comes with the Kinect SDK. While the example used strings of integers, the Kinect SDK uses the reconstructed skeleton from the point cloud as training data. From this it extracts features, such as angles, difference in position, speed, etc.

Using the Kinect SDK The Kinect SDK comes with a wealth of software to create a database. First is Kinect Studio, with which one can capture footage from the Kinect. Second is Visual Gesture Builder, with which one can train a classifier. Third is Visual Gesture Builder Viewer, with which one can verify how well the classifier works.

Kinect Studio

Kinect Studio

Visual Gesture Builder In the builder each captured frame of footage is considered one example in the training set. These frames are then tagged as fulfilling/not fulfilling the criterion. The Builder is then used to build a database, i.e. determine what classifiers best determine whether a gesture is active or not.

Visual Gesture Builder Viewer

Visual Gesture Builder

Visual Gesture Builder Viewer The Visual Gesture Builder Viewer is then used to examine how well the database classifies gestures.

Approach to the problem The approach used was thus: Capture footage with Kinect Studio where the gestures were performed. Tag the frames of the footage during which the gestures were performed. Let the Gesture Builder extract the appropriate features and build a database using AdaBoost. Evaluate its accuracy with the Gesture Builder Viewer. Repeat until the end of term.

Approach The gesture to be captured was if the user is pointing in one of the four directions Up, Down, Left or Right. Additionally there was one generic gesture just for pointing. The first clip was of me pointing straight in these directions six times, three per hand.

Features after first clip After the first clip, the #1 features discovered in each direction was: Up: Angles( WristLeft, Head, WristRight)>=180 Down: Angles(ThumbRight, HandRight, WristRight)>=130 Left: MuscleTorqueZ(SpineShoulder)>=2 Right: Angles(Head, ShoulderRight, SpineBase)<126 I continued adding clips in this fashion, so that the features used would be more correctly used.

At this point I discovered that it was physically exhausting to stand in the positions the classifier demanded. I therefore went back through the already tagged clips to extend the time the arm would be considered pointing.

In the above up pointing movement, the middle ones used to be the start and finish of the frames tagged pointstraightup.

This continued until the term ended. In the final form there are two databases. One which has been trained to regard a closed fist as not pointing. One which has not. This is due to Kinect s inbuilt handstate being quite uncertain when testing it online.

Evaluation The final database is, according to my personal evaluations, quite accurate in realizing that the user is pointing and in what direction. It is less certain in some directions. In the database that is supposed to ignore a closed fist the database often fail with that very task, so further training would be necessary. How successful the database is can vary.

Point down

Point down

Point left

Point left

Point right

Point right

Point up

Point up

Double pointing

Finger down