Archive for the ‘Dissertation’ Category

Long time no blog

Posted: May 5, 2012 in Dissertation

Hello. I am risen. Or, as Jesus put it (Matthew 26:32), “I’m back from the dead, douchebags! Now, someone get me a beer.”

Excuse the frankness of what follows. I have seen and experienced things in the past three years that give me the right to be candid.

I handed in my dissertation about a month ago, three weeks early. Most of my study peers were either extremely panicked around hand-in time or have been granted an extension (some generously, others deservedly), so my extraordinary level of organisation (and believe me, my being organised is extraordinary) must have irked some people. Eat it, dudes. I’ve been living, breathing and sleeping this assignment for over a year. If you only started thinking about yours in January and writing it in March then that’s your own bad decision. Live with it. If “something happened and I was unable to do the work”, why do you think I started so early? Having had three months taken from me last year due to illness I know that shit happens, and I was not prepared to let circumstance rob me of my thesis.

Now all I can do it wait for my grade. What should I get? Were it based purely on effort, 90%. Quality…I have no idea. Ok, so I do have some idea. I really can’t get less than 60% unless something preposterous happens. Anything over 47% keeps me above the distinction level average overall, but honestly I’d be gutted if my assignment isn’t solidly over 70%. No, honestly, I want 80%, but I don’t have enough experience or reference material to gauge the quality of my work. I’m not quite blind, but definitely squinting.

As in most walks of life, the law of diminishing returns is strong in university assessment. I could have farted out some mind-puke in just a couple of weeks and still got a pass, but rarely in my experience does going the extra mile yield the extra marks, relatively. 3-5% is up for grabs, perhaps, but 50% (or 100%, or 400%…) extra effort for an extra 5% doesn’t match up.

Anyway, it’s not all about the grade. I’ve learned so much during my studies that what mark I get is almost irrelevant. I’ve absolutely busted my balls, working until silly o’clock on obscure technologies or theories that I may never use again, but as before, this isn’t really the point. The point is that I’ve learned to apply myself with a level of rigour that I never thought I would have. Frankly (see my opening disclaimer about the frankness of this post) I’ve always been able to get by on my natural abilities. I learn quickly and bluff well. You can’t do that in a Masters, so I had to put my ego and natural duck-and-dive propensity to one side and – get this – study.

And I enjoyed it. And hated it. But mainly enjoyed it. If someone were to offer me the opportunity to study for a PhD and circumstances were such that I could maintain the standard of living that my family deserves then I’d do it.

What next for me? I’m going to play computer games and not feel guilty for it. I’m doing three years’ worth of DIY. I’m reading novels again. I’m trying to start up a band – I need some keys and a drummer, at least, to join me in a funk-soul adventure. I already have a name for the band, but of course I can’t tell you when currently it’s only me playing along to Red Hot Chili Peppers tracks on my bass in my garage. I’m going to start running again. I should never have stopped doing this. I may write, but right now this feels too similar to work/study for it to be enjoyable. But mainly I’m going to enjoy having some space to spare in my tiny man-brain.

Sorry I’ve been absent from here for a while, and thanks to those who’ve followed and supported me through this. I’ve blogged for years and it always follows the same pattern for me: blog a lot, then a little, then not at all, then a lot again. I’ll be more frequent from now on, I promise, but I’ll be talking about different things than previously. Or, as Jesus put it (somewhere near the back of the Bible, I believe), “God is dead! Long live God!”.

Likert scale survey results. Presenting your findings is always tricky. In my example the children I taught filled in forms with question that are statements about which they can strongly agree, agree, be netural, disagree or strongly disagree. So ordinal options, the 5-point Likert scale.

I need to provide an overview of the results. I’m thinking of a stacked bar like this:

(Click to embiggenatte.)

Trouble is there are many good reasons why analysis of ordinal data like this is a bad thing. Furthermore I’ve taken some lierties myself.

1) Interval data (e.g. an absolute measures of, say, temperature over time) can be plotted like this. Ordinal data is arbitrary. E.g. who is to say that Person A’s “strongly agree” is the same as Person B’s strongly agree? Therefore mapping their results together is flawed.

2) The same is true between questions answered by the same person. Statement 1 might be “strongly agree” as might Statement 2, but is it the same strength of feeling? What if Statement 1 was “Murder is bad” and Statement 2 is “Mars Bars taste nice”. I strongly agree with both, but the strength of feeling is obviously different.

3) Similar issues exist between all the options in a single question. E.g. is the gap between “agree” and “strongly agree” the same as between “neutral” and “agree”?

4) I’ve taken the liberty of opposing the “positive” and “negative” responses so as to give instant visual feedback on how the responses balance each other.

5) I’ve also taken the liberty of equally distributing “neutral” responses across the +ve and -ve axis. A bit naughty. I could ‘zero’ the neutral responses, but then they drop off the chart completely. But doing this would lead to a fairer comparison between the explicitly +ve and -ve responses.

Having said all this, the stacked bar gives a good overall representation of the survey results.

I could present the combined data as clustered bars. This lessens the cross-question and inter-question-answers comparison inference, but it’s basically the same data. Like this:

(Click for enlargification.)

Question is: is this misleading and/or can you think of any other way I could present the data?

Development: complete!

I’ve been quiet for the past few weeks because I’ve been frantically fising those last-minute bugs that one invariably finds in a development project like this. But it was all worth it because I spent three days this week using my software to teach 9 and 10 year olds about astronomy.

Shirley Community Nursery & Primary School in Cambridge were kind enough to let me teach a few lessons. I had an excellent time at Shirley. The students and staff were all very helpful, friendly and enthusiastic. This made my job both pleasant and easier!

The sessions were well received by the children. It got a few ‘oohs’, ‘aahs’ and ‘awesomes’, so the biggest challenge – which was to engage the children in the activity – was met. I’m studying a computing degree, so my main focus is to assess the technical implementation of my work. This naturally means ‘did it work?’, but there is no point in producing something that is technically proficient unless it achieves its purpose well. In this case the purpose was to impart learning, and feedback indicates that this aim was met well too.

I asked the children to complete a Likert-scale survey after the intervention. The ‘enjoyment factor’ shown in the results is very positive. Similarly the children say that they learned about astronomy because of the lesson. Good news! Some of the discursive feedback was really helpful and very insightful too. Commments such as “I think the kinect should be able to track which person is controlling it so it doesn’t get confused’ and ‘the information text should also be read out by the computer so that blind people can hear it’ show a depth of thought that I perhaps foolishly wasn’t expecting.

Technically, the software worked well. I included three different control types:┬ádeictic gestures (pointing and hovering to control a cursor), symbolic gestures (rotate, zoom, pan) and voice commands. Probably the most highly developed and accurate method (from a technical perspective) is my deictic control method. This is highly tuned, highly developed and ‘just works’. Interestingly, the children pretty much ignored this control method. For them it was just an expected behaviour, requiring very little to understand and use proficiently.

My symbolic control method was arguably the least successful technically. The success rate of recognising gestures was around 60% (as compared with around 95% for the deictic method). The children commented on this, were occasionally frustrated and had a long list of ideas to improve it. Great!

And finally the voice control method was very popular. Of the three, it was voice controls that prompted the most ‘wow’s, and the children really enjoyed shouting at the computer to make it work. It technically performed well. I told Kinect to listen only to audio coming from an angle of 0 radians and also to suppress background noise and echoes. It did a sterling job of listening only to the audio we wanted it to, ignoring the noise. Microsoft’s Speech Recognition Engine could do with being a little faster, but overall this part of my project was remarkably stable.

I hope to run these sessions in another school in January, so it will be interesting to see if I get similar results. In the mean time I have enough information to begin writing up my findings. Here’s hoping I can articulate what I’ve done in such a way as to yield marks. I fear a discrepancy between the amount of effort I’ve put into this and the nature of the marking scheme which will define my overall grade.

This evening I release a short video of a WPF User Control I made. It’s a little plug-and-play component for the Kinect SDK (beta 2…probably works in beta 1 too) to emulate the touch and hold style pointer system used in so many Kinect applications.

I will tidy this up in the coming days and release it to the community. It’s rather simple and I’ve seen various implementations of this elsewhere on the internet, but none of them have been released formally. If I can help someone out with this then great!

Aside, I was stunned to see this get 150 hits in about two minutes. I was equally stunned to see the counter immediately reset to zero and it hasn’t counted up since. Of course, I’m inclined to believe the more flattering score. Naturally :)

…and shooting some Bieber outside of the school. The cops caught me, and this explains my recent absence from the world of blogging.

Actually, I took a little break because my inspiration had just about dried up. Working 70-hour weeks for three years does that to ya.

But I’m back, and I’ll keep posting about cool stuff that I make and do. Here’s one such thing:

This shows a comparison between two normalised sequences. The straighter and more diagonal the line, the closer the match. Dotted lines show periodic samples of time warping (note irregular spacing shows that warping has occurred in one direction or another). The difficulty here is making this understandable to a broad audience.

And another:

Here’s another sequence comparison, visualised differently. This time the graphs are overlaid (albeit offset) and time warping events are shown by the orange dots. If you can imagine a perfect match between two sequences, there would be no time warping and thus the orange lines would all be vertical. Add the overall ‘lengths’ of the orange lines and you get the 100% match ‘cost’. Now consider the above graph. The sum lengths of the orange lines indicate the ‘cost’ of the transformation. When comparing multiple queries against a single reference, the shortest ‘distance’ is the best match. Hey presto! Gesture recognition!

DTW graphing

Posted: September 4, 2011 in Dissertation, Kinect
Tags: , ,

I have made good progress in writing up some of the more mathematical aspects of my project. I’m having difficulty knowing at which level to pitch the work. I have to assume a reasonable mathematical understanding otherwise I’ll just burn up my word count describing simple principles. However, if I pitch it too highly then I could miss marks for not being explanatory enough. I’ll talk about this with my supervisor. After all, she’ll be marking the work, so it’s best to ask what she would like to see.

Needless to say, there will be lots of graphs. I’m trying to work out a good way of displaying multi-variate dataset comparisons on one graph. DTW works equally well with flat arrays or 2D arrays of data. This project uses 2D arrays because, firstly, we’re dealing with co-ordinates (i.e. data pairs, so I’m forces to use multi-variate data) but also because I’m tracking six joints, so I have 12 pieces of data per time frame.

I think I’ll show an aggregated view like this, but properly labelled. I’ll then extract a few individual columns and use a three-way plot of some description to show slopes, lines of least cost etc for several sequences (i.e. similar, dissimilar etc.).

It’s too late for this. The graph looks wrong somehow but I can’t see why. I’ll work it out tomorrow.

It’s three days since I somehow managed to get my KinectDTW project onto the SlashDot front page, and I’m still trying to get my head around the response. 220 release downloads and 60 grabbed the source from the repo. Ok, so far from Earth-shattering figures, but I think it shows healthy enthusiasm for what I’m trying to achieve here. That is to say I wanted to give people a tool to get them started with making their own Kinect-based gesture control systems.

I’ve had lots of feedback to, almost universally positive. And any detractors just don’t like Microsoft or the Kinect, nothing bad about the KinectDTW project itself. So the next challenge must be to become established in the community, rather than just a novelty factor. I’ve no idea how to do this, but I’ll work something out. A few well-placed links will be a good start, but then I will need to follow this up with improving the system, perhaps making it open-standards, and definitely by responding to feedback.

So if you’re yet to see it, check out It’s far from perfect, but that’s kind of the point: I’d love the community to pick this up and roll with it.