Life in the Ivory Tower
I obtained my Bachelor of Engineering degree at the University of Calgary where I studied a mix of electrical engineering and computer science. In my fourth year, my project group and I made an autonomous robot that navigated mazes. It used a Wii-mote for localization and IR sensors to stop itself from crashing into walls. This was my first foray into the field of artificial intelligence. It was also in my fourth year that I became progressively more addicted to functional programming languages (e.g. Lisp and Scheme), and the compilers to support them. I have been pursuing these two interests, artificial intelligence and compilation, since then.
I obtained my Master's of Applied Science degree at the University of Toronto, where I worked on machine learning and computer vision under the supervision of Prof. Brendan Frey. My thesis project was on using video to help improve static image classification performance, a framework that we called "Flobject Analysis". The approach was quite successful and seemed quite promising. We beat other state-of-the-classifiers such as HOG, and intersection kernels, by more than 20% increase in accuracy. You can read about it here.
Now I am at the University of California, Berkeley, where I am designing a new general purpose programming language called Stanza with my advisors Jonathan Bachrach and George Necula. Currently available programming languages fall roughly into two camps: dynamically typed "scripting" languages, and statically typed "production" languages. Scripting languages are great during the early phases of software development. They are flexible and allow users to get things done quickly. However, as programs mature and grow, the lack of any error checking starts to impede progress, feeling much like attempting to build a skyscraper out of duct-tape. Statically typed production languages offer the tools necessary to build stable and reliable software, but at the cost of being less flexible. Stanza is designed to accomodate the entire lifetime of software design and implementation, allowing users to bring prototypes to polished products under the same language. It is an optionally typed language, and users are free to put in as many or as few types as desired depending upon which phase of implementation they are in. Check it out at www.lbstanza.org.
'Flobject' Analysis: Learning about Static Images from Motion
Patrick S. Li. 'Flobject' Analysis: Learning about Static Images from Motion. 2011. Master's Thesis, Graduate Department of Electrical Engineering, University of Toronto
Learning Better Image Representations Using "Flobject Analysis"
PS Li, IE Givoni, BJ Frey, Learning better image representations using flobject analysis. IEEE Conference on Computer Vision and Pattern Recognition (CVPR), June 2011.
Factorizing Appearance Using Epitomic Flobject Analysis
PS Li, BJ Frey, Factorizing appearance using epitomic flobject analysis. IEEE Conference on Computer Vision and Pattern Recognition (CVPR), June 2012.