(2019) (Plus - Ai) Lane Marking Segmentation
(2019) (Plus - Ai) Lane Marking Segmentation
● Project Description
● Background Research
● Experiments
● Results
● Conclusion
● Internship Highlights
Project
Description
Existing Problem
● Currently the training data for our lane detection model is very archaic,
consisting of only points that make up a polyline.
● This kind of training data is not semantically rich, and, thus, limits the
theoretical capabilities of our lane detection model.
a. Dashed lanes are labeled in the same way as solid lanes.
b. The individual dashes that make up a dashed lane are not extracted.
c. Important, non-lane-line road markings like crosswalks and arrows are completely ignored.
Case Study 1
Aforementioned problems:
Examples of how our lane detection model will improve with a new type of data
Background
Research
Region Grow
This technique is the simplest and most naive image segmentation method,
and only works when the foreground object's pixel values are close to each
other and, as a collection, far away from the background pixels' values, for
some measure of pixel value distance.
Naive Region Grow
Graphs can also be directed and weighted; each of these two properties will
change a graph G’s mathematical representation.
No matter what graph species you have, there’s a notion of a cut or binary
partition of your graph.
Cut Values
For each graph cut, you separate the vertices of you graph into two disjoint
sets. There is a notion of the value of a cut; for unweighted graphs this is just
the number of edges cut and for weighted graphs this is the sum of the weights
of the cut edges.
Minimum Cuts
Because we have a human in the loop during annotation, we don’t want a static
algorithm. Instead, we want something that can take in user input to change the
extraction result. Our previous formulation doesn’t really allow for that.
1. In order to change the graph cut result, we need to change the weights
connecting the nodes of our graph.
Green lines increase
2. Thus, user interaction must be changing the weights. these weight values.
3. Green lines connect nodes more strongly to the source.
4. Red lines connect nodes more strongly to the sink.
These weights are determined from previous
methods (location, color similarity, etc.)
This requires:
The weight of any given cut in a graph is roughly proportional to the number of
edges in the cut set. Thus, minimum cut techniques used for image
segmentation and foreground extraction will prefer to remove as few edges as
possible and thereby have a shrinking bias.
This bias means that it will tend to give us a smaller foreground object that we
actually want. There are a variety of ways to combat this, including normalized
cuts and alternative formulations (i.e. Markov Random Fields).
Experiments
At first I tried to build a server from scratch
using Python’s http module.
● Writing servers
● Debugging in Python
● Getting familiar with OpenCV
● Bugfree optimizations for my functions
that I eventually copied into my current
tool
Then I embarked on a long and hard journey to learn web development.
Version 1
Version 2
Version 3
但是我还是稳住了
End Product
Results
Original 1
Original 2
Original 3
Conclusion
What has been achieved
A fully functional prototype for a fine grain lane marking annotation tool with: