Pocket Racers
Overview
Pocket Racers is the newest of IEEE projects, and aims to have students build an autonomous car driven by computer vision. Students will drive the car around a track to collect training data. The neural network will build an association from the data, and the car will be able to traverse the track on its own.
In Pocket Racers you will be able to:
- Set up and develop on the Raspberry Pi
- Understand how computers read and produce images
- Apply techniques that will make an image easier for the computer to analyze
- Clean data sets for the training, validation, and testing of your model
- Use Convolutional Neural Networks (CNNs) to classify an image
- Optimize machine learning models
📄️ Module 0
Intro to OpenCV
📄️ Module 1
Downscaling // Grayscaling, HSV Conversion // Thresholding and Adaptive Thresholding
📄️ Module 2
Box Blur, Gaussian Blur, etc. // Erosion and Dilation
📄️ Module 3
Masks and Blob Detection
📄️ Module 4
All About Contours // Reading Arrows
📄️ OpenCV
All instances of referring to a slide number, unless otherwise specified, are referring to the slides from Lecture 2 on Localization.
Content
Raspberry Pi Basics:
- Microprocessor fundamentals
- GPIO basics
- Power supply basics
Localization:
- 2D convolution and kernels
- Important kernels like blur and downscale
- Filtering techniques like color conversion, adaptive thresholding, blob detection, erosion, dilation, and more
- OpenCV implementation and syntax
Motors:
- Brushed motors physics
- Brief intro to ESCs and controllers
- PWM signals and their implementation
Intro to Machine Learning:
- Linear regression and gradient descent
- Logistic regression
- Cross validation, variations on gradient descent
Neural Networks and CNNs:
- Neuron structure, activation functions
- Forward and backward propagation processes
- Common layers in NNs and CNNs
Additional Topics in Neural Networks:
- Dealing with overfitting: regularization, dropout, data augmentation
- Improvements on gradient descent: Nesterov momentum, Adagrad, RMSProp, Adam
- Batch normalization
- Network Binarization