Rozpoznawanie numerów startowych

Transkrypt

Rozpoznawanie numerów startowych
Rozpoznawanie
numerów
startowych
na zdjęciach z zawodów
sportowych
Łukasz Wieczorek, inf75971
Spis treści
Analiza wymagao ................................................................................................................................3
Opis problemu ................................................................................................................................3
Cel projektu ....................................................................................................................................3
Dane ...............................................................................................................................................3
Dane wejściowe ..........................................................................................................................3
Dane wyjściowe ..........................................................................................................................3
Metodologia .......................................................................................................................................3
Wykrywanie cyfr .............................................................................................................................3
Analiza krawędzi .........................................................................................................................4
Analiza obszaru ...........................................................................................................................5
Rozpoznawanie cyfr ........................................................................................................................6
Sied neuronowa ..........................................................................................................................6
Zbiór uczący ................................................................................................................................6
Rozmiar wzorca i testy................................................................................................................6
Lista rozpoznanych cyfr ...............................................................................................................7
Grupowanie cyfr w numery startowe ..............................................................................................7
Architektura systemu ..........................................................................................................................8
Ogólna architektura systemu ..........................................................................................................8
Sied neuronowa ..............................................................................................................................8
Testy ...................................................................................................................................................8
Podsumowanie ................................................................................................................................. 13
Wnioski ......................................................................................................................................... 13
Dalszy rozwój ................................................................................................................................ 13
Analiza wymagań
Opis problemu
W trakcie największych imprez sportowych wykonywane są tysiące zdjęd uczestników. Przeglądnięcie
wszystkich zdjęd i odnalezienie na nich siebie lub interesującej nas osoby jest często bardzo trudne i
wymaga sporej ilości czasu.
W ostatnim czasie na rynku pojawiła się także znaczna liczba firm specjalizująca się w obsłudze
fotograficznej zawodów sportowych (głównie biegów), które umożliwiają kupno interesujących zdjęd.
Wyszukanie zdjęd często możliwe jest w bardzo łatwy sposób poprzez podanie numery startowego.
Przypisanie każdemu zdjęciu numerów startowych zawodników znajdujących się na nim jest jednak
procesem długotrwałym i wymagających zaangażowania wielu osób.
Cel projektu
Projekt ma na celu umożliwid automatyczne przypisanie danemu zdjęciu numerów startowych
zawodników znajdujących się na nim.
Dane
Dane wejściowe
Zdjęcia przedstawiające uczestników zawodów wraz z numerami startowymi. Numer startowy
powinien składad się wyłącznie z czarnych cyfr na białym tle.
Rysunek 1 Przykładowe dane wejściowe – zdjęcia z zawodów lekkoatletycznych.
Dane wyjściowe
Numery startowe zawodników znajdujących się na danym zdjęciu.
Metodologia
Proces rozpoznawania numerów startowych składa się z trzech faz.
Wykrywanie cyfr
W celu wykrycia obszaru zawierającego cyfrę obraz skanowany jest prostokątem o stosunku boków
17 do 30, kolejno o wymiarach:
20 x 33 piksele,
25 x 41 pikseli,
30 x 50 pikseli,
35 x 58 piksele,
40 x 66 piksele,
45 x 75 pikseli,
50 x 83 pikseli,
55 x 91 pikseli.
Ze względu na zapewnienie jak największej dokładności wykrywania cyfr obszar skanowany jest co 1
piksel. Niestety wiąże się to z potrzebą analizy bardzo dużej liczby obszarów, dlatego priorytetem
było stworzenie jak najszybszej funkcji wykrywającej cyfry.
Działanie zaimplementowanej funkcji składa się z dwóch etapów: analizy krawędzi oraz analizy
obszaru. Najpierw wyznaczana jest dla każdego obszaru liczba białych punktów na krawędziach
prostokąta. Następnie jeśli otrzymane wyniki spełniają ustalony warunek sprawdzane jest czy
krawędzie nie przecinają czarnych obszarów oraz jaki procent całego obszaru zajmują czarne punkty.
Analiza krawędzi
Analiza krawędzi umożliwia w szybki sposób sprawdzenie czy w danym obszarze może znajdowad się
cyfra. Procedura wymaga jedynie wyznaczenia liczby punktów na krawędziach, których składowe
wartości RGB przekraczają ustalony próg (za próg została przyjęta wartośd 160).
Liczba punktów zostaje wyznaczona oddzielnie dla dolnej, górnej, lewej i prawej krawędzi. Następnie
odbywa się sprawdzane czy ich liczba przekracza 60% całkowitej liczby punktów znajdujących się
odpowiednio na krawędzi pionowej lub poziomej. Jeśli warunek jest spełniony następuje przejście do
procedury analizy obszaru.
Analiza krawędzi jest kluczowa ze względu na wydajnośd aplikacji. Zdjęcie wielkości 800 na 600 pikseli
wymaga przeanalizowania prawie 4000000 obszarów, dlatego konieczna była jak największa
optymalizacja.
Wyznaczone liczby białych punktów na dolnej i prawej krawędzi dla poszczególnych obszarów zostają
zapamiętane. Dzięki temu dla kolejnych obszarów nie ma konieczności obliczania liczby punktów na
górnej i lewej krawędzi, gdyż wykorzystane zostają zapamiętane wartości.
Rysunek 2 Działanie procedury zapamiętującej liczbę białych punktów.
Procedura skanowania dla danego zdjęcia wykonywana jest aż 8 razy dla poszczególnych wielkości
obszaru. Za każdym razem konieczne jest obliczenie liczby białych punktów poprzez przeglądnięcie
wszystkich punktów na krawędziach i zsumowanie spełniających ustalony warunek.
Wymiary obszarów są wielokrotnościami liczby 5, dlatego możliwe jest przyspieszenia procedury
poprzez wstępne obliczenie i zapamiętanie liczby białych punktów leżących na odcinkach o długości 5
pikseli. Dzięki temu nie trzeba przeglądad wszystkich punktów, a jedynie zsumowad odpowiednie
odcinki.
Rysunek 3 Działanie procedury zapamiętującej liczbę białych punktów na odcinkach o długości 5 pikseli.
Analiza obszaru
Analiza obszaru wymaga przeglądnięcia całego obszaru i wyznaczenia liczby czarnych punktów.
Dodatkowo sprawdzane jest czy na krawędziach znajdują się czarne punktu, które świadczyłyby o
przecięciu cyfry przez krawędzie obszaru.
W przypadku gdy stosunek liczby czarnych punktów do liczby wszystkich punków obszaru przekracza
10% oraz na krawędziach nie znajdują się czarne punkty obszar uznawany jest za taki, na którym
znajduje się cyfra.
Procedura analizy obszaru wykorzystywana jest na dużo mniejszej liczbie obszarów niż analiza
krawędzi i w dużej mierze zależy od specyfiki zdjęcia. Zdjęcia, na których znajduje się dużo jasnych,
białych obszarów będą przetwarzane wolniej niż obrazy zawierające jedynie białe tło numeru
startowego.
Rysunek 4 Zdjęcie z niewielką oraz dużą liczbą jasnych obszarów.
Rozpoznawanie cyfr
Sieć neuronowa
W celu rozpoznania cyfry została wykorzystana sied neuronowa Neocognitron. Jest to sied
wielowarstwowa, hierarchiczna z połączeniami pomiędzy ograniczonymi obszarami.
Pierwotnym przeznaczeniem sieci było rozpoznawania ręcznie pisanych znaków, w tym także
chioskich. Sied Neocognitron jest niewrażliwa na rozmiar, obroty i przesunięcia znaków.
Rysunek 5 Typowa architektura sieci Neocognitron.
Zbiór uczący
Zbiór uczący składał się z 113 zdjęd z zawodów lekkoatletycznych. Ze zdjęd wyodrębnione zostały 374
wzorce cyfr. Poszczególne klasy zawierały:
cyfra 0 – 32 wzorce,
cyfra 1 – 69 wzorców,
cyfra 2 – 71 wzorców,
cyfra 3 – 22 wzorce,
cyfra 4 – 43 wzorce,
cyfra 5 – 40 wzorców,
cyfra 6 – 21 wzorców,
cyfra 7 – 11 wzorców,
cyfra 8 – 39 wzorców,
cyfra 9 – 31 wzorców.
Rysunek 6 Przykładowe wzorce cyfr.
Rozmiar wzorca i testy
Rozmiar wzorca został ustalony na podstawie przeprowadzonych testów na 30 na 45 pikseli.
Umożliwia do zachowanie bardzo wysokiej trafności klasyfikacji przy względnie małym rozmiarze
obszaru co przekłada się na szybkośd działania. Poniżej przedstawione zostały wyniki testów.
Zbiór uczący składał się z 274 wzorców, natomiast zbiór testujący z pozostałych 100.
Rozmiar wzorca
50 na 75 pikseli
40 na 60 pikseli
30 na 45 pikseli
20 na 30 pikseli
Trafnośd klasyfikacji
99%
99%
99%
76%
Tabela 1 Trafnośd klasyfikacji dla wzorców o różnym rozmiarze.
Do nauki sieci neuronowej wykorzystanej ostatecznie w projekcie został użyty zbiór uczący
zawierający wszystkie dostępne wzorce.
Lista rozpoznanych cyfr
Sied neuronowa dla danego obszaru zwraca przypisaną kategorie oraz prawdopodobieostwo
przynależności do klasy. Jeśli prawdopodobieostwo przekracza 71% rozpoznana cyfra uznawana jest
za poprawną i zostaje dodana do listy rozpoznanych cyfr. Po przeanalizowaniu całego zdjęcia
wywoływana jest procedura grupowanie cyfr w numery startowe.
Lista rozpoznanych cyfr wykorzystywana jest także w trakcie wykrywania cyfr. Wraz z cyfrą do listy
rozpoznanych cyfr dodawana jest informacja o współrzędnych lewego górnego wierzchołka obszaru,
w obrębie którego wykryto cyfrę. Umożliwia to pominięcie w trakcie analizowania obszaru, którego
otoczenie lewego górnego wierzchołka o promieniu wynoszącym 70% długości krótszej krawędzi
zawiera punkt znajdujący się na liście rozpoznanych cyfr.
Na rysunku poniżej czerwonym prostokątem został zaznaczony obszar, w którym została rozpoznana
cyfra oraz został on umieszczony na liście rozpoznanych cyfr. Niebieski prostokąt oznacza obszar,
który nie zostanie przeanalizowany, gdyż otoczenie jego lewego górnego wierzchołka zawiera lewy
górny wierzchołek czerwonego prostokąta.
Rysunek 7 Rysunek obrazujący działanie listy rozpoznanych cyfr.
Powyższa procedura nie tylko skraca czas analizy zdjęcia, ale także uniemożliwia pojawienie się na
liście rozpoznanych cyfr kilka razy tej samej cyfry.
Grupowanie cyfr w numery startowe
Grupowanie cyfr w numery startowe odbywa się poprzez posortowanie wszystkich cyfr znajdujących
się na liście rozpoznanych cyfr według ich współrzędnej x. Następnie jeśli odległośd między
współrzędnymi x i y kolejnych cyfr jest mniejsza niż 80 pikseli to z cyfr tworzony jest numer.
Architektura systemu
Ogólna architektura systemu
Stworzona aplikacja składa się z modułów odpowiedzialnych za wykrycie cyfr, rozpoznawanie cyfr
oraz grupowanie cyfr w numery startowe. Wszystkie moduły zostały napisane w C++ z
wykorzystaniem biblioteki OpenCV oraz środowiska programistycznego Visual Studio 2008.
W ramach projektu została również wykonana aplikacja umożliwiająca w łatwy i szybki sposób
wygenerowanie zbioru uczącego. Umożliwia ona stworzenie wzorca poprzez zaznaczenie
odpowiedniego obszaru na zdjęciu i podanie kategorii (cyfry od 0 do 9).
Sieć neuronowa
W projekcie została wykorzystana sied neuronowa Neocognitron, której implementacja znajduje się
na stronie http://visiome.neuroinf.jp/modules/xoonips/detail.php?item_id=5738. Sied stworzona
przez Kunihiko Fukushima pierwotnie wykorzystana była do rozpoznawania ręcznie pisanych znaków
zapisanych w specyficznym formacie. Sied wymagała zatem dostosowania do formatu zapisu
przetwarzanych zdjęd oraz wymogów projektu.
Wykorzystana implementacja zakłada dynamiczne tworzenie sieci w trakcie procesu uczenia.
Umożliwia to automatyczne dostosowanie architektury do specyfiki danych.
Testy
Do testów aplikacji wykorzystany został zbiór 47 zdjęd. Dla każdego zdjęcia określona została:
liczba poprawnie rozpoznanych cyfr,
liczba obszarów bez cyfry rozpoznanych jako cyfra,
liczba wszystkich cyfr na zdjęciu,
liczba poprawnie rozpoznanych numerów startowych (numer uznawany jest za poprawny
także w przypadku gdy częśd numeru jest zakryta w sposób uniemożliwiający jego pełne
rozpoznanie),
liczba częściowo rozpoznanych numerów startowych,
liczba niepoprawnie rozpoznanych numerów,
liczba wszystkich numerów na zdjęciu,
czas przetwarzania zdjęcia w sekundach.
Rysunek 8 Zdjęcia przedstawiające częściowo zakryty numer startowy.
Nr
zdjęcia
Liczba
poprawnie
rozpoznanych
cyfr
Liczba
obszarów bez
cyfry
rozpoznanych
jako cyfra
Liczba
cyfr na
zdjęciu
Liczba
poprawnie
rozpoznanych
numerów
Liczba
częściowo
rozpoznanych
numerów
Liczba
niepoprawnie
rozpoznanych
numerów
Liczba
numerów
na zdjęciu
Czas [s]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
1
3
3
3
6
2
2
4
3
2
1
2
2
1
2
2
4
4
2
2
2
2
3
5
2
4
5
3
2
4
3
3
5
3
3
3
2
1
1
1
1
3
3
3
3
2
1
1
0
0
1
0
0
0
0
0
0
0
1
0
0
0
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
3
0
0
0
0
1
0
0
0
0
0
0
1
3
6
3
3
3
2
5
3
3
1
2
2
2
3
2
4
4
3
3
3
3
3
9
3
7
9
4
3
6
3
3
6
3
3
3
3
1
2
1
1
3
3
3
3
2
1
1
1
1
1
0
0
1
1
2
1
1
1
1
1
0
1
2
2
0
0
0
0
1
1
0
1
1
1
0
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
0
0
2
0
3
1
1
0
0
1
0
0
0
0
0
0
0
1
0
0
0
2
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
1
0
0
0
0
0
0
1
1
3
1
3
1
1
2
2
2
1
1
1
2
1
1
2
2
1
1
1
1
1
3
1
3
3
2
1
2
1
1
2
1
1
1
1
1
2
1
1
1
1
1
1
1
1
12,953
7,437
26,422
36,891
134,531
17,688
32,312
6,484
6,578
129,484
13,250
21,500
14,344
30,625
9,218
14,407
8,281
15,938
11,938
33,125
5,500
10,343
24,437
7,828
8,469
33,781
38,125
23,781
11,421
31,140
12,203
62,609
46,234
28,281
101,250
62,140
31,734
7,109
4,391
4,594
63,703
64,953
13,625
61,860
6,500
33,079
38,579
1
0
0
0
0
0
0
1
0
0
0
1
1
1
1
0
2
1
1
1
0
1
0
0
0
1
0
0
0
1
0
0
0
0
0
0
0
0
0
0
Tabela 2 Wyniki przeprowadzonych testów dla poszczególnych zdjęd.
Liczba poprawnie
rozpoznanych cyfr
Liczba obszarów bez
cyfry rozpoznanych jako
cyfra
Liczba cyfr na zdjęciu
Stosunek liczby poprawnie
rozpoznanych cyfr do liczby
wszystkich cyfr
124
9
152
81,6%
Tabela 3 Wyniki sumaryczne dla cyfr.
Wyniki sumaryczne dla cyfr
152
160
140
124
120
100
80
60
40
20
9
0
Liczba poprawnie
rozpoznanych cyfr
Liczba obszarów bez cyfry
rozpoznanych jako cyfra
Liczba cyfr na zdjęciu
Poprawnie rozpoznane i nierozpoznane cyfry
18%
Liczba poprawnie rozpoznanych
cyfr
82%
Liczba nierozpoznanych cyfr
Liczba
poprawnie
rozpoznanych
numerów
Liczba
częściowo
rozpoznanych
numerów
Liczba
niepoprawnie
rozpoznanych
numerów
Liczba
numerów
na zdjęciu
Stosunek liczby
poprawnie
rozpoznanych
numerów do liczby
wszystkich
numerów
Stosunek sumy liczby
poprawnie i liczby
częściowo
rozpoznanych
numerów do liczby
wszystkich numerów
40
20
8
67
59,7%
89,6%
Tabela 4 Wyniki sumaryczne dla numerów.
Wyniki sumaryczne dla numerów
80
67
70
60
50
40
40
30
20
20
8
10
0
Liczba poprawnie
rozpoznanych
numerów
Liczba częściowo
rozpoznanych
numerów
Numery poprawnie
rozpoznane i
nierozpoznane
Liczba niepoprawnie
rozpoznanych
numerów
Liczba numerów na
zdjęciu
Numery poprawnie i
częściowo rozpoznane
oraz nierozpoznane
10%
40%
60%
90%
Liczba poprawnie rozpoznanych numerów
Liczba poprawnie i częściowo
rozpoznanych numerów
Liczba nierozpoznanych numerów
Liczba nierozpoznanych numerów
Powyższe wyniki pokazują, że trafnośd rozpoznawania cyfr wynosi blisko 82%. Natomiast trafnośd
rozpoznawania numerów startowych – 60%, a uwzględniając częściowo rozpoznane numery – 90%.
Jest to wartośd zadowalająca, gdyż w wielu przypadkach ze względu na zasłonięcie części lub całej
cyfry nie ma możliwości rozpoznania kompletnego numeru.
Średni czas przetwarzania zdjęcia wynosi 30,2 sekundy. Tak duża wartośd wyniki z faktu powolnego
przetwarzania zdjęd z dużą liczbą jasnych obszarów, których analiza trwa nawet ponad 2 minuty, a
także wykorzystania do testów komputera z procesorem zdecydowanie odbiegającym od obecnych
standardów (Pentium M 1,60 GHz).
Rysunek 9 Zdjęcie numer 18 oraz 26.
Rysunek 10 Zdjęcie numer 30 oraz 35.
Rysunek 11 Zdjęcie numer 36 oraz 43.
Podsumowanie
Wnioski
Stworzona aplikacja umożliwia przypisanie danemu zdjęciu numerów startowych zawodników
znajdujących się na nim. Przeprowadzone testy świadczą o dużej skuteczności. Jednakże analiza
pojedynczego zdjęcia zajmuje średnio 30 sekund, co jest wynikiem niezadowalającym. Konieczna
wydaje się zatem dalsza optymalizacja i wykorzystanie szybszych metod przetwarzania i
rozpoznawania obrazu.
Dalszy rozwój
Jednym z kierunków dalszego rozwoju aplikacji jest wykorzystanie programowania współbieżnego.
Obecnie czas analizowania pojedynczego zdjęcia jest znaczny, a poprzez wykorzystanie
współbieżności możliwe byłoby jego skrócenie. Doskonały do równoległego wykonania wydaje się
byd etap skanowania zdjęcia obszarami o różnej wielkości.
Dalszy rozwój możliwy jest także poprzez stworzenie większego zbioru uczącego. Obecny zbiór
zawiera 374 elementy przy czym liczba wzorców dla poszczególnych kategorii waha się od 11 do aż
71. Pożądane wydaje się zatem utworzenie zbioru uczącego liczącego nawet kilka tysięcy wzorców z
zachowaniem zbliżonej liczby elementów w poszczególnych klasach.

Podobne dokumenty