Feb 7 2010

StrayLight Photography

I’ve been meaning to revamp the photography section of this site for a while now; this weekend, I finally found the time to do it. I registered a new domain, straylightphotography.com, and put together a portfolio consisting of my 20 favorite shots (<shamelessPlug>many of which are currently on display at Interzone through February 28th!</shamelessPlug>). I’m hoping to quickly expand the site with themed portfolios (portraits, urban decay, etc.), but… first things first.

Also, the new portfolio has been an excuse to play with CSS3 and jQuery 1.4.  Visitors using Firefox, Safari, Chrome, or Opera should see a site that behaves like it was created with Adobe Flash, but is fully accessible and doesn’t require the proprietary Flash plug-in.  Visitors using Internet Explorer… well… it at least degrades cleanly.  Mostly.


Mar 17 2009

CS 519 Final Project

How do you debug a program that you can’t see? This is the problem faced by users interacting with the increasing number of applications utilizing machine-learning components to train themselves to a user’s inclinations. These programs consist of an instance of a machine-learning classifier that has been trained on data from a particular user and either resides on this user’s machine, or is designed solely for interaction with this user over a network. Common examples include email filtering software and recommendation systems, such as the one utilized by Amazon.com. The machine-learned program itself is accessed through a more traditional program, such as an e-mail application, which uses the learned program to decide how incoming messages should be categorized.

Our goal is to create a visualization of the learned program that a user may interact with, allowing the user to both understand why the program makes each of its decisions, and how the program can be corrected when it makes a faulty decision. Our audience consists of end users who neither have knowledge of formal software debugging techniques nor understand how machine-learning systems operate. These are people who use their computers for work or leisure, and are not interested in spending anything more than cursory time and effort to learn, e.g., how to improve the accuracy of their SPAM filter.

One of the most powerful machine-learning systems used today are Conditional Random Fields (CRFs). These systems excel at complex, sequential tasks such as natural language processing, and thus find themselves at the heart of many machine-learned programs. We used the logic for a CRF as the data set for our visualization. This logic includes a set of features, such as words, phrases, and other identifiable aspects of data which is being run through the learned program, as well as the set of numerical values each feature uses to determine its importance to each available category.

The data used to create the visualization is a transcript of a user study. This transcript consists of the words and actions of an end user debugging a spreadsheet in Microsoft Excel. Each sentence of the transcript is assigned to one of four categories (Seeking information, information gained, information lost, or none), which makes analysis of the transcript by researchers easier. Our visualization explains the logic the learned program might use to categorize each sentence of the transcript; future work would include allowing the user to adjust this logic when it results in poor classifications. This release is not connected to an actual classifier.  The displayed explanations are randomly generated, but provide a useful idea of what a functional implementation would look like.

Transcript Viewer source code [XCode 3.1 project, requires Mac OS X 10.5 or higher]

A screenshot of our prototype Transcript Viewer

A screenshot of our prototype Transcript Viewer


Dec 11 2008

WordPress 2.7

I just upgraded this site to WordPress 2.7 and everything seems to be working smoothly so far.  I found a small bug in the comments system, where I kept getting an enqueue_comment_hotkeys_js(); is undefined error every time I tried to edit comments in the administration panel, but commenting out that line in edit-comments.php seems to have fixed everything up.  Please let me know if anything on the site isn’t working properly after the upgrade :)


Dec 10 2008

Visualizing Machine-Learned Programs – CS 550 Term Project

Screenshot

Screenshot

Background

The purpose of this project is to visually explain a machine learning classifier’s logic to an end user.  Additionally, the user must be able to explain back to the classifier when its logic is faulty and how it should be fixed.

Implementation

This project was designed in C++ using OpenGL.  I used GLUT primitives such as glutSolidCube() to create the basic components, then reshaped and arranged them using OpenGL transformations.  In order to create the translucent regions, I needed to enable lighting and shading.  Blending was then used to create the illusion that each word’s bar is inside one or more of the translucent boxes.  The text was created using glutStrokeCharater() calls; regular bitmap fonts were not an option because I wanted to rotate the text beneath the word boxes.  The resulting words suffered from severe aliasing problems, so I used the OpenGL accumulation buffer to enable 8x anti-aliasing.

Usage

While this project is not actually hooked up to a classifier, the word importance can still be manipulated by dragging the bars up or down into the desired regions.  There are also controls in a secondary window for rotating the view or panning right and left.

Room for Improvement

Ideally, this explanation would be interacting with a classifier; changes made to word importance would then be instantly viewable in the application when it re-classifies based upon the user’s adjustments.  I would also have liked to make it possible to zoom in and out so that the user can fit exactly as many words on-screen as she would like.  Finally, the blending of the word boxes with the translucent boxes isn’t entirely right–the word boxes should slightly change color depending on which region they are.

Downloads

Source code (for Visual Studio 2008)

Windows Binary (Requires OpenGL, GLUT and GLUI libraries)


Dec 4 2008

CS 550 Term Project

Yay!  Thanks to some help from Will, I’ve finally finished my 550 term project, a whole 18 hours before the due date!  Since this was a graphics course, it isn’t actually hooked up to a naive bayes classifier backend (unlike the 2D version we did over the summer).  It is, however, infinitely more enjoyable to use than the previous prototype, mostly because you can rotate the view around and zoom down the list of words. :)

3D naive bayes classifier visualization

3D naive bayes classifier visualization


Nov 23 2008

New Photo Albums

Today I finished working out the kinks in my new photo album workflow.  The result: all of my photo sets since I moved to Corvallis are now available on the site’s Photography section.  I’m keeping the Flickr site for my best photography, but I’ve had all of these images sitting in Lightroom that I suspect friends would love copies of, so now they’re available.

For the curious, I do all of my photo editing in Adobe Lightroom (and occasionally Photoshop).  Using a heavily-modified version of the TTG Shadowbox Gallery Template, I export each album and upload the static HTML and image files to my server.  Nothing terribly exciting there, but now it gets interesting.  I wanted to have an index page that automatically shows all of my galleries, displaying the most recent first.  TTG supplies an XML AutoIndex module that does nearly everything I want, so I integrated that as my index page and hacked the PHP scripts to include better date and description information.  Finally, I wanted to provide an RSS feed of my photo albums, so people won’t need to constantly visit my website if they’re looking for new photos.  A quick modification to the XML AutoIndex script did the trick, so now you can subscribe to an Atom feed of my photo albums!

Everything seems to be working fine for my on Firefox and Safari.  If anyone notices problems with the photo albums or feed, please let me know.