This repo contains our work on Udacity's Artificial Intelligence Nanodegree Projects.
This exciting and fun capstone project required combining traditional computer vision techniques and deep learning to build and end-to-end facial keypoint recognition system. Fisrt, we used OpenCV to build a face detector and pre-process video input data. Second, we trained a CNN to detect facial keypoints in the face area of the video frame. Third, we used OpenCV again to apply a template (sunglasses) on top of the facial keypoints in real-time.
Our capstone project can be reviewed here.
For this computer vision problem, we experimented with two different CNN (Convolutional Neural Network) architectures. In our first approach, we built a CNN from scratch. Second, we used transfer learning to leverage pre-trained models (VGG-16, VGG-19, ResNet-50, Inception, Xception), only training the head of the network (the fully connected classification layer) for our specific application (84.8% test accuracy w. ResNet-50)
The notebook for this project can be found here.
In this project, we use Affectiva’s Emotion-as-a-Service API to track faces in a video and identify facial expressions. We tag each face with an appropriate emoji next to it. If you own a webcam, you may also play a simple game: mimic a random emoji we display and we will automatically recognize if your expression matches our random selection!
Our implementation is available here.
Here, we use HMMs (Hidden Markov Models) to recognize gestures in American Sign Language, from individual words to complete sentences. We train our system on a dataset of videos that have been pre-processed and annotated, and test on novel sequences.
Click here to review the IPython notebook for this project.
For this project, we implement a planning search agent to solve deterministic logistics planning problems for an Air Cargo transport system. We use a planning graph and automatic domain-independent heuristics with A search* and compare their results/performance against several uninformed non-heuristic search methods (breadth-first, depth-first, etc.).
Additional details can be found here.
This game-playing agent uses techniques such as iterative deepening, Minimax, and Alpha-Beta Pruning to beat its opponent in a game of Isolation (a two-ply discrete competitive game with perfect information).
For details about our implementation, please visit this link.
In this introductory project, we use constraint propagation to find solutions to Sudoku puzzles, repeatedly applying game rules (constraints) until the Sudoku puzzle stops changing.
For more information about this project, go here.
If you have any questions about this work, please feel free to contact us here: