Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
licenseplates
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Taddeüs Kroes
licenseplates
Commits
b5f8ca8a
Commit
b5f8ca8a
authored
Dec 21, 2011
by
Taddeus Kroes
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Updated results section in report.
parent
a1c13ef0
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
56 additions
and
48 deletions
+56
-48
docs/report.tex
docs/report.tex
+56
-48
No files found.
docs/report.tex
View file @
b5f8ca8a
...
@@ -285,9 +285,10 @@ of the LBP algorithm. There are several neighbourhoods we can evaluate. We have
...
@@ -285,9 +285,10 @@ of the LBP algorithm. There are several neighbourhoods we can evaluate. We have
tried the following neighbourhoods:
tried the following neighbourhoods:
\begin{figure}
[H]
\begin{figure}
[H]
\center
\center
\includegraphics
[scale=0.5]
{
neighbourhoods.png
}
\includegraphics
[scale=0.5]
{
neighbourhoods.png
}
\caption
{
Tested neighbourhoods
}
\caption
{
Tested neighbourhoods
}
\label
{
fig:tested-neighbourhoods
}
\end{figure}
\end{figure}
We name these neighbourhoods respectively (8,3)-, (8,5)- and
We name these neighbourhoods respectively (8,3)-, (8,5)- and
...
@@ -434,37 +435,38 @@ are not significant enough to allow for reliable classification.
...
@@ -434,37 +435,38 @@ are not significant enough to allow for reliable classification.
\subsection
{
Parameter
\emph
{
Neighbourhood
}}
\subsection
{
Parameter
\emph
{
Neighbourhood
}}
The neighbourhood to use can only be determined through testing. We did a test
We tested the classifier with the patterns given in figure
with each of these neighbourhoods, and we found that the best results were
\ref
{
fig:tested-neighbourhoods
}
. We found that the best results were reached
reached with the following neighbourhood, which we will call the
with the following neighbourhood, which we will call the (12,5)-neighbourhood,
(12,5)-neighbourhood,
since it has 12 points in a area with a diameter of 5.
since it has 12 points in a area with a diameter of 5.
\begin{figure}
[H]
\begin{figure}
[H]
\center
\center
\includegraphics
[scale=0.5]
{
12-5neighbourhood.png
}
\includegraphics
[scale=0.5]
{
12-5neighbourhood.png
}
\caption
{
(12,5)-neighbourhood
}
\caption
{
(12,5)-neighbourhood
}
\end{figure}
\end{figure}
\subsection
{
Parameters
$
\gamma
$
\&
$
c
$}
\subsection
{
Parameters
$
\gamma
$
\&
$
c
$}
The parameters
$
\gamma
$
and
$
c
$
are used for the SVM.
$
c
$
is a standard
The parameters
$
\gamma
$
and
$
c
$
are used for the SVM.
$
c
$
is a standard
parameter for each type of SVM, called the `soft margin'. This indicates how
parameter for each type of SVM, called the `soft margin'. This determines the
exact each element in the learning set should be taken. A large soft margin
amount of overlap that is allowed between two SVM-classes (which, in this case,
means that an element in the learning set that accidentally has a completely
are characters). Below, we will illustrate that the optimal value for
$
c
$
is
different feature vector than expected, due to noise for example, is not taken
32, which means that there is an overlap between classes. This can be explained
into account. If the soft margin is very small, then almost all vectors will be
by the fact that some characters are very similar to eachother. For instance, a
taken into account, unless they differ extreme amounts.
\\
`Z' is similar to a `7' and a `B' is similar to an `R'.
$
\gamma
$
is a variable that determines the size of the radial kernel, and as
such determines how steep the difference between two classes can be.
$
\gamma
$
is a variable that determines the shape of the radial kernel, and as
such determines how strongly the vector space of the SVM is transformed by the
Since these parameters both influence the SVM, we need to find the best
kernel function.
combination of values. To do this, we perform a so-called grid-search. A
grid-search takes exponentially growing sequences for each parameter, and
To find the optimal combination of values for these variables, we have
checks for each combination of values what the score is. The combination with
performed a so-called grid-search. A grid-search takes exponentially growing
the highest score is then used as our parameters, and the entire SVM will be
sequences for each parameter, and tests a classifier for each combination of
trained using those parameters.
values. The combination with the highest score is the optimal solution, which
will be used in the final classifier.
The results of this grid-search are shown in the following table. The values
The results of our grid-search are displayed in the following table. The values
in the table are rounded percentages, for better readability.
in the table are rounded percentages, for better readability.
\begin{tabular}
{
|r|r r r r r r r r r r|
}
\begin{tabular}
{
|r|r r r r r r r r r r|
}
...
@@ -502,23 +504,24 @@ The grid-search shows that the best values for these parameters are $c = 2^5 =
...
@@ -502,23 +504,24 @@ The grid-search shows that the best values for these parameters are $c = 2^5 =
\section
{
Results
}
\section
{
Results
}
The goal was to find out two things with this research: The speed of the
classification and the accuracy. In this section we will show our findings.
\subsection
{
Accuracy
}
\subsection
{
Accuracy
}
The main goal of this project is to find out if LBP is a suitable algorithm to
classify license plate characters.
Of course, it is vital that the recognition of a license plate is correct,
Of course, it is vital that the recognition of a license plate is correct,
almost correct is not good enough here. Therefore, we have to get the highest
almost correct is not good enough here. Therefore, the highest possible score
accuracy score we possibly can.
\\
must be reached.
\\
According to Wikipedia
\cite
{
wikiplate
}
accuracy score we possibly can. commercial license plate recognition software
According to Wikipedia
\cite
{
wikiplate
}
, commercial license plate recognition
score about
$
90
\%
$
to
$
94
\%
$
, under optimal conditions and with modern equipment.
that are currently on the market software score about
$
90
\%
$
to
$
94
\%
$
, under
optimal conditions and with modern equipment.
Our program scores an average of
$
93
\%
$
. However, this is for a single
Our program scores an average of
$
93
\%
$
. However, this is for a single
character. That means that a full license plate should theoretically
character. That means that a full license plate should theoretically
get a score of
$
0
.
93
^
6
=
0
.
647
$
, so
$
64
.
7
\%
$
. That is not particularly
get a score of
$
0
.
93
^
6
=
0
.
647
$
, so
$
64
.
7
\%
$
. That is not particularly
good compared to the commercial ones. However, our focus was on getting
good compared to the commercial ones. However, our focus was on getting
good scores per character
, and
$
93
\%
$
seems to be a fairly good
result.
good scores per character
. For us,
$
93
\%
$
is a very satisfying
result.
Possibilities for improvement of this score would be more extensive
Possibilities for improvement of this score would be more extensive
grid-searches, finding more exact values for
$
c
$
and
$
\gamma
$
, more tests
grid-searches, finding more exact values for
$
c
$
and
$
\gamma
$
, more tests
...
@@ -530,16 +533,21 @@ neighbourhoods.
...
@@ -530,16 +533,21 @@ neighbourhoods.
Recognizing license plates is something that has to be done fast, since there
Recognizing license plates is something that has to be done fast, since there
can be a lot of cars passing a camera in a short time, especially on a highway.
can be a lot of cars passing a camera in a short time, especially on a highway.
Therefore, we measured how well our program performed in terms of speed. We
Therefore, we measured how well our program performed in terms of speed. We
measure the time used to classify a license plate, not the training of the
measure the time used to normalize a character, create its feature vector and
dataset, since that can be done offline, and speed is not a primary necessity
classify it using a given classifier. The time needed to train the classifier
there.
needs not to be measured, because that can be done `offline'.
The speed of a classification turned out to be reasonably good. We time between
We ran performance tests for the (8,3)- and (12,5)-patterns, with Gaussian blur
the moment a character has been 'cut out' of the image, so we have a exact
scales of
$
1
.
0
$
and
$
1
.
4
$
respectively on the same set of characters. Because
image of a character, to the moment where the SVM tells us what character it
$
1
.
5
$
times an many pixel comparisons have to be executed (12 vs. 8), we
is. This time is on average
$
65
ms
$
. That means that this technique (tested on
suspected an increase of at least
$
0
.
5
$
times the time for the first test to be
an AMD Phenom II X4 955 CPU running at 3.2 GHz) can identify 15 characters per
the outcome of the second test. `At least', because the classification step
second.
will also be slower due to the increased size of the feature vectors
(
$
\frac
{
2
^{
12
}}{
2
^
8
}
=
2
^
4
=
16
$
times as slow). The tests resulted in
$
81
ms
$
and
$
137
ms
$
per character.
$
\frac
{
137
}{
81
}
=
1
.
7
$
, which agrees with our
expectations.
\\
Note: Both tests were executed using an AMD Phenom II X4 955 CPU processor,
running at 3.2 GHz.
This is not spectacular considering the amount of calculating power this CPU
This is not spectacular considering the amount of calculating power this CPU
can offer, but it is still fairly reasonable. Of course, this program is
can offer, but it is still fairly reasonable. Of course, this program is
...
@@ -549,7 +557,7 @@ possible when written in a low-level language.
...
@@ -549,7 +557,7 @@ possible when written in a low-level language.
Another performance gain is by using one of the other two neighbourhoods.
Another performance gain is by using one of the other two neighbourhoods.
Since these have 8 points instead of 12 points, this increases performance
Since these have 8 points instead of 12 points, this increases performance
drastically, but at the cost of accuracy. With the (8,5)-neighbourhood
drastically, but at the cost of accuracy. With the (8,5)-neighbourhood
we only need
1.6
ms seconds to identify a character. However, the accuracy
we only need
81
ms seconds to identify a character. However, the accuracy
drops to
$
89
\%
$
. When using the (8,3)-neighbourhood, the speedwise performance
drops to
$
89
\%
$
. When using the (8,3)-neighbourhood, the speedwise performance
remains the same, but accuracy drops even further, so that neighbourhood
remains the same, but accuracy drops even further, so that neighbourhood
is not advisable to use.
is not advisable to use.
...
@@ -656,7 +664,7 @@ can help in future research to achieve a higher accuracy rate.
...
@@ -656,7 +664,7 @@ can help in future research to achieve a higher accuracy rate.
\section
{
Faulty Classifications
}
\section
{
Faulty Classifications
}
\begin{figure}
[H]
\begin{figure}
[H]
\
center
\
hspace
{
-2cm
}
\includegraphics
[scale=0.5]
{
faulty.png
}
\includegraphics
[scale=0.5]
{
faulty.png
}
\caption
{
Faulty classifications of characters
}
\caption
{
Faulty classifications of characters
}
\end{figure}
\end{figure}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment