
Get everything you need for the course installed: The Anaconda scientific Python development environment, the OpenCV computer vision package, the Tensorflow package for building artificial neural networks, and the code and data that make up the course materials.
Let's try out your new environment by doing real-time edge detection on a live video stream from your webcam, within a Jupyter notebook. We'll also do a quick overview of how Jupyter notebooks work.
Maximize your learning on Udemy by using the Q&A, transcripts, and captions, adjusting playback speed and video quality, and leaving an honest course rating.
We'll cover the history of self-driving cars, which starts in 1925 and includes a lot of exciting progress that's been largely forgotten!
We'll quickly review the course outline, and give some guidance on which sections you might be able so skip given your prior experience.
We'll briefly cover why whitespace is important in Python and how it's used, how to import packages of existing code libraries, and how to use lists in Python.
We'll continue diving into Python data structures with tuples and dictionaries, and examples of using them.
We'll cover the syntax of functions in Python, how to pass functions around as parameters, and lambda functions. We'll also see how boolean operations like equality and or work.
We'll see how for and while loops with in Python, and challenge you to a very simple exercise to practice what you've learned so far.
We'll walk through some examples of using the Pandas package, to slice and dice some fake video index data from cars.
We'll cover the different charts that MatPlotLib can produce from our data, and how to load and view images.
Seaborn both sits on top of Matplotlib to make it better, and introduces new kinds of visualization tools that can help you extract meaning from data. We'll walk through a bunch of examples using real fuel efficiency data for 2019 cars.
Explore how computer vision lets computers understand images and recognize objects like pedestrians, lanes, traffic signs, and license plates. Examine challenges like viewpoints, camera limitations, and lighting for self-driving cars.
Compare human and artificial vision in autonomous cars, designing a 360-degree artificial eye that fuses camera, LiDAR, and radar data for real-time 3D object detection and safe driving.
Mask white pixels in a gray scale image to isolate lane lines using a simple threshold and per-pixel masking, then interpret the result for vehicle centering.
Explore color spaces essential for image analysis in autonomous driving, including RGB and HSV, with notes on OpenCV's BGR ordering and practical RGB-to-HSV conversions.
Explore edge detection techniques for self-driving apps, including Sobel, Laplacian, and canny methods, and learn gradient calculation, magnitude, orientation, and canny's smoothing, non-maximum suppression, and thresholding.
Explore edge detection using Sobel x, Sobel y, Laplacian, and Canny, implemented with OpenCV, tuning thresholds to improve feature visibility for object detection and machine learning classifiers.
Explore image transformations using OpenCV, including rotation, translation, and resizing, and compare affine and projective transformations while applying region of interest masking and a lane line detection project.
Define and mask the region of interest in a road image by converting to grayscale, creating a mask from ROI points, and applying a bitwise operation to isolate lane lines.
Explore the Hough transform theory for detecting lines, including rho-theta and m-b representations, image space versus Hough space, and combining region of interest masking with OpenCV to detect lane lines.
Apply the Hough transform in Python with OpenCV to detect lines in images, using gray images and canny edge detection, then compute rho and theta and plot the detected lines.
Learn how image features and feature detection identify edges and colors to detect objects like cars and pedestrians for self-driving cars, using hog features and classifiers.
Use template matching with cv2 to locate a truck in an image by loading the image and template, converting to grayscale, and drawing a rectangle at the found coordinates.
Learn to perform Harris corner detection with OpenCV, converting to grayscale, using cv2.cornerHarris, dilating results, and thresholding to highlight corners on chessboard and truck images in green.
Learn image pyramiding to resize images at multiple scales for feature and object detection, such as spotting trucks at different distances, with Gaussian blurring for smoother results.
Learn to create image pyramids with cv2 pyramid down and pyramid up, visualize multiple scales, and understand the effects of resizing and interpolation on image quality.
Learn to extract color features with histograms by loading an image, computing and plotting rgb channel histograms with OpenCV, and using color distributions for color-based detection tasks such as lanes.
Apply histogram of oriented gradients feature extraction in Python with OpenCV, converting to grayscale, computing Sobel gradients, and using nine orientations for cars and trucks detection.
Let's discuss how machine learning works, and how it fits in with the world of AI and deep learning.
Learn how train/test and K-fold cross-validation helps us to prevent "overfitting" models to the data they were trained with.
We'll go in depth on how linear regression learns how to fit a line to observed data, to create a simple model we can use to predict new observations.
Let's use linear regression to build a model mapping road conditions to vehicle speed.
Logistic regression builds a model that classifies data into one of two categories.
Let's practice using logistic regression to predict whether a car should go fast or slow, given distance to an upcoming bump and its size.
Decision trees build up a flowchart-like model, that classifies data based on various decision points that branch off to others.
In this activity, we'll implement the example from the previous lecture of predicting hiring decisions based on candidate attributes, and also see what happens when we use decision trees for the same logistic regression sample of predicting vehicle speed for an upcoming bump in the road.
We'll cover Bayes Theorem and how it can help us understand conditional probabilities, and apply it to Naive Bayes to classify email as spam or "ham."
We'll build a real spam classifier using Naive Bayes, and see how it well it works on our problem of classifying vehicle speeds based on upcoming obstacles in the road.
Support Vector Machines use the "Kernel Trick" to classify data. Hyperparameter tuning becomes important to find the right kernel to use, and the right parameters for that kernel.
We'll apply SVC to our vehicle speed classification problem, and illustrate hyperparameter tuning to find the best kernel and best set of parameters to use.
Explore how support vector machines classify data by the maximum margin hyperplane defined by support vectors. Tune C and gamma with scikit-learn to detect cars in images using SVM.
Train a vehicle vs no-vehicle classifier with histogram of oriented gradients features and a linear SVM, validate with a confusion matrix and grid search C and gamma.
Train a support vector machine with grid search to optimize c and gamma, evaluate with confusion matrix, and detect vehicles in new images using hog features.
Build a single neuron model with inputs, weights, bias, and an activation function, and learn binary, categorical, and regression outputs.
Explore activation functions such as sigmoid, Relu, and hyperbolic tangent, their ranges and roles in hidden and output layers for binary or categorical classification tasks.
Explore a self-driving car classification using a single neuron model to decide speed from bump height and distance. Use a confusion matrix to evaluate predictions and highlight type II errors.
Explore backpropagation as a core training strategy for neural networks, covering forward propagation, error calculation, backpropagation steps, and weight updates via gradient descent and learning rate.
Train a perceptron for binary classification with two inputs and a sigmoid activation; compile with binary cross entropy and Adam, then fit, evaluate with a confusion matrix and mesh-grid visualization.
Build a multi-layer perceptron for binary cancer classification (malignant vs benign) using mean radius and mean texture, with min-max scaling and a sequential network evaluated by a confusion matrix.
We'll talk about what Deep Learning is, and how Tensorflow works at a low level.
We'll explore how to construct deep neural networks for binary and multi-class classification with Keras, the importance of normalizing your input data, and how one-hot encoding is used to translate categories into a representation that's compatible with neural nets.
We'll use Keras to easily experiment with a variety of network topologies to apply deep learning to our "car approaching a bump" classification problem.
We'll go into more depth on activation functions and why ReLU is popular, and cover techniques for preventing overfitting including Dropout layers.
We'll run our previous neural network longer to make some overfitting happen, and see how a Dropout layer in Keras can improve accuracy by preventing overfitting.
Autonomous Cars: Computer Vision and Deep Learning
The automotive industry is experiencing a paradigm shift from conventional, human-driven vehicles into self-driving, artificial intelligence-powered vehicles. Self-driving vehicles offer a safe, efficient, and cost effective solution that will dramatically redefine the future of human mobility. Self-driving cars are expected to save over half a million lives and generate enormous economic opportunities in excess of $1 trillion dollars by 2035. The automotive industry is on a billion-dollar quest to deploy the most technologically advanced vehicles on the road.
As the world advances towards a driverless future, the need for experienced engineers and researchers in this emerging new field has never been more crucial.
The purpose of this course is to provide students with knowledge of key aspects of design and development of self-driving vehicles. The course provides students with practical experience in various self-driving vehicles concepts such as machine learning and computer vision. Concepts such as lane detection, traffic sign classification, vehicle/object detection, artificial intelligence, and deep learning will be presented. The course is targeted towards students wanting to gain a fundamental understanding of self-driving vehicles control. Basic knowledge of programming is recommended. However, these topics will be extensively covered during early course lectures; therefore, the course has no prerequisites, and is open to any student with basic programming knowledge. Students who enroll in this self-driving car course will master driverless car technologies that are going to reshape the future of transportation.
Tools and algorithms we'll cover include:
OpenCV
Deep Learning and Artificial Neural Networks
Convolutional Neural Networks
Template matching
HOG feature extraction
SIFT, SURF, FAST, and ORB
Tensorflow and Keras
Linear regression and logistic regression
Decision Trees
Support Vector Machines
Naive Bayes
Your instructors are Dr. Ryan Ahmed with a PhD in engineering focusing on electric vehicle control systems, and Frank Kane, who spent 9 years at Amazon specializing in machine learning. Together, Frank and Dr. Ahmed have taught over 500,000 students around the world on Udemy alone.
Students of our popular course, "Data Science, Deep Learning, and Machine Learning with Python" may find some of the topics to be a review of what was covered there, seen through the lens of self-driving cars. But, most of the course focuses on topics we've never covered before, specific to computer vision techniques used in autonomous vehicles. There are plenty of new, valuable skills to be learned here!