One of the key technologies which makes Autonomous Cars possible is Computer Vision. Computer Vision allows us to extract data from videos and pictures, effectively allowing computers to see. Whilst it may seem simple, it is far from it and involves some rather advanced computer science.
Current computer vision technology allows cars to detect road markings, signs, and other vehicles, enabling the car to build up an idea of its surroundings and to navigate the roads. Computer Vision requires a large amount of hard coding, for example in order to recognise road markings we would:
- First apply filters to the image to remove the grain.
- Then run an algorithm to detect all the edges in an image. A task which is incredibly complex in itself.
- We then examine each of the pixels in the previous picture to see if they could possibly be part of a line. Here we can see 4 pixels lay on a straight line so they are flagged up by the algorithm
- We then filter out the lines which are not relevant by looking at angles and positions, classing them into two groups.
- And finally combining the data to output the positions of the road markings
Here is a video of this in action all in real time.
As you can see by the green lines jumping around in the bottom right, it is far from perfect and accuracy can vary. It is impossible to code an algorithm for every situation a car may encounter, hence the computer having trouble detecting the markings when the crash starts. For commercial use another approach is needed. Rather than hardcoding what we want the computer to look for, we can teach the computer, to teach itself what to look for.
This is known as machine learning.
The idea of getting machines to solve problems that seemed only solvable by humans is no new concept, but lately this area of computing has taken the world by storm.
Machine learning is based around the idea of not hardcoding a computer to tell it how to solve a problem, but presenting it with a dataset and allowing the computer to learn for itself how to solve the problem. An example of this is image recognition, where a computer is initially trained by being shown thousands of images which are labelled with their contents. After the training is complete the computer can be shown a new picture and using it’s learning algorithm it will be able to identify the contents of the picture.
This same idea can be used to train a computer how to drive a car. In April this year, graphics card manufacturer ‘NVIDIA’ were able to create an autonomous car through machine learning alone. They did this by connecting a camera to a processor in a car and filmed the journey whilst a human was driving. All this time the processor was taking in data of the road ahead and the angle of the steering wheel. The result of this was a car that did not have to rely on roadmarkings, guard railings or other cars to navigate the road. This autonomous car compared the road ahead with images of similar roads that it saw during its training and turns the steering wheel accordingly. This means that by using ML this autonomous car can drive in any weather condition, in any lighting on paved and unpaved roads. For information regarding the usage of convolutional neural networks for this car refer to the research paper stated in the sources.
Video credits and write up on Computer Vision go to Jonathan Freer
For further information on NVIDIAs car visit the following links