It’s just not practical to program a car to drive itself in every environment, given the nearly infinite range of possible variables involved.
But, thanks to AI, we can show it how to drive. And, unlike your teenager, you can then see what it’s paying attention to.
With NVIDIA PilotNet, we created a neural-network-based system that learns to steer a car by observing what people do. But we didn’t stop there. We developed a method for the network to tell us what it prioritized when making driving decisions.
So while the technology lets us build systems that learn to do things we can’t manually program, we can still explain how the systems make decisions.
“Think about why you recognize a face in a photo, and then try to break that down into a set of specific rules that you can program — you can’t do it,” says Urs Muller, chief architect for self-driving cars at NVIDIA. “The question thus becomes: ‘Do we want to limit our solutions to only the things we can define with rules?’”
AI Learns to Drive by Watching How We Drive
We use our AI car, BB8, to develop and test our DriveWorks software. The make and model of the vehicle doesn’t matter; we’ve used cars from Lincoln and Audi so far, and will use others in the future. What makes BB8 an AI car, and showcases the power of deep learning, is the deep neural network that translates images from a forward-facing camera into steering commands.
We trained our network to steer the car by having it study human drivers. The network recorded what the driver saw using a camera on the car, and then paired the images with data about the driver’s steering decisions. We logged a lot of driving hours in different environments: on roads with and without lane markings; on country roads and highways; during different times of day with different lighting conditions; in a variety of weather conditions.
The trained network taught itself to drive BB8 without ever receiving a single hand-coded instruction. It learned by observing. And now that we’ve trained the network, it can provide real-time steering commands when it sees new environments. See it in action in the video below.
Watching Our AI Think
Once PilotNet was up and running, we wanted to know more about how it makes decisions. So we developed a method for determining what the network thinks is important when it looks at an image.
To understand what PilotNet cares about most when it gets new information from a car camera, we created a visualization map. Below you see an example of the visualization, overlaid on an image of what the car’s camera recorded. Everything in green is a high priority focus point for the network.
This visualization shows us that PilotNet focuses on the same things a human driver would, including lane markers, road edges and other cars. What’s revolutionary about this is that we never directly told the network to care about these things. It learned what’s important in the driving environment the same way a student in driving school would: observation.
“The benefit of using a deep neural network is that the car figures things out on its own, but we can’t make real progress if we don’t understand how it makes decisions,” Muller says. “The method we developed for peering into the network gives us information we need to improve the system. It also gives us more confidence. I can’t explain everything I need the car to do, but I can show it, and now it can show me what it learned.”
When self-driving cars go into production, many different AI neural networks, as well as more traditional technologies, will operate the vehicle. Besides PilotNet, which controls steering, cars will have networks trained and focused on specific tasks like pedestrian detection, lane detection, sign reading, collision avoidance and many more.
Take Me to Starbucks
Using a variety of AI networks, each responsible for an area of expertise, will increase safety and reliability in autonomous vehicles. Our work brings this type of sophisticated artificial intelligence to the complex world of driving. So one day soon you can enjoy a trip like the one we take in BB8 below.
For more on NVIDIA’s full stack of automotive solutions, including the DRIVE PX 2 AI car supercomputer and the NVIDIA DriveWorks open platform for developers, visit NVIDIA.com/drive. To read the research about how we peered into our deep neural net to understand what it was prioritizing, view the whitepaper.