For fall 2014, I took Knowledge-Based AI (GT CS-7637). Frankly, before I enrolled for the class I didn’t really have much clue what separated “knowledge-based AI” from other types of artificial intelligence, but I was fascinated by the topics mentioned in the course description (i.e., Watson).
There were two different types of assignments for the semester – one involved writing papers on different KBAI topics, and the other involved writing code to solve various forms of Raven’s Progressive Matrices.
The latter were really interesting. I’ve posted the code I developed to solve these problems on github, which you can view here:
https://github.com/jamesmallen/gt-cs7637/
We started with very simple versions of the problems, solving them based on textual descriptions, and in the final project we had to actually analyze image data and make our best guess. This is where my experiences with OpenCV proved really beneficial.
I structured my code around identifying shapes and sizes using OpenCV, recreating the textual descriptions that we used in the earlier projects. This allowed me to reuse most of the code from project to project, with only slight tweaks to optimize for data that was difficult to get using OpenCV.
Other students approached the problem by looking at pure pixel data, but I greatly preferred this method. KBAI is largely about modeling knowledge structures/information in a way that is similar to how humans store and process it. Pulling out information about each shape, in a way a human might describe it to someone who can’t see it, seemed more along the lines of KBAI. It also had the benefit that it just made more sense to me!