The Udacity Self Driving Car Nanodegree — Term 1
I did it! I completed term 1 of Udacity self driving car nanodegree (www.udacity.com/drive). This is my review and roadmap to term 1.
The three terms
The first thing to note is that the course is divided in three terms. Each term costs 800 dollars and take three months each.
- Term 1: Computer Vision and Deep Learning
- Term 2: Sensor Fusion, Localization, and Control
- Term 3: Path Planning, Concentrations, and Systems
I completed term 1. The term 2 has only begun these days (mar 2017). And term 3 is not available yet.
Term 1 is about computer vision and deep neural networks. A self driving car has to see key elements in the environment (road lanes, other vehicles). And the car has to drive with this information.
800 dollars per term?
The course is expensive. In my opinion, this is a good thing, because the course has costs to be a good course (classes videos, IT infrastructure, software, instructors, reviewers).
The course is not easy. Certify you have the skills before enrolling it. Udacity term 1 curriculum.
In hindsight, I would pay gladly up to the double of it, given what I could learn.
Classes and exercises
The classes were based on important subjects in self driving car areas: lane line recognition, deep learning, computer vision. Surely these areas were chosen based on the fantastic experience of the likes of Sebastian Thrun (Udacity co-founder, Google self-driving car and Stanley, the winner of Darpa Great Challenge), and partners as Mercedes-Bens, Nvidia, Uber and others.
It had a very practical focus: theory enough to understand the core concepts, and then, the practical application. It is a reason why it requires a lot of background. It is not a course on basic python, or basic neural networks, but how to apply it in real cases.
We had at our disposition access to the on-line classes and exercises, discussion forum (in Udacity, Slack and Facebook), a “mate” to help via chat.
I spent about 20 h/ week or more doing the course. In the beginning of the course, Udacity estimated 10 h/week. But this estimative was very wrong, not only for me, but for most of the people who commented in the forums.
One thing to say is that the first cohorts were also guinea pigs. Not only we were learning, but Udacity also was calibrating the lessons and classes.
For example, the project 3 had very few instructions. The very best instruction guide was written by a student of first cohort, Paul Heraty, who surely spent endless hours in the most difficult project of the course. And the best tips were also from students in the forums.
The bad side is that communication is worse than face-to-face. The good side is that we are in touch with some of the brightest guys in the world.
What counts, in the end of the day, are the projects. There were 5 projects.
- Finding lane lines
- Traffic sign classification
- Behavior cloning
- Advanced lane lines
- Vehicle detection
Interestingly, today the focus is in electronics and computer science. Not a single lesson on mechanics. It makes sense, since the mechanics is already mastered. We want to replace the humans behind the steering wheel!
Project 1 — Finding lane lines:
In the first week of this course, there is a small challenge: to find lane lines in a video, using basic computer vision.
Skills: Python, computer vision (opencv), numpy, Jupyter notebook
This is the video of the first project. I didn’t write a report on Medium.
I applied the same in a video made in São Paulo, Brazil.
Project 2 — Traffic sign classification:
The challenge here is to train a deep neural network (LeNet architecture) to recognize and classify traffic signs.
Difficult: Medium Hard
Skills: Python, Tensor Flow, basic calculus, numpy, Jupyter notebook
Detailed report here.
Project 3: Behavior cloning
The goal here is to teach a self-driving car to predict the steering angles and speed, in a simulator.
Difficult: Deviously Hard, very very hard.
Skills: Python, Tensor Flow, Keras, OpenCV, basic calculus, numpy, GPUs and luck.
As I said before, Udacity is improving the classes based on these first cohorts — adding lessons, correcting problems. Perhaps in the next cohorts this project will be easier. I spent 5 to 6 weeks working on this at nights and weekends. It is worth to read my report, with a dozen of little and big mistakes, before trying it.
Detailed report here.
It is quite frustrating when the car goes off road after you spent endless nights working on it, and you have no idea of what is wrong:
But, when I finally could pass this challenge, it was very satisfying.
Project 4: Advanced lane lines
In project 1, we used only straight lines to project the lane lines. In this project, we correct the distortion of lens, do a birds-eye view and use a second-order polynomial.
Skills: Python, OpenCV, numpy
After P3, I learned so much of python and numpy and it all, that the other projects became easy.
Detailed report here.
Project 5 — Vehicle detection and tracking
This challenge is to detect vehicles in a video, using computer vision and a support vector classifier. One problem was the false positives of video.
Skills: Python, OpenCV, Sci-kit learn, numpy
I ran everything in Linux Ubuntu 16.04. I haven’t worked with Linux before, but I think TensorFlow and everything else run better in Linux. And now I’m a fan of Ubuntu. Today I run Windows only in work.
What I missed
The nanodegree, as the description says, is about the engineering of self-driving cars. It is not about history or management or a generic overview of self-driving cars.
Then, it did not show who are the self driving car companies, which technology they are using, and so on. I believe it would be impossible to do this, because most of these technologies are industrial secrets.
Udacity provides some advices and links to partners companies.
My focus here was just to learn, to learn the most I could do. I’m not looking for a new job. Then I didn’t even pay attention to these services, so I can’t write about it.
In every hot field, the beginning is a boom: self driving cars will dominate the world, there’ll be no jobs. Sometime later, after the peak of enthusiasm, the disillusion: it will not replace every job, it has a lot of problems, someone invested billions without success, and so on.
And the consolidation: it will have some very very nice niche applications, new types of jobs will be created, new ideas will change every single concept we have now.
Other pattern. In a beginning industry, a dozen of companies try to win the race. Different ideas, technologies, approaches. One or two will win.
It was the same with electric companies, 100 years ago. Only General Electric and Westing House survived, they won the race. Later, electric companies started to act in niches, but the great ones were these two.
In the beginning of personal computer era, there were hundreds of companies and a myriad of technologies. We know only the winners: Apple, Microsoft, IBM.
Who will win the self driving car race? Nobody knows. Let’s see the next chapters.
I’d like to thank Udacity for providing a so great course. I did things I could not even imagine.
I learned a lot, but I feel it is not enough. An old Chinese quote says:
“A great journey begins in the first step”.
There are so many more knowledge to master. Let’s challenge the term 2!
Term 1 projects:
- Advanced Lane Finding
- Teaching a car to drive itself
- Vehicle detection and tracking
- Traffic Sign Classifier
- Review on Udacity Term 1
Personal writings (in english): https://medium.com/@arnaldogunzi
Personal blog (in portuguese): https://ideiasesquecidas.com/
Trasmission — Facebook group from Oliver Cameron