For the CS 231N class at Stanford, I worked with two other students to develop a convolutional neural network (CNN) based autopilot that can play Mario Kart 64 in real-time while only looking at the screen. Below are some videos of our results.
Our approach has three main components. First, an omniscient search AI with complete control of the emulator simulates different possible actions and generates a training set associating screenshots with a steering angle. Second, a CNN trains on the resulting dataset. Finally, to increase our ability to recover from errors, we randomly sample states from the CNN during real-time play and run the search AI from those states to augment the dataset.
For the CS 221 class at Stanford, I worked with another student to develop an AI bot that logs into Pokemon Showdown and plays games on the official ladder. We implemented a Minimax search of depth 2, and tested the results against a greedy algorithm and a human player.
The fight above is typical of a win for the bot, where it selects super-effective moves, switches out to avoid type advantages, and applies status effects to itself and opponents. Unfortunately, the bot can can stuck on certain moves, switching out in a cycle or repeatedly using moves like Protect that weren't fully accounted for in our battle model.
For the CS 229 class at Stanford, I worked with another student to create an automatic image colorizer. Our approach uses Support Vector Regressions (SVRs) to predict the color of a region locally, then a Markov Random Field (MRF) to smooth color information across the image.