All Projects → maxritter → Sdc Vehicle Lane Detection

maxritter / Sdc Vehicle Lane Detection

I am using an ensemble of classic computer vision and modern deep learning techniques, to detect the lane lines and the vehicles on a highway. This project was part of the Udacity SDC Nanodegree.

Projects that are alternatives of or similar to Sdc Vehicle Lane Detection

Animefacenotebooks
notebooks and some data for playing with animeface stylegan2 and deepdanbooru
Stars: ✭ 47 (+0%)
Mutual labels:  jupyter-notebook
Pytorch connectomics
PyTorch Connectomics: segmentation toolbox for EM connectomics
Stars: ✭ 46 (-2.13%)
Mutual labels:  jupyter-notebook
Meetupmaterials
Julia中文社区活动的各种材料 Meetup Materials
Stars: ✭ 47 (+0%)
Mutual labels:  jupyter-notebook
Spinal Bootcamp
SpinalHDL-tutorial based on Jupyter Notebook
Stars: ✭ 47 (+0%)
Mutual labels:  jupyter-notebook
Al Go Rithms
🎵 Algorithms written in different programming languages - https://zoranpandovski.github.io/al-go-rithms/
Stars: ✭ 1,036 (+2104.26%)
Mutual labels:  jupyter-notebook
Meta Prod2vec
Repository for experiments with MetaProd2Vec and related algorithms.
Stars: ✭ 47 (+0%)
Mutual labels:  jupyter-notebook
Slicing Cnn
The source code for our CVPR 2016 work "Slicing Convolutional Neural Network for Crowd Video Understanding".
Stars: ✭ 46 (-2.13%)
Mutual labels:  jupyter-notebook
Algorithmmap
建立你的算法地图:如何高效学习算法;算法工程师:从小白到专家
Stars: ✭ 47 (+0%)
Mutual labels:  jupyter-notebook
Play With Machine Learning Algorithms
Code of my MOOC Course <Play with Machine Learning Algorithms>. Updated contents and practices are also included. 我在慕课网上的课程《Python3 入门机器学习》示例代码。课程的更多更新内容及辅助练习也将逐步添加进这个代码仓。
Stars: ✭ 1,037 (+2106.38%)
Mutual labels:  jupyter-notebook
Tacorn
2018/2019 TTS framework integrating state of the art open source methods
Stars: ✭ 47 (+0%)
Mutual labels:  jupyter-notebook
Detectron2 instance segmentation demo
How to train Detectron2 with Custom COCO Datasets | DLology
Stars: ✭ 47 (+0%)
Mutual labels:  jupyter-notebook
Price Forecaster
Forecasting the future prices of BTC and More using Machine and Deep Learning Models
Stars: ✭ 47 (+0%)
Mutual labels:  jupyter-notebook
Multilateration
Multilateration in 2D: IoT/LoRaWAN Mass Surveillance
Stars: ✭ 47 (+0%)
Mutual labels:  jupyter-notebook
Sub Gc
Code repository for our paper "Comprehensive Image Captioning via Scene Graph Decomposition" in ECCV 2020.
Stars: ✭ 46 (-2.13%)
Mutual labels:  jupyter-notebook
Building Machine Learning Systems With Python Third Edition
Code repository for Building Machine Learning Systems with Python Third Edition, by Packt
Stars: ✭ 45 (-4.26%)
Mutual labels:  jupyter-notebook
Tensorflow Ipy
VM with the TensorFlow library from Google
Stars: ✭ 46 (-2.13%)
Mutual labels:  jupyter-notebook
Ligdream
Novel molecules from a reference shape!
Stars: ✭ 47 (+0%)
Mutual labels:  jupyter-notebook
Info8002 Large Scale Data Systems
Lectures for INFO8002 - Large-scale Data Systems, ULiège
Stars: ✭ 47 (+0%)
Mutual labels:  jupyter-notebook
Deep Learning For Natural Language Processing
Source Code for 'Deep Learning for Natural Language Processing' by Palash Goyal, Sumit Pandey and Karan Jain
Stars: ✭ 47 (+0%)
Mutual labels:  jupyter-notebook
Ai Team
清华大学AI自强项目课件以及代码下载,黑龙江大学机器学习小组学习历程。@清华大学数据院,感谢他们的课件以及源码
Stars: ✭ 47 (+0%)
Mutual labels:  jupyter-notebook

Vehicle and Lane Detection

In this project, vehicles are detected using a deep learning approach with a full-convolutional network and lane lines are detected using classic computer vision techniques.

This project was part of the Udacity Self-Driving Car Engineer program.

Check out the final video here:

Everything Is AWESOME


Vehicle detection

In the first step, the dataset is explored. It is comprised of images taken from the GTI vehicle image database, the KITTI vision benchmark suite, and examples extracted from the project video itself. There are two classes, cars and non-cars. The cars have a label of 1.0, whereas the non-cars have a label of 0.0:

There is a total number of 17760 samples available, each image is colored and has a resolution of 64x64 pixels. The dataset is split into the training set (90%, 15984 samples) and validation set (10%, 1776 samples). The distribution shows, that the dataset is very balanced, which is important for training the neural network later. Otherwise, it would have a bias towards one of the two classes. The distribution looks like this:

A neural network is used as deep-learning approach, to decide which image is a car and which is a no-car. The fully-convolutional network looks like this:

After training for 20 epochs, we can use this model to make a prediction on a random sample:

Next, we feed a full 1280 x 720 test image into our network:

The nice thing is that we can use the same network we trained with our 64x64 images to detect cars everywhere in the frame. This is because there are no fully-connected neurons at the end, just convolutional layer with max pooling and dropout. They scale to whatever the input is, so now we do not have a one-neuron output, but something like a heatmap. We can then draw bounding boxes on the hot positions:

There may be some false positives, so we create a heatmap and add a little threshold to it. Then we draw one bounding box for every detected heat source:


Lane detection

In this section I will explain, how I detected the two lane lines on the road for each frame using computer vision techniques.

This is the test image we will be using:

At first we apply a region-of-interest mask to remove everything except for the interesting section:

Then we apply a perspective transformation to better detect the lanes:

In the next step, a HSV color mask is applied to detect the white and yellow lanes:

A sobel filter is utilized to detect edges:

Afterwards, those two masks are combined:

A histogram is used to search for the starting points of the lanes on the bottom:

Those are handed over to a sliding window, which tracks the lanes to the top and creates a function approximation:

Finally, the functions are transformed back to our images and the area between the lanes is marked in blue:


Further read

There are a lot other fast approaches for the use of neural networks on the task of object detection. In 2014, the "R-CNN" was first announced, which adds region proposals to a CNN. R-CNN creates these bounding boxes, or region proposals, using a process called Selective Search. At a high level, Selective Search looks at the image through windows of different sizes, and for each size tries to group together adjacent pixels by texture, color, or intensity to identify objects.

To speed up and simplify R-CNNs, in 2015 a technique called "Fast R-CNN" was introduced. One year later, the region proposal was speeded up even further with "Faster R-CNN". The newest development from 2017 is "Mask R-CNN", which extends R-CNN for pixel level segmentation. Interesting approaches are also "SqueezeDet", a "SqueezeNet" adaptation for object detection in the field of autonomous driving and the "YOLO9000" object detection network, which is really fast and delivers astonishing results:

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].