Lane Tracking in Adverse Visibility Conditions

Derek Hancock and Niko Escanilla


Motivation

To better enhance driving experience and prevent road accidents, the push for autonomous vehicles is only growing. An example of such a push is the Advanced Driver Assitance System. These are a set of technologies currently implemented in many vehicles and include: adaptive cruise control, GPS/traffic warnings, automated braking, lane keep assist.

Lane detection is a key area in this surge for autonomous driving and was the topic we chose to focus on. Specifically, we were curious to see if there was a robust solution for detection in adverse visibility conditions. These are conditions where illumination or inclement weather may impede the driver from clearly seeing the lane and road. For the purpose of this project, we focused on illumination problems (e.g. shadows, sun glare) using solely camera (RGB) information.

Project proposal.

Approaches

Preliminary Approach

We first researched how basic lane detection works using RGB images and found a common, general pipeline across the different resources that works on simple images. The sequence of steps can be summarized below:

Following these steps provided good results on "highway" data (i.e. images in which the road and lanes are obvious), but obviously is not robust enough to find lanes perturbed by changes in illumination (or any type of noise).

 
Simple pipeline works fine in easy and clear highway data
Unable to detect the lane covered by dark shadows
 

It is difficult because the shadows create edges that make it hard to detect lane edges. If the parameters are too restrictive, then few lane edges are found. If they are too loose, the lane is covered by shadow edges. In either case, it is nearly impossible to detect the edge. Obviously we need a more robust solution that can adapt to changing levels of illumination.

 
Too restrictive parameters result in a canny image with not enough information to detect the lane
Loose parameters result in a canny image that is too noisy
The noise makes it nearly impossible to detect the lane

Mid-term report.

Main Approach

To combat illumination changes, we followed the approach used in "Gradient-Enhancing Conversion for Illumination-Robust Lane Detection" [1]. Two key ideas were proposed: gradient-enhancing conversion and adaptive Canny edge detection. We also added in lane continunity from "Vision-based lane departure detection system in urban traffic scenes" [2]. Additionally, we developed some other custom lane filters in order to improve results.

 
Pipeline Overview
 

Below is a summary of our pipeline:

Implementation

Data

The data used for our implementation was from Udacity's Open Source Self-Driving Car repository. The dataset we used contained a total of 5648 images and contained various lighting conditions (e.g., daytime, shadows). More details about the data can be found here.

Repository

Our downloadable source and executable code can be found here.

Results

After running our pipeline on the Udacity dataset, we randomly sampled 500 images to compute accuracy measurements. [1] discussed how they computed "accuracy" by defining a term they referred to as detection rate. That is, they manually counted the number of correct detected lanes, where a correct prediction is when the predicted lane lies on the true lane markings and its curvature is in the same direction. Although this is a sound measurement, we wanted to be comprehensive in our analyses. In turn, we define true positive, false positive, and false negatives as follows:

  • True positive: correctly predicts the lane (i.e. predicted lane marking lies on true lane marking and curves in the same directions).
  • False positive: incorrectly predicts that there is a lane (e.g. predicts the grass on the side of the road is a lane).
  • False negative: incorrectly predicts that there is no lane when, indeed, there is one.
  • Note that each frame may contain one or more true lane markings. Therefore, after manually labelling the 500 frames with true positive, false positive, and/or false negative labels, our final accuracy measurements were the following:

  • Precision: 0.8995
  • Recall: 0.8192
  • F1-Score: 0.8575
  • Here is a video of the results:

     

     

    External Link: https://www.youtube.com/watch?v=4Byf-bHOrDs

    Discussion

    There were several roadblocks we faced with this project. For example, it was, in and of itself, quite difficult to find sequential data for this task. In addition, the data that we ended up using for our implementation was not as HD as we would have liked. In terms of implementation, our pipeline at first outputted many candidate lanes and so we incorporated several of our own filters (e.g. eliminating near-horizontal lines) and another paper's proposed method of lane continuity [2]. It took a significant amount of effort to engineer this project since we had no open-source code to work from for this approach and the paper was vague on some implementation details.

    With all that being said, we believe we obtained comparable results to [1], given that their measurement is more open to interpretation (according to [1], their average detection rate for daytime data was 94.79%.). They also used a different dataset that we did not have access to that likely had a different distribution. Looking ahead, it would be interesting to see if our results change dramatically if we were to add temporal information in training. With temporal information, we could perhaps add more weight to more recent previous images. This method finds weights based on LDA and so it finds a simple linear combination of our R, G, and B features that best separates the class labels. Perhaps using a recurrent neural network with this temporal information may be more beneficial (albeit we may sacrific in runtime).

    Another future direction would be to test on more adverse visibility conditions. As previously mentioned, it was difficult to find sequential data in the first place. However, we would like to see how well our pipeline works in situations where there is heavy rain or snow. Lastly, in practice, we would ideally combine other sensor information for lane detection. Information such as light detection and ranging, GPS, and vehicle sensor information in combination with this approach would likely produce even better results.

    References

    [1] H. Yoo, U. Yang, and K. Sohn. Gradient-enhancing conversion for illumination-robust lane detection. IEEE Transactions on Intelligent Transportation Systems, 14(3):1083- 1094, Sept 2013.

    [2] Y. C. Leng and C. L. Chen. Vision-based lane departure detection system in urban traffic scenes. In 2010 11th International Conference on Control Automation Robotics Vision, pages 1875{1880, Dec 2010.