- A submission by Jai Lad
The goals / steps of this project are the following:
- Perform a Histogram of Oriented Gradients (HOG) feature extraction on a labeled training set of images and train a classifier Linear SVM classifier
- Optionally, you can also apply a color transform and append binned color features, as well as histograms of color, to your HOG feature vector.
- Implement a sliding-window technique and use your trained classifier to search for vehicles in images.
- Run your pipeline on a video stream and create a heat map of recurring detections frame by frame to reject outliers and follow detected vehicles.
- Estimate a bounding box for vehicles detected.
- writeup.md - Report writeup file.
- output_images folder - Folder with various images as generated from the pipeline.
- test_video - Video of the output from the pipeline for the project video. Alternative Youtube link is here.
- pipeline_video - Video of the output from the pipeline for the project video. Alternative Youtube link is here.
- project.ipynb - Jupyter notebook used to implement the pipeline.
- trained models - Folder with a few trained Models which were generated from the training pipeline
-
The process of finding optimal detection parameters was very manual. I would like to find a better way to automate this process. One good aspect of this process was that it really drives home the point of feature engineering capabilities of neural network(s), as I reflect on the process of crafting the 8000 column+ feature vector for this project.
-
Jupyter environment was running out of memory easily when I tried to train the model with the entire set of available features ( length of a single feature > 8000 ), and when I tried to use all available samples. Therefore, for the longest time, I struggled with training the pipeline with the complete set of features and samples. This was resolved by migrating the training code to a Python pipeline. I have since made this my default workflow, as in, initial EDA ( exploratory data analysis ) and code validation in Jupyter for a small data set, and subsequent migration to a Python notebook when running the code on large scale data.
-
SVM model(s) train much faster than Neural Network(s) !
-
SVM model(s) also have a smaller on-Disk footprint relative to Neural Networks. The model for this project stands at 266 KB.
-
To handle the potential difference in terms of pixel strengths ( e.g. between o - 1 versus 0 - 255), I captured the min max range(s) of pixel strengths dynamically.
-
The detection capacity of the pipeline at far off distances is not good, presumably because of the underlying data ( or the scale at which I am searching).