I collected my final year project result today. The project was based on the reading and recognition of roadsigns, for those of you who have forgotten (apologies for the lack of updates on the roadsigns blog).

I’m pleased to announce that I got a grade of 71 which equates to a first.

Obviously I’m very pleased with this result and it really has made the hard work worthwhile. It was far from a trivial project and presented some interesting challenges and learning experiences, but I feel the work will stand me in good stead for the future.

All this means that I’m now a mere two weeks away from getting my final degree grade and completing my time as a student of Leeds University School of Computing. Time certainly does fly.

It was Nick’s last lecture, it was the last SY32 lecture, it was our last lecture. We had to do something to make the event memorable and fun. We plotted and schemed a little bit and decided that we would Rickroll Nick during the lecture. Chris and I arrived 30 minutes early and setup a laptop computer and speakers under the lectern and concealed them with an old poster we found lying about. We had previously configured a scheduled task on the laptop that we configured to play “Never Going to Give You Up” at half past the hour.

Once everything was setup and the lecture theatre once again appeared normal we left, went to grabbed a coffee for 10 minutes and then came to the lecture like normal. Everything was going as it always does and then blam, 30 minutes in, the song started playing. Stunned silence for all of about 2 seconds, then a surprised look from Nick and hugh peals of laughter from the audience. It was priceless.

I would like to take this opportunity to thank Nick for being a great lecturer and personal tutor throughout my time at the School of Computing and say that quite simply, life wouldn’t have been the same in the school without him. He will doubtless be greatly missed by all students who are staying on.

Nick wrote about what it was like to be Rickrolled on his blog

Well well, there was me thinking that my first set of exams that count towards the degree just couldn’t have gone better. My utmost effort went into 4 out of 5 modules (excluding People in Organisations unfortunately) that I actually enjoyed and found very interesting. I was rather surprised on results day to find that I was left sitting in a low end 2.1 having scored 59 and 57 in AI22 and DB21 respectively. I think it was natural for me to react with disappointment and to be very downhearted on the day, but after sleep I could see nothing but a valuable lesson coming out of my experience.

In a way this is very frustrating because I do not think the grades represent my ability or work ethic, yet now I realise just too much time was spent on coursework and not enough on time is spent reading around the module throughout the semester. In some cases this probably wouldn’t help and this is where most of my frustration comes from not having learnt that some exams require a thorough understanding of the module where as some are based on a generic set of past papers.

I could keep writing for a long time to express my argument about what I think of closed book exams and why I think I scored how I did. It would probably turn into a frustrated rant.

So no time to waste - I’ve changed my view on how I approach my study and manage my time. I wish we were given more than just 3 days (which was spent drunk, admittedly) to take the semester into consideration. Semester 2 certainly was slow to get started and that wonderful coursework rush is coming round again.

At least I am happy with the modules I have picked again this semester.

I’m more than ready to effect change and bump up that average.

After my last supervisor meeting on Monday, Karim has asked for a working script so that we can move on to brainstorming scenarios for the experiments.

As I have mentioned before, the Mobiwan enabled ns-2 has certain problems. I’ve installed ns-2.26 and ns-2.27, both of which have been enabled for use with Mobiwan. These problems are:

  1. Lack of documentation: Thierry Ernst, the author of the Mobiwan code has provided documentation for ns-2.1b6. However, this was written in 2001 and appears to not exactly match up to the workings of ns-2.26.
  2. Lack of validation or example scripts: When Ernst produced the original Mobiwan, he included some scripts for the creation and management of topologies and also the validation of the installation. None of this has been provided for ns-2.26 or ns-2.27 with the added difficulty of scripts written for ns-2.1b6 not being compatible with ns-2.26 or ns-2.27.
  3. Lack of support: Thierry Ernst himself has said that all emails regarding Mobiwan will be politefully ignored. Furthermore, the ns mailing lists contains queries regarding the installation and creation of scripts for Mobiwan enabled ns, but most have no replies or follow-ups and all represent dead ends. In fact, it appears that the last known usage of Mobiwan from a Google point of view is about 2005.
  4. Age of the source code: This has been one of my biggest problems, resulting in my installing an older version of gcc and g++. The most recent version of Mobiwan was released in December 2004 so my confidence in Mobiwan wasn’t the best to being with! Just as a side, the Mobiwan patch for ns-2.27 hadn’t been tested according to Ernst so I don’t think using that version is a good idea.
  5. Limitations of the software: Mobiwan is missing some elements of the Mobile IPv6 protocols. It seems that not including elements that are not necessary for your simulations is a common occurence. Ernst himself even goes on to say that the software was designed for his purposes only and for anything else, you’re on your own. For example, my project was hoping to assess scalability with regards to numbers of nodes, including mobile nodes, but having multiple mobile nodes has not been implemented in Mobiwan.

With this in mind, I’m concerned that I’m not going to be able to deliver anything to my supervisor come Tuesday’s meeting. Using ns is very straight forward as the ns tutorial demonstrates, however Mobiwan seems to have changed the way ns works at some fundamental level. As a result, some elements exhibit different behaviour, i.e. throwing a TCL exception, with Mobiwan, and so it feels like I’m having to learn the software all over again. This is difficult given my TCL knowledge is very limited.

It is my intention now to go home and put these problems out of my mind for the evening. Hopefully, with a fresh head, I can make more progress tomorrow. But I am mindful of the fact that I have three other modules to work on this semester and are also important if I am to get a good degree.

If I still have no success, then I will have to discuss a contingency plan with my supervisor so that I can still meet my minimum requirements.

Since coming back to university after the Christmas break and completing my January exams I’ve had plenty of time to continue my experimentation on the reading roadsigns project and thought I’d post a quick update on whats been going on.

Recently I’ve been running a number of experiments in Matlab using SIFT and attempting to get various roadsigns recognised by using a cropped training set for a particular sign and then matching it against keypoint descriptors found in a test image.

I’ve been gathering statistical data and dumping this out to a file for analysis and further work but I’ve also been generating match images for each roadsign tested against the most favorable image from the training set. To give people an idea with how this is progressing I include an example of a very successful result on a STOP sign below.

Good Result

Its not all rosy though and I’ve been given food for thought after my interim report and some failures of the SIFT algorithm in recognising certian signs.

In my initial experimentation with actual roadsigns I decided to go for a simple sign as this would be less likely to be susceptable to noise. This was in fact quite an unwise decision as SIFT works by finding particularly unique points and I had effectively removed the possiblity of it finding such points by using a simple sign. I include below a matches image for a No Entry sign.

No Entry Sign Result

As you can see, its actually quite noisy. This is a problem which got me thinking about how I can make the whole process more robust and forced me to return to some of my early research on object recognition.

If I can use SIFT as a pre-processor then I can identify signs quickly and easily that have many descriptors such as STOP signs and then use a more basic system such a a template or colour match to identify the simpler signs such as the No Entry sign. I could also do it the other way around and will need to perform tests to decide what the best order is.

I’m currently working on an idea that SIFT could be used to detect the presence of any sign (not which one it is, but where it is) and then further tests could perform the recognition. In addition I’m researching examples of where SIFT has been modified to be used in colour and also how best to display experimental results. I’m also in the process of writing code to fully automate my training and testing process in Matlab so I should be able to run batch jobs and get results and test theories quicker.

Watch this space for more updates - its all go!

It has been a while so it’s about time I wrote about what’s been going on recently.  Firstly, I managed to get ns-2.26 installed on my laptop which I was subsequently able to get patched with MOBIWAN.  For those of you hoping to do the same, I noted the following:

  1. ns-2.26 needed to be compiled using an older version of gcc and g++ as the current version was too strict a compiler on the ns source code.
  2. I had to amend the headings of the install and configure scripts from #!/bin/sh to #!/bin/bash

So far, so good.  Now the problem is that I only have the one script to go on for understanding how ns works with MOBIWAN which is the simple-mipv6.tcl file which I downloaded from the MOBIWAN 2.26/2.27 website.

I also need to find a way for analysing the data.  So far two options are presenting themselves:

  1. Use a program called TraceGraph which works with Matlab.  Unfortunately the output trace file is not compatible as is, and so needs to be converted which is proving difficult.  I’ve searched the web trying to find some details on how to convert the file and there is information there, but trying to get it to work is proving difficult.
  2. Use a perl or awk script to analyse the trace files.  I’ve yet to explore this avenue which is something I plan to do next.

Which brings me on to my next point - the trace files themselves.  I ran the simple-mipv6.tcl script and it outputs a ~20,000 line text file of events.  Using the ns documentation and other information online, I’ve deciphered several entries.  However, it still is proving to be tricky understand what is going on when you’re seeing the simulation in a small event-by-event way.

Either I’m not clever enough or I need to get some concise information.  That said it’s hard to sort the wheat from the chaff when you’re not so sure what is going on!

In other news, I’ve managed to consult with a fellow student and we’re hoping to be able to assist each other with the data analysis.  Colin is doing a visualisation project and I’m hoping to provide him with useful data.

That’s all for now, but I’m hoping to make some more progress tomorrow.

CompSoc is soon to host a brewery tour for its members and others within the school of computing. We believe this event is going to take place on Thursday 7th February so keep the evening of that date free in your diaries. The idea will be to get a tour of the Elland Brewery and then a taste of a variety of beers afterwards.

Upon our return to campus those who wish to do so can join us on a trip to a local real ale pub to taste the end result of the brewer’s hard work. Be sure to join in with this if you like real ale!

If it’s not one it’s the other at the moment- so much for the ‘holiday season’.

After the most difficult semester so far it continues to get more difficult as exams that actually count are now looming. It will interest me to see some peoples performance in the exams as I don’t think the coursework is a true representation of anyones ability. So much collaboration occurred on so much of the coursework. It also surprised me to have students in the same year that a week before the se20 programming coursework deadline still don’t understand the concept of the constructor- yet they had to understand Swing and database programming by the end of the week. The best thing is that this person will probably score a first- once again due to collaboration.

Good luck and happy revision. I’m sure those of us that do work will create their own luck anyway.


As I was browsing my news feeds this morning I stumbled accross a blog post that someone had linked to. Its a rather amusing article about which programming language gets you the most sex. If you’re a programmer I’m sure this will make you chuckle.

Next Page »