Posted by: technofutures | October 19, 2008

Cambridge Michaelmas Term – Week 1

Well, another week over… And sure enough as expected, the influx of ‘real’ work began as the craziness of the first week faded into memory…

I love my timetable this year. Not having any lectures on Mondays drastically changes the week… although this week I still had to go into the department for the first Staff-Student Joint Committee meeting of the year.

SSJC Meeting

The Staff-Student Joint Committee is the student representative body in the Engineering Department here in Cambridge. We covered a range of issues as usual such as the Undergraduate Book Sale and Project deadlines.

But… the most interesting issue for me was the announcement that we have finally managed to have Wi-Fi set up in the Engineering Department! After three years of asking, the ‘dream’ finally came true… A big thank you to the department’s computer officers for the time they must have spent over the Summer setting it up for us. We truly appreciate it. For all those interested in gaining access, follow the instructions here.


Having had a full week of lectures,  I now have a good idea which ones are going to be the hardest… Overall, I’m very happy with my choices:

Nanotechnology was very interesting this week, covering and expanding on some of the material we had done last year in Semiconductor Engineering (e.g. Schrödinger’s Equation, Wave packets, …). Particularly interesting were the examples given that related to Quantum Tunneling, or a probabilistic model for alpha-decay.

Photonics was also fun, and after so many years of vagueness, I finally understood diffraction gratings/holograms on Tuesday. With lots of visual examples and a good Maths/Understanding balance, this week was very good.

Control Systems continued being nice and easy this week as we review materials from the first three years e.g. Root-Locus, conformal Mappings and Nyquist diagrams. Friday’s lecture linked all of these together very neatly, culminating on the joys re-acquaintance with and old friend: the Nyquist Stability Criterion.

Technological Innovation was thoroughly enjoyable (despite it being 3 hours long…) in that the ‘lecture’ was given in a very different format to what we have become accustomed to here in Cambridge. In fact it was more of a workshop/discussion, with nice video intervals, following an interesting case-study this week: Innovation in the PC Industry. As this is one of my big interests, I really enjoyed it… and I was right, most of the material covered is essentially the same as what I spent my time at the patent office doing. I need to find a topic now for my coursework…

– Statistical Pattern Processing: Although I decided not to take this course for credit, I still figured it may be useful, especially for my project and so have decided to attend it anyway… It’s hard though. Probability, probability, probability… This week, topics such as Gaussian Mixture Models and Expectation Maximization were covered… It was most amusing on Friday, when the lecturer commented on the fact that this week’s material was particularly tough, and that next week’s would be simpler. One student was unable to resist the reflex of commenting “huh! Simple” somewhat louder than he expected… which made us all laugh 🙂

Best lecture of the week: Photonics’ Tuesday Lecture on Diffraction Gratings/ 2-Dimensional Holograms: some theory yet fun, interesting and varied!

I’m particularly happy this year to see that a number of lecturers (Photonics, Innovation) are using our VLE (Virtual Learning Environment) this year, Camtools, to share some of their lecture resources and additional material, especially following the report that I wrote up last year about it. The extra effort on the part of the Lecturers is very much appreciated by us.



Following an interesting meeting with my project supervisor on Tuesday Morning, I’ve been working on a particular computer vision algorithm based on ‘Canonical Correlations’, setting aside the work I had done last week on the SIFT descriptor.

The particular paper I’ve been concentrating on implementing is this one entitled ‘Discriminative Learning and Recognition of Image Set Classes Using Canonical Correlations’.

‘Canonical correlations’ involve expressing a set of images (of the same object, perhaps under different illuminations or viewpoints) as a linear subspace. This is done for several classes of objects that you want to be able to recognize… and then by performing linear algebra operations (such as Singular Value Decomposition), one forms diagonal matrices of ‘canonical correlations’ which are a measure of ‘similarity’.

After this ‘training’ you have a model for the various object classes you want to recognize, and then you can perform further operations to establish the similarity of new test data which you supply to the algorithm with the image sets you have already trained.

Suffice it to say… it’s quite involved… especially given that the paper also describes a refinement to the system, which supposedly improves recognition. I’ve been testing the algorithm on a subset of images from the Amsterdam Library of Object Images.

As things stand at the moment, I have been building upon the source code for the algorithm found here, having limited success. I seem to be having difficulties establishing what the dimensions of the matrices I am expecting are. In addition I had to solve several problems e.g.

  • Why Matlab refused to multiply two matrices together in ‘uint8’ format (I had to convert to ‘double’ in the end)
  • Also, many of my temporary matrices in the more complicated extension to the program seem to contain very small elements, which leads to problems in matrix singularities and pages of NaN. Ultimately the algorithm can’t cope with these and so I can’t very the validity of the claim that Discriminant Analysis of Canonical Correlations is better than simple CC.
  • The algorithm downloaded from the link above also seems to be unable to cope with a single image training set, and fails unless you supply it with more than one set.
  • I had partial success recognising objects when considering two object classes, but when I extended my algorithm to three objects… the system got confused.. much like me really 🙂

Aside from that, my supervisor suggested I check out OpenCV, which is an open-source C++ library for Computer Vision which contains many, many pre-made functions. After finally managing to link the libraries in Visual Studio, I managed to put together a few simple examples… Now I should be able to implement my Matlab code in C++ to get them to execute at light-speed!

Anyway… that’s all for this week… Look out for  ‘This Week in Microsoft’ in the middle of the week :)]



Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: