Monitorowanie i Diagnostyka w Systemach Sterowania · Stanford University Sikora M. Inteligentny...

205
Monitorowanie i Diagnostyka w Systemach Sterowania Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania Dr inż. Michał Grochowski

Transcript of Monitorowanie i Diagnostyka w Systemach Sterowania · Stanford University Sikora M. Inteligentny...

Monitorowanie i Diagnostyka w Systemach Sterowania

Wydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Dr inż. Michał Grochowski

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii i Systemów Sterowania

Rozpoznawanie wzorców i twarzy w wykładzie wykorzystano materiały z następujących źródeł:

Blog: Data Science and Robots by Brandon Rohrer, http://brohrer.github.io/blog.htmlBłaszkowski P. Rozpoznawanie obiektów dynamicznych przy wykorzystaniu sztucznych sieci neuronowych.

Praca inżynierska, Politechnika Gdańska 2012. Promotor dr inż. Michał GrochowskiBłaszkowski P. Wykrywanie, rozpoznawanie i śledzenie ruchomych obiektów poprzez niezależną platformę monitorującą,

przy wykorzystaniu sztucznych sieci neuronowych. Praca magisterska, Politechnika Gdańska 2013. Promotor dr inż. Michał Grochowski

CS231n: Convolutional Neural Networks for Visual Recognition, 2016. Stanford UniversitySikora M. Inteligentny system rozpoznawania twarzy w czasie rzeczywistym – implementacja sprzętowa.

Praca magisterska, Politechnika Gdańska 2012. Promotor dr inż. Michał GrochowskiWenecki M. Systemy wizyjne do przetwarzania i rozpoznawania obrazów przy wykorzystaniu sztucznych sieci

neuronowych. Praca magisterska, Politechnika Gdańska 2008. Promotor dr inż. Michał Grochowski

Opracował: dr inż. Michał Grochowski

Monitorowanie i Diagnostyka w Systemach Sterowania

na studiach II stopnia specjalności: Systemy Sterowania i Podejmowania Decyzji

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Systemy Inżynierii Wiedzy: Rozpoznawanie wzorców i twarzy

Wprowadzenie

Zadanie sprowadza się do podania obrazów na wejście dedykowanego klasyfikatoranp. sieci neuronowej czy SVM, odpowiednim jego nauczeniu (tryb off line)i wykorzystaniu do bieżącego rozpoznawania/identyfikacji.

Rozpoznawanie/klasyfikacja wzorców

Ale …

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Monitorowanie i diagnostyka w systemach sterowania

Wprowadzenie

źródło: CS231n: Convolutional Neural Networks for Visual Recognition, 2016. Stanford University

Wyzwania (problemy) związane z rozpoznawaniem/klasyfikacją wzorców

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Monitorowanie i diagnostyka w systemach sterowania

Wprowadzenie

Wyzwania (problemy) związane z rozpoznawaniem/klasyfikacją wzorców

• zdjęcia np. w standardzie RGB,więc:

• 3 macierze, każda o rozmiarzenp.: 1280x1024 pikseli co daje:3x1 310 720 = 3 932 160 !!!;

• w każdej z macierzy zakodowanekolory w postaci wartości z zakresu 0-255;

• kamera przesyła próbki np. 60klatek na sekundę.

Powstaje zadanie praktycznie numerycznie nierozwiązywalne, o nikłej przydatności dla użytkownika

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Monitorowanie i diagnostyka w systemach sterowania

Wprowadzenie

źródło: CS231n: Convolutional Neural Networks for Visual Recognition, 2016. Stanford University

Wyzwania (problemy) związane z rozpoznawaniem/klasyfikacją wzorców

• Perspektywa kamery

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Monitorowanie i diagnostyka w systemach sterowania

Wprowadzenie

źródło: CS231n: Convolutional Neural Networks for Visual Recognition, 2016. Stanford University

Wyzwania (problemy) związane z rozpoznawaniem/klasyfikacją wzorców

• Oświetlenie

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Monitorowanie i diagnostyka w systemach sterowania

Wprowadzenie

źródło: CS231n: Convolutional Neural Networks for Visual Recognition, 2016. Stanford University

Wyzwania (problemy) związane z rozpoznawaniem/klasyfikacją wzorców

• „Zniekształcenia”

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Monitorowanie i diagnostyka w systemach sterowania

Wprowadzenie

źródło: CS231n: Convolutional Neural Networks for Visual Recognition, 2016. Stanford University

Wyzwania (problemy) związane z rozpoznawaniem/klasyfikacją wzorców

• „Przeszkody”

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Monitorowanie i diagnostyka w systemach sterowania

Wprowadzenie

źródło: CS231n: Convolutional Neural Networks for Visual Recognition, 2016. Stanford University

Wyzwania (problemy) związane z rozpoznawaniem/klasyfikacją wzorców

• Tło

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Monitorowanie i diagnostyka w systemach sterowania

Wprowadzenie

źródło: CS231n: Convolutional Neural Networks for Visual Recognition, 2016. Stanford University

Wyzwania (problemy) związane z rozpoznawaniem/klasyfikacją wzorców

• Różnorodność

Wprowadzenie

Ponadto …

• obrazy mogą być różnych rozmiarów (różna odległość obiektów od kamery);

• obrazy mogą być w różnej orientacji.

Konieczne staje się odpowiednie przetwarzanie wstępne !

Wyzwania (problemy) związane z rozpoznawaniem/klasyfikacją wzorców

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Przetwarzanie wstępne obrazów

• Model RGB;

• Model HSV;

• Model CMY (CMYK);

• Model skali szarości;

• Model binarny;

• I inne …

Przestrzeń barw

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Przetwarzanie wstępne obrazów

• Model RGB (Red – czerwony, Green – zielony, Blue – niebieski)

Przestrzeń barw

źródło: http://help.adobe.com/pl_PL/illustrator/cs/using/WS714a382cdf7

d304e7e07d0100196cbc5f-6295a.html

Dużą część kolorów z widzialnego widma światła można otrzymać poprzezłączenie ze sobą w różnych proporcjach i nasyceniach trzech kolorówpodstawowych: czerwonego, zielonego i niebieskiego. Kolory RGB nazywasię addytywnymi, ponieważ po połączeniu wszystkich składowych RGBpowstaje biel. Oznacza to, że całe światło odbijane jest z powrotem do okaobserwatora.

Tryb kolorów RGB (oparty na modelu RGB) umożliwia korzystanie z wartościkolorów. Każdej ze składowych RGB danego koloru są przypisywane określonewartości natężenia z zakresu od 0 (czerń) do 255 (biel).

Na przykład, przypisując składowej R liczbę 246, składowej G liczbę 20 iskładowej B liczbę 50, uzyskuje się kolor jasnoczerwony.

Kiedy wartości trzech składowych są sobie równe powstaje odcień szarości.

Gdy wszystkie składowe mają wartość 255, powstaje czysta biel, a składowerówne 0 dają czystą czerń.

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Przetwarzanie wstępne obrazów

Przestrzeń barw

• Model CMY (CMYK)(Cyan – cyjan, Magenta – magenta, Yellow – żółty, blacK – czarny)

źródło: http://help.adobe.com/pl_PL/illustrator/cs/using/WS714a382cdf7

d304e7e07d0100196cbc5f-6295a.html

Model RGB jest oparty na prawach rządzących emisją światła, model CMYKopiera się na prawach dotyczących absorpcji fal świetlnych. W przypadkudrukarek, na przykład, chodzi o absorpcję światła przez farby naniesione napapier. Gdy białe światło pada na półprzezroczyste farby, część jego widmajest pochłaniana. Te barwy, które nie zostały zaabsorbowane, odbijane są zpowrotem do oka.

Zgodnie z zasadami optyki połączenie czystych pigmentów koloruniebieskozielonego (C, od ang. “cyan”), karmazynowego (M, od ang.“magenta”) i żółtego (Y, od ang. “yellow”) powinno skutkować absorpcjącałego światła, a więc dawać czystą czerń. Z tego względu wymienione kolorynazywa się kolorami subtraktywnymi. Aby uzyskać prawdziwą czerń, trzebaużyć czwartej farby – czarnej (K). Litera K służy do oznaczania czerni dlatego,że litera B (ang. black – czerń) jest już używana jako symbol barwy niebieskiej(ang. blue).

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Przetwarzanie wstępne obrazów

Przestrzeń barw

• Model HSV zwany także HSB(Hue – barwa/odcień), Saturation – nasycenie, Value – wartość, Brightness – jasność)

źródło: http://help.adobe.com/pl_PL/illustrator/cs/using/WS714a382cdf7

d304e7e07d0100196cbc5f-6295a.html

Model HSB powstał w oparciu o sposób postrzegania barw przez człowiekai opisuje trzy główne cechy koloru:

Barwa to właściwy kolor, powstający wskutek odbicia lub przejścia światłaprzez obiekt. Miarą barwy jest jej położenie na standardowym kolekolorów, wyrażone w stopniach od 0° do 360°. W zwykłym języku barwajest określana po prostu nazwą odpowiedniego koloru, np. czerwony,pomarańczowy czy zielony.

Nasycenie to stopień czystości barwy (nazywany czasami chrominancją).Nasycenie reprezentuje intensywność szarości w stosunku do samej barwyi jest mierzone jako wartość procentowa, gdzie 0% oznacza barwę szarą, a100% barwę całkowicie nasyconą. Na standardowym kole kolorównasycenie rośnie od środka ku krawędziom.

Jasność jest to względna jaskrawość koloru, mierzona jako wartośćprocentowa, gdzie 0% odpowiada czerni, a 100% bieli.

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Przetwarzanie wstępne obrazów

• Model skali szarości

Przestrzeń barw

źródło: Przemysław Błaszkowski. Rozpoznawanie obiektów dynamicznych przy wykorzystaniu sztucznych sieci neuronowych. Praca inżynierska, PG 2012

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Przetwarzanie wstępne obrazów

• Model binarny

Przestrzeń barw

źródło: Przemysław Błaszkowski. Rozpoznawanie obiektów dynamicznych przy wykorzystaniu sztucznych sieci neuronowych. Praca inżynierska, PG 2012

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Przetwarzanie wstępne obrazów

• Przekształcenia punktowe i arytmetyczne;

• Przekształcenia geometryczne;

• Przekształcenia morfologiczne;

• Filtracja.

Przekształcenia obrazów

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Przetwarzanie wstępne obrazów

• Przekształcenia punktowe i arytmetyczne (sumowanie obrazów)

Przekształcenia obrazów

obrazy sumowane suma obrazów

źródło: Przemysław Błaszkowski. Rozpoznawanie obiektów dynamicznych przy wykorzystaniu sztucznych sieci neuronowych. Praca inżynierska, PG 2012

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Przetwarzanie wstępne obrazów

• Przekształcenia punktowe i arytmetyczne (odejmowanie obrazów)

Przekształcenia obrazów

obrazy odejmowane różnica obrazów

źródło: Przemysław Błaszkowski. Rozpoznawanie obiektów dynamicznych przy wykorzystaniu sztucznych sieci neuronowych. Praca inżynierska, PG 2012

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Przetwarzanie wstępne obrazów

• Przekształcenia punktowe i arytmetyczne (liniowe)

Przekształcenia obrazów

źródło: Maciej Wenecki. Systemy wizyjne do przetwarzania i rozpoznawania obrazów przy wykorzystaniu sztucznych sieci neuronowych. Praca magisterska, PG 2008

obraz oka 0 100 200

poziom jasności

0 100 200

poziom jasnościrozjaśniony obraz oka

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Przetwarzanie wstępne obrazów

• Przekształcenia punktowe i arytmetyczne (nieliniowe)

Przekształcenia obrazów

źródło: Maciej Wenecki. Systemy wizyjne do przetwarzania i rozpoznawania obrazów przy wykorzystaniu sztucznych sieci neuronowych. Praca magisterska, PG 2008

logarytmiczna operacja punktowa

ekspotencjalna operacja punktowa

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Przetwarzanie wstępne obrazów

Przekształcenia geometryczne

• Obrót o kąt

• Skalowanie

• Normalizacja

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Przetwarzanie wstępne obrazów

• Przekształcenia morfologiczne (dylatacja, erozja, otwarcie i zamknięcie)

Przekształcenia obrazów

źródło: Przemysław Błaszkowski. Rozpoznawanie obiektów dynamicznych przy wykorzystaniu sztucznych sieci neuronowych. Praca inżynierska, PG 2012

obraz przed erozją obraz po erozji

Erozja W dużym uproszczeniu erozję jest metodą zmniejszenia pola figur znajdujących się na obrazie poprzez odcięcie od każdej jego krawędzi, pasa o pewnej szerokości. Erozja usuwa z obrazu obszary odchylone od stosowanego szablonu. Efektem może być wygładzenie obiektów

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Przetwarzanie wstępne obrazów

• Przekształcenia morfologiczne (dylatacja, erozja, otwarcie i zamknięcie)

Przekształcenia obrazów

obraz przed dylatacją obraz po dylatacji

DylatacjaDziałanie dylatacji jest odwrotne do działania erozji. Upraszczając, można stwierdzić że dylatacja dopisuje pas o pewnej szerokości wokół obszarów wykrytych na obrazie.

źródło: Przemysław Błaszkowski. Rozpoznawanie obiektów dynamicznych przy wykorzystaniu sztucznych sieci neuronowych. Praca inżynierska, PG 2012

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Przetwarzanie wstępne obrazów

• Przekształcenia morfologiczne (dylatacja, erozja, otwarcie i zamknięcie)

Przekształcenia obrazów

obraz przed otwarciem obraz po otwarciu

Erozja i dylatacja powodują zmiany pola obiektu, co nie jest korzystne w procesach analizy. Obie operacje wykorzystuje się często razem. Wykonanie na obrazie erozji, a następnie dylatacji powinno zachować podobne rozmiary obiektów, dając szereg zalet takich jak wygładzenie, usunięcie odchyleń, czy rozdzielenie nałożonych na siebie fragmentów. Działanie takie nazywa się otwarciem. Operacja odwrotna (dylatacja + erozja) nazywa się zamknięciem)

źródło: Przemysław Błaszkowski. Rozpoznawanie obiektów dynamicznych przy wykorzystaniu sztucznych sieci neuronowych. Praca inżynierska, PG 2012

Monitorowanie i diagnostyka w systemach sterowania

Przetwarzanie wstępne obrazów

Filtracja obrazów jest operacją na pikselach w rezultacie której uzyskujemy przekształcony obraz. Filtracja jest przekształceniem kontekstowym gdyż do jej wykonania, dla każdego piksela obrazu przetworzonego potrzebna jest informacja o wielu pikselach obrazu źródłowego.

Celem filtracji jest:

• eliminacja (zmniejszenie) szumów w obrazie;

• wzmocnienie pewnych cech obrazu;

• wykrywanie pewnych cech w obrazie (np. krawędzi, kolorów);

• generalna poprawa „jakości” obrazu i usunięcie jego „wad”.

Podstawowe rodzaje filtrów:

• filtry dolnoprzepustowe i górnoprzepustowe;

• maksymalny i minimalny

• medianowy;

• krawędziowy

• gradientowe…

Filtracja obrazów

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Przetwarzanie wstępne obrazów

Przykład wykorzystania filtru medianowego: a) zdjęcie oryginalne, b) wynik filtracji medianowej

z wykorzystaniem maski 3x3, c) wynik filtracji medianowej

z wykorzystaniem maski 7x7, d) wynik filtracji medianowej

z wykorzystaniem maski 13x13

źródło: http://atol.am.gdynia.pl/tc/Radzienski/Mediana.htm

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Przetwarzanie wstępne obrazów

Wykrywanie krawędzi na podstawie pierwszej i drugiej pochodnej

Filtr Canney’go

Filtr Cannego służy do wykrywania krawędzi na obrazie.

Wykorzystuje do tego pierwszą i druga pochodną funkcji zmiany jasności pikseli na obrazie. Algorytm działa punkt po punkcie.

Istotnymi elementami filtru jest odszumianie, filtry np. medianowe (usuwanie pojedynczych pikseli), progowanie (usunięcie nieistotnych krawędzi).

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Przetwarzanie wstępne obrazów

Przykład zastosowanie filtru Canny'ego do detekcji krawędzi

źródło: Skorupa, M., Lewicki, D., Lewicki, T. Wykorzystanie metod przetwarzania obrazów i inteligencji obliczeniowej do identyfikacji biometrycznej osób na

podstawie twarzy. Praca inżynierska. Politechnika Gdańska, Wydział Elektrotechniki i Automatyki, Katedra Inżynierii Systemów Sterowania.

Filtr Canney’go

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Przetwarzanie wstępne obrazów

• skala szarości, binaryzacja, progowanie, histogramy;

• siatki redukcyjne;

• PCA;

• k – means clustering;

• DCT (ang. Discrete Cosine Transform) – wykorzystywana w kompresji jpg;

• przekształcenie log-polar;

• transformacje Fouriera, Gabora, falkowa…

Redukcja wymiaru

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Przetwarzanie wstępne obrazów

Redukcja wymiaru

źródło: Maciej Wenecki. Systemy wizyjne do przetwarzania i rozpoznawania obrazów przy wykorzystaniu sztucznych sieci neuronowych. Praca magisterska, PG 2008

Siatka prostokątna

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Przetwarzanie wstępne obrazów

Siatka prostokątna – dobór parametrów

Redukcja wymiaru

Siatka o oczku 50 x 50

źródło: Mariusz Sikora. Wykorzystanie sztucznych sieci neuronowych do diagnostyki optycznej poprawności produkcji płytek drukowanych. Praca magisterska, PG 2010

Siatka o oczku 90 x 90

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Przetwarzanie wstępne obrazów

Siatka prostokątna – dobór parametrów

Redukcja wymiaru

Nałożenie siatki o źle dobranych parametrach M=2 i N=2 na cyfry 0 i 8.

W obu przypadkach wyjściem dla tej transformacji będą identyczne wartości

źródło: Maciej Wenecki. Systemy wizyjne do przetwarzania i rozpoznawania obrazów przy wykorzystaniu sztucznych sieci neuronowych. Praca magisterska, PG 2008

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Przetwarzanie wstępne obrazów

Siatka prostokątna z adoptowalnym rozmiarem pól receptorowych

Redukcja wymiaru

gdzie:

xsiatki kX 2

źródło: Maciej Wenecki. Systemy wizyjne do przetwarzania i rozpoznawania obrazów przy wykorzystaniu sztucznych sieci

neuronowych. Praca magisterska, PG 2008

ysiatki kY 2

yx ,

n

i

ix xxn 1

2)(1

n

i

iy yyn 1

2)(1

yx,

ii yx ,

- odchylenie standardowe

- wartości średnie współrzędnych x i y punktów należących do obiektu

- współrzędne i–tego punktu należącego do obiektu

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Przetwarzanie wstępne obrazów

Siatka eliptyczna

Redukcja wymiaru

źródło: Maciej Wenecki. Systemy wizyjne do przetwarzania i rozpoznawania obrazów przy wykorzystaniu sztucznych sieci

neuronowych. Praca magisterska, PG 2008

1)1( PWLPR

gdzie:- liczba pierścieni siatki

Liczba pól receptorowych:

P

W - liczba wycinków siatki (równomiernie kwantowanych kątów)

Monitorowanie i diagnostyka w systemach sterowania

Przykład: Rozpoznawanie cyfr

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Przetwarzanie wstępne obrazów

Sekcja oparta o: Maciej Wenecki. Systemy wizyjne do przetwarzania i rozpoznawania

obrazów przy wykorzystaniu sztucznych sieci neuronowych. Praca magisterska, PG 2008

Promotor dr inż. Michał Grochowski

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Rozpoznawanie wstępne cyfr

Przykłady kodów miejscowości pisanych na listach oraz znormalizowanych pisanych cyfr

Wprowadzenie

źródło: Żurada J., Barski M., Jędruch W. (1996) Sztuczne sieci neuronowe – Wydawnictwo Naukowe PWN

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Rozpoznawanie cyfr

Wpływ oświetlenia na progowanie

Poprawnie dobrane oświetlenieBłędnie dobrane oświetlenie

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Rozpoznawanie cyfr

Przycinanie do obiektu

Czarna ramka określa pierwotny wymiar obrazu,

czerwona ramka oznacza obszar obrazu po przycięciu

Monitorowanie i diagnostyka w systemach sterowania

Rozpoznawanie cyfr

Zmiana reprezentacji obrazu Reprezentacja obrazu w postaci macierzowej

Współrzędne punktów (w układzie kartezjańskim) wyznaczone są z zależności:

ii

ii

wWy

kx

gdzie:

xi - współrzędna określająca położenie na osi X;

yi - współrzędna określająca położenie na osi Y

ki - numer kolumny i-tego punktu należącego do obiektu

wi - numer wiersza i-tego punktu należącego do obiektu

W - liczba wierszy z których składa się macierz reprezentująca obraz

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Rozpoznawanie cyfr

Zmiana reprezentacji obrazu

Przeniesienie początku układu współrzędnych do środka ciężkości obiektu

Wyznaczenie środka ciężkości figury:

Następnie do współrzędnych każdego punktu należy dodać wektor:

N

i

isr

N

i

isr

yN

y

xN

x

1

1

1

1

srsr yxv ,

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Rozpoznawanie cyfr

Zmiana reprezentacji obrazu

Wyznaczanie głównej osi obiektu

Każda cyfra (i inny znak) posiada własną charakterystyczną oś, od której średnieodchylenie standardowe dla wszystkich punktów będzie najmniejsze. Dokonując rotacjiobrazu, wokół środka ciężkości danej cyfry, tak aby ta charakterystyczna oś pokrywała się,np. z osią OY w układzie kartezjańskim, otrzymamy obraz znormalizowany.

Wyznaczenie tej osi jest możliwe przy wykorzystaniu metody PCA.

Za dane treningowe należy przyjąć wszystkie punkty reprezentujące daną cyfrę, zapisanew układzie kartezjańskim, a otrzymany wektor własny, któremu odpowiada największaliczbowo wartość własna, będzie określał kierunek osi.

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Rozpoznawanie cyfr

Zmiana reprezentacji obrazu

„Wyrównywanie” obiektu

Monitorowanie i diagnostyka w systemach sterowania

Rozpoznawanie cyfr

Redukcja wymiaru – nakładanie siatek

Baza wzorców

Baza wzorców składa się z 1476 cyfr, z czego na każdą cyfrę przypada w przybliżeniupodobna liczba wzorców. Każda cyfra przedstawiona jest na jednakowej matrycy(macierz o wymiarze 20 x 20 pikseli), przy czym nie występują istotne różnice wrozmiarze tych cyfr oraz każda z nich pisana jest przez jedną osobę, jednym charakterempisma i pod tym samym kątem.

Ze względu na fakt, iż wejściem sieci neuronowej jest wektor, każdą cyfrę przedstawionow postaci wektora składającego się z 400 elementów

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Rozpoznawanie cyfr

Redukcja wymiaru – nakładanie siatek

Nakładamy siatkę prostokątną o ilości wierszy M = 8 i ilości kolumn N = 7

Uzyskujemy 56 jednakowy pól receptorowych (co stanowi ilość wejść do sieci neuronowej)

Podobieństwa wykazują pary cyfr:

• 5 i 6;

• 8 i 9;

• 1 i 7.

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Rozpoznawanie cyfr

Redukcja wymiaru – nakładanie siatek + analiza PCA

Tak przetworzone dane poddajemy obróbce PCA: redukcja wymiarów z 56 do 20 składników głównych (co stanowi ilość wejść do sieci neuronowej) oraz analiza miary SPE.

Porównanie wskaźnika SPE dla transformacji PCA

wszystkich wzorców cyfr dla każdego modelu osobno

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Rozpoznawanie cyfr

Redukcja wymiaru – nakładanie siatek

Nakładamy siatkę prostokątną o ilości wierszy M = 4 i ilości kolumn N = 3

Uzyskujemy 12 jednakowy pól receptorowych (co stanowi ilość wejść do sieci neuronowej)

Brak wyraźnie zarysowanych różnic pomiędzy znakami

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Rozpoznawanie cyfr

Redukcja wymiaru – nakładanie siatek + analiza PCA

Redukcja wymiarów z 12 do 5 składników głównych (co stanowi ilość wejść do sieci neuronowej) oraz analiza miary SPE.

Porównanie wskaźnika SPE dla transformacji PCA

wszystkich wzorców cyfr dla każdego modelu osobno

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Rozpoznawanie cyfr

Redukcja wymiaru – nakładanie siatek + analiza PCA

Porównanie miar SPE dla różnych ilości składników głównych R

R = 3

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Rozpoznawanie cyfr

Redukcja wymiaru – nakładanie siatek + analiza PCA

Porównanie miar SPE dla różnych ilości składników głównych R

R = 10

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Rozpoznawanie cyfr

Redukcja wymiaru – nakładanie siatek + analiza PCA

Porównanie miar SPE dla różnych ilości składników głównych R

R = 20

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Rozpoznawanie cyfr

Redukcja wymiaru – nakładanie siatek + analiza PCA

Porównanie miar SPE dla różnych ilości składników głównych R

Siatka

prostokątna

Siatka

eliptyczna

Liczba pól receptorowych 56 12 51 13

Liczba wymiarów wyjściowych po transformacji PCA 20 5 20 5

Rozpoznawalność [%]

Obrazy wzorcowe 99.86 95.28 99.80 95.26

Obrazy testowe 95.16 85,82 96.27 79.85

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Rozpoznawanie cyfr

Analiza doboru struktury sieci neuronowej

Graficzna prezentacja wzorców cyfr po transformacji PCA (dwa pierwsze istotne PCs).Prosta oznaczona kolorem zielony wyznacza granicę między tymi klasami

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Rozpoznawanie cyfr

Analiza doboru struktury sieci neuronowej

Graficzna prezentacja wzorców cyfr po transformacji PCA (trzy pierwsze istotne PCs).

-7-6

-5-4

-3-2

-4

-2

0

2

4

-3

-2

-1

0

1

2

#1

#2

#3

cyfra 3

pozostałe cyfry

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Rozpoznawanie cyfr

Analiza doboru struktury sieci neuronowej

Graficzna prezentacja wzorców cyfr po transformacji PCA (trzy pierwsze istotne PCs).Prosta oznaczona kolorem zielony wyznacza granicę między tymi klasami

Przykładowa struktura sieci:

• pierwsza warstwa: 2 neurony najlepiej tangens sigmoidalny;

• druga warstwa: jeden neuron, może byćliniowy.

Monitorowanie i diagnostyka w systemach sterowania

Przykład: Analiza znamion skórnych

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Przetwarzanie wstępne obrazów

Sekcja oparta o: Agnieszka Mikołajczak: Analiza znamion skórnych przy pomocy

metod przetwarzania obrazu i algorytmów inteligencji obliczeniowejPraca inżynierska, PG 2015

Promotor dr inż. Michał Grochowski

Julia Sas-SwistelnickaAnaliza znamion skórnych przy pomocy metod przetwarzania obrazu

i algorytmów inteligencji obliczeniowejPraca inżynierska, PG 2016

Promotor dr inż. Michał Grochowski

Monitorowanie i diagnostyka w systemach sterowania

Analiza znamion skórnych przy pomocy metod przetwarzania obrazu i algorytmów inteligencji obliczeniowej

Autor: inż. Agnieszka Mikołajczyk

Promotor: Dr inż. Michał Grochowski

Jak rozpoznać czy znamię jest nowotworem?

Metody oceny dermatoskopowej

• ABCD(E); • Menzies method;

• 7-point rule;

• 3-point rule;

• CASH acronym;

• CHAOS and clues;

• BLINCK algorithm.

Metody te są bardzo skuteczne ale stosować je oraz odpowiedniointerpretować ich wyniki potrafią jedynie lekarze specjaliści.

Metoda ABCD(E)

• A (Assymetry) – Czy znamię

jest symetryczne?

• B (Border) – Czy krawędź

znamienia jest równa i gładka?

• C (Color) – Czy znamię jest

jednolitego koloru?

• D (Diffrental Structures) – Czy można na nim zauważyć

kropki, plamy lub inne nietypowe struktury?

• E (Evolution)- Czy znamię zmieniło się w ciągu ostatnich 3 miesięcy?

WYNIK: NOWOTWÓR!

Metody przetwarzania obrazu

Wczytanie

obrazu

Przygotowanie obrazu

do analizy

Wyznaczanie maski

Start

Wyznaczanie konturu

znamienia

Wyznaczanie

współczynnika A

Wyznaczanie

współczynnika B

Wyznaczanie wektora

współczynników C

Wyliczanie wyniku przy

pomocy sieci neuronowych

Czy znamię jest

czerniakiem?

Wyświetl wynik

Koniec

• Rozmycie, ograniczenie ilości kolorów, zwiększenie kontrastu;

• Konwersja do czerni i bieli;

• Zmiany morfologiczne;

Segmentacja obrazu

Wczytanie

obrazu

Przygotowanie obrazu

do analizy

Wyznaczanie maski

Start

Wyznaczanie konturu

znamienia

Wyznaczanie

współczynnika A

Wyznaczanie

współczynnika B

Wyznaczanie wektora

współczynników C

Wyliczanie wyniku przy

pomocy sieci neuronowych

Czy znamię jest

czerniakiem?

Wyświetl wynik

Koniec

• Nowa, innowacyjna metoda bazująca na wyznaczeniu maksimów lokalnych obrazu;

• Praca na obrazie w skali szarości;

• Wysoka skuteczność działania.

Wyznaczanie konturu znamienia

Wczytanie

obrazu

Przygotowanie obrazu

do analizy

Wyznaczanie maski

Start

Wyznaczanie konturu

znamienia

Wyznaczanie

współczynnika A

Wyznaczanie

współczynnika B

Wyznaczanie wektora

współczynników C

Wyliczanie wyniku przy

pomocy sieci neuronowych

Czy znamię jest

czerniakiem?

Wyświetl wynik

Koniec

• Na podstawie obrazu binarnego znamienia

0 000

0000 0 00

000

00 0

000 0 0

0

000 0 00

00

000

0000

0

0

0 0 0

0

0 00 0

11111

11111 1

1111

1

1111 1

1111

11111 1

1111 1

1111 1

1111 1 1

11111

1 1 1 11111 1 111

1 1 111 11

1 1

111 111 111 111 11

1

1

11 111 111111

1111

11

0 000

0000 0 00

000

00 0

0

00 0 0

0

000 0 00

00

000

00 00

0

0

0 0 0

0

0 00 0

11111

11111 1

1111

11111

11 1

1111

11111 1

1111 1

1111 1

1111 1 1

11111

1 1 1 11111 1 111

1 1 111 11

1 1

111 111 111 111 11

1

111 111 111111

1111

11

Wyliczanie współczynników decydujących

Wczytanie

obrazu

Przygotowanie obrazu

do analizy

Wyznaczanie maski

Start

Wyznaczanie konturu

znamienia

Wyznaczanie

współczynnika A

Wyznaczanie

współczynnika B

Wyznaczanie wektora

współczynników C

Wyliczanie wyniku przy

pomocy sieci neuronowych

Czy znamię jest

czerniakiem?

Wyświetl wynik

Koniec

• Współczynnik A- Symetria;

• Współczynnik B- krawędź

znamienia;

• Współczynnik C1

• Współczynnik C2 – W jakiej ilości

pikseli w znamieniu dominuje kolor niebieski?;

• Współczynnik C3- W jakiej ilości

pikseli w znamieniu dominuje kolor zielony?;

• Współczynnik C4

AB

C

Wnioskowanie• Wnioskowanie przy

pomocy sieci neuronowych;

• Wykorzystano jednokierunkową sieć trójwarstwową, z sigmoidalnymi funkcjami aktywacji;

Wczytanie

obrazu

Przygotowanie obrazu

do analizy

Wyznaczanie maski

Start

Wyznaczanie konturu

znamienia

Wyznaczanie

współczynnika A

Wyznaczanie

współczynnika B

Wyznaczanie wektora

współczynników C

Wyliczanie wyniku przy

pomocy sieci neuronowych

Czy znamię jest

czerniakiem?

Wyświetl wynik

Koniec

Sztuczna Sieć Neuronowa

AB

C1C2C3C4

• Zdrowe znamię• Znamię nowotworowe• Znamię podejrzane

WyjściaWejścia Proces uczenia

Wynik działania

• Czułość równa 98% (100 przypadków);

• Swoistość równa 73.07% (26 przypadków);

• Szybkie obliczanie wyniku.

Analiza znamion skórnych przy pomocy metod przetwarzania obrazu i algorytmów inteligencji obliczeniowej

Autor: Julia Sas-Swistelnicka

Promotor: Dr inż. Michał Grochowski

Julia Sas-Swistelnicka: Analiza znamion skórnych przy pomocy metod przetwarzania obrazu i algorytmów inteligencji obliczeniowej

Julia Sas-Swistelnicka: Analiza znamion skórnych przy pomocy metod przetwarzania obrazu i algorytmów inteligencji obliczeniowej

Julia Sas-Swistelnicka: Analiza znamion skórnych przy pomocy metod przetwarzania obrazu i algorytmów inteligencji obliczeniowej

Julia Sas-Swistelnicka: Analiza znamion skórnych przy pomocy metod przetwarzania obrazu i algorytmów inteligencji obliczeniowej

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Rozpoznawanie twarzy

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Detekcja ruchu

Różnica kolejnych klatek

źródło: Przemysław Błaszkowski. Rozpoznawanie obiektów dynamicznych przy wykorzystaniu sztucznych sieci neuronowych. Praca inżynierska, PG 2012

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Detekcja ruchu

Różnica kolejnych klatek

źródło: Przemysław Błaszkowski. Rozpoznawanie obiektów dynamicznych przy wykorzystaniu sztucznych sieci neuronowych. Praca inżynierska, PG 2012

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Detekcja ruchu

Różnica kolejnych klatek

źródło: Przemysław Błaszkowski. Rozpoznawanie obiektów dynamicznych przy wykorzystaniu sztucznych sieci neuronowych. Praca inżynierska, PG 2012

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Detekcja ruchu

Różnica kolejnych klatek

źródło: Przemysław Błaszkowski. Rozpoznawanie obiektów dynamicznych przy wykorzystaniu sztucznych sieci neuronowych. Praca inżynierska, PG 2012

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Detekcja obiektów – twarzy, elementów twarzy

Klasyfikator Haar’a

Istotą działania klasyfikatora Haar’a (algorytm Viola-Jones) są tzw. cechy Haar’a. Cechyte zawierają informacje o zmianie wartości kontrastu pomiędzy prostokątnymi grupamipikseli. Zmiany te są wykorzystywane do określenia relatywnie jasnych i ciemnychobszarów. Dwie lub trzy sąsiadujące grupy o podobnej wariancji kontrastu tworzą cechęHaar’a. Cechy te mogą być łatwo skalowane, tak aby rozpoznawać obiekty o różnejwielkości.

źródło: Wilson P.; Fernandez J.; , “Facial feature detection using Haar classifiers” J. Comput. Sci. Coll. 21, p. 127-133, 2006.

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Detekcja obiektów – twarzy, elementów twarzy

Klasyfikator Haar’a

Sumowany obszar obrazu integralnego obróconegoSumowany obszar obrazu integralnego

Prostokątne cechy są obliczane za pomocą zmienionej reprezentacji zdjęcia, zwanejzdjęciem integralnym. Jest to macierz stworzona z pikseli, których wartości są sumamiintensywności wszystkich pikseli położonych po lewej i ponad pikselemodpowiadającym zdjęciu pierwotnemu.Cechy obrócone o 45°, takie jak cechy liniowe wymagają innej zmienionej reprezentacjizdjęcia. Obrócone zdjęcie integralne jest obliczane jako suma intensywności pikselipołożonych o 45° po lewej i ponad pikselem odpowiadającym dla wartości x orazponiżej dla wartości y.

źródło: Wilson P.; Fernandez J.; , “Facial feature detection using Haar classifiers” J. Comput. Sci. Coll. 21, p. 127-133, 2006.

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Detekcja obiektów – twarzy, elementów twarzy

Klasyfikator Haar’a

Zanim algorytm przystąpi do detekcji obiektów, należy zbudować odpowiednie wzorcecech, które powinien wyszukiwać. Budowa klasyfikatora opiera się o metodę GentleAdaBoost. Obraz o typowej rozdzielczości 320x240 pikseli zawiera miliony cech Haar’a.

Do uczenia kaskady potrzebne są tysiące zdjęć wysokiej rozdzielczości, przedstawiającezarówno twarze jak i inne obiekty. Na obrazach zawierających twarze, należy wskazaćich położenie tak, aby algorytm miał informacje które rejony są celem detekcji.

Algorytm w działaniu jest kaskadowym algorytmem działającym na zasadzieprzesuwnego okna.

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii i Systemów Sterowania

Przykład

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Śledzenie obiektów – twarzy, elementów twarzy

Histogram Based Tracker - algorytm CAMshift

Histogram Based Tracker bazuje na algorytmie CAMshift, stworzonym przez GaryBradski’ego z firmy Intel. Algorytm wykorzystuje informację o kolorze w video-sekwencjiw celu lokowania i śledzenia obiektów. Program dla każdego piksela obrazu wyznaczaprawdopodobieństwo przynależności do zbioru pikseli reprezentujących obiekt. Działaon w przestrzeni barw HSV, dokładniej na składowej H (odcień światła białego)

Działanie algorytmu CamShift można podzielić na cztery podstawowe kroki:(Hewitt R.; , “How OpenCV’s Face Tracker Works”, SERVO Magazine, 2007)

• Utworzenie histogramu kolorów reprezentującego twarz• Obliczenie prawdopodobieństwa dla każdego piksela przychodzącej klatki• Przesunięcie położenia prostokąta obrysowującego twarz• Obliczenie rozmiaru i kąta.

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Śledzenie obiektów – twarzy, elementów twarzy

Histogram based tracker - algorytm CAMshift

Histogram twarzy w algorytmie CamShift

Przedstawienie histogramu jako udział pikseli w całości

źródło: Hewitt R. “How OpenCV’s Face Tracker Works”, SERVO Magazine, 2007

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Śledzenie obiektów – twarzy, elementów twarzy

Histogram based tracker - algorytm CAMshift

Obraz w reprezentacji prawdopodobieństwa pikseli

Klatka z kamery

źródło: Błaszkowski P. Wykrywanie, rozpoznawanie i śledzenie ruchomych obiektów poprzez niezależną platformę monitorującą, przy wykorzystaniu sztucznych sieci neuronowych. Praca magisterska, Politechnika Gdańska 2013

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Przykład

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Śledzenie obiektów – twarzy, elementów twarzy

Point tracker – algorytm Kanade-Lucas-Tomasi

Point Tracker śledzi zbiór punktów wykorzystując algorytm Kanade-Lucas-Tomasi.Algorytm ten operuje na intensywnościach pikseli. Każdy śledzony punkt posiadapewne sąsiedztwo (domyślnie 31x31 pikseli), w którym algorytm iteracyjnieposzukuje jego nowej lokalizacji na kolejnych klatkach. Tracker generuje piramidęzdjęć, w której każdy poziom charakteryzuje się rozdzielczością zmniejszoną o połowęwzględem poprzedniego. Pozwala to na śledzenie punktu na kilku poziomachrozdzielczości, co umożliwia obsługiwanie dużych przemieszczeń punktów (większychniż ich sąsiedztwo).

źródło: http://www.mathworks.com/help/vision/ref/vision.pointtrackerclass.html

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Śledzenie obiektów – twarzy, elementów twarzy

Point tracker – algorytm Kanade-Lucas-Tomasi

źródło: http://www.mathworks.com/help/vision/ref/vision.pointtrackerclass.html

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Śledzenie obiektów – twarzy, elementów twarzy

Point tracker – algorytm Kanade-Lucas-Tomasi

źródło: Skorupa, M., Lewicki, D., Lewicki, T. Wykorzystanie metod przetwarzania obrazów i inteligencji obliczeniowej do identyfikacji biometrycznej osób na

podstawie twarzy. Praca inżynierska. Politechnika Gdańska, Wydział Elektrotechniki i Automatyki, Katedra Inżynierii Systemów Sterowania.

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Rozpoznawanie twarzy

Najważniejsze metody rozpoznawania twarzy:

• Eigenfaces;

• LBBH;

• FisherFaces;

• Gradient;

• Length;

• Resize;

• Histogram;

• Neural Networks;

• Convolutional Neural Networks (ConvNets, CNNs), Deep Neural Networks.

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Rozpoznawanie twarzy

Metoda Resize

Najprostsza z metod. Polega na kolejnej redukcji wymiaru danych opisujących zdjęcie (skala odcieniszarości, wyrównywanie histogramem , binaryzacja, siatka redukcyjna)

Proces skalowania obrazów: • oryginalnego (a) • do obrazu w skali szarości (b)• o wymiarach 32x32 pikseli (c) • o wymiarach 16x16 pikseli (d)

źródło: Sikora M. Inteligentny system rozpoznawania twarzy w czasie rzeczywistym – implementacja sprzętowa. Praca magisterska, Politechnika Gdańska 2012.

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Rozpoznawanie twarzy

Metoda Resize z klasyfikatorem w postaci sieci neuronowych

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Rozpoznawanie twarzy

Metoda oparta o histogramy z klasyfikatorem w postaci sieci neuronowych

Polega na przedstawieniu zdjęć w postaci histogramów i przekazywaniu ich jako wejścia do siecineuronowej, która służy za klasyfikator.

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Rozpoznawanie twarzy

Metoda Length

Metoda bazuje na obliczaniu odległościpomiędzy charakterystycznymi punktami twarzyczłowieka.Do poprawnego zadziałania tej metody musimyz wynikiem pozytywnym odnaleźć na twarzydanej osoby takie elementy jak: obydwoje oczu,nos oraz usta.Przy wyszukiwaniu ww. elementów najlepiejskorzystać z estymatora Haar’a.

L1

L2

L3

źródło: Sikora M. Inteligentny system rozpoznawania twarzy w czasie rzeczywistym – implementacja sprzętowa. Praca

magisterska, Politechnika Gdańska 2012.

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Rozpoznawanie twarzy

Metoda LengthPosiadając odnalezione te elementy przystępujemy do obliczenia środka każdego z nich.Następnie obliczana jest odległość pomiędzy środkiem każdego z tych elementów.W celu uniezależnienia wyników od odległości od kamery, a jedynie od kształtu ludzkiej twarzynależy obliczyć stosunki tych odległości.

L1

L2

L3

Wykorzystanie trzech zależności:

• L1/L2;

• L1/L3;

• L2/L3.

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Rozpoznawanie twarzy

Metoda LBPH

Local Pattern Binary Histogram jest metodą pozwalającą na zmianę zdjęcia w macierz wartościcałkowitych opisujących mało-wymiarowe cechy obrazu. Histogram tych wartości jest następniewykorzystywany do dalszej analizy.LBPH nie bazuje na statystyce, więc nie jest potrzebna duża ilość zdjęć uczących.

Metoda LPB może równie dobrze działać przy tylko jednej próbce dla każdej z klas.LBPH nie analizuje obrazu jako wielowymiarowego wektora, a opisuje go jedynie w postacilokalnych cech obiektów.

Na podstawie: Pietikäinen M.; Hadid A.; Zhao G.; Ahonen T.; "Computer Vision UsingLocal Binary Patterns", Machine Vision Group, University of Oulu, Finland, 2011

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Rozpoznawanie twarzy

Metoda LBPH

Główną ideą algorytmu jest sumowanie lokalnej struktury zdjęcia poprzez porównywanie każdegopiksela z jego sąsiedztwem. Wybierany jest środkowy piksel kwadratowego obszaru (w wersjipodstawowej 3x3 pikseli), a jego sąsiedztwo jest poddawane progowaniu. W zależności od tego, czydany sąsiadujący piksel jest większy od progu, czy nie, przyjmuje wartość 1 lub 0. Następnieodczytuje się liczbę binarną zapisaną dookoła środkowego piksela. Dla ośmiu pikseli sąsiadującychistnieje 256 kombinacji, zwanych Local Binary Patterns.

źródło: Hewitt R. “How OpenCV’s Face Tracker Works”, SERVO Magazine, 2007

Sposób analizy ramek 3x3 w metodzie LBPH

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Rozpoznawanie twarzy

Metoda LBPH

Przykład transformacji twarzy metodą Local Pattern Binary Histogram w różnych warunkach oświetleniowych

źródło: Dokumentacja OpenCVwww.opencv.org

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Rozpoznawanie twarzy

Metoda LBPH

Jako klasyfikator do analizy zdjęć w dziedzinie LBPH, dzieli się obraz na pewną liczbę obszarówi wykorzystuje się porównywanie histogramów.Histogramy zapisane w postaci wektora, o kolejnych elementach będących liczbami pikseli w danymzakresie intensywności, mogą być porównywane w prosty sposób, za pomocą metody NajbliższegoSąsiada. Niekiedy stosuje się także bardziej zaawansowane techniki, jak PCA czy LDA w celuprzeniesienia histogramu do innej przestrzeni.

źródło: Dokumentacja OpenCVwww.opencv.org

Na podstawie: Pietikäinen M.; Hadid A.; Zhao G.; Ahonen T.; "Computer Vision UsingLocal Binary Patterns", Machine Vision Group, University of Oulu, Finland, 2011

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Rozpoznawanie twarzy

Metoda Eigenfaces

Metoda Eigenfaces wykorzystuje PCA w odniesieniu do przetwarzania obrazów, jednakprzetwarzanie obrazów wymaga znacznie więcej obliczeń niż to występuje w przyprzetwarzaniu „przemysłowych” danych pomiarowych.

Przykładowo zdjęcie o wymiarach 200x200 pikseli, stosując klasyczne PCA, wymagałobyobliczenia macierzy kowariancji o wymiarach 40 000 x 40 000 oraz wektorów własnycho takich samych długościach.

W związku z tym metoda Eigenfaces zawiera szereg modyfikacji przystosowującej algorytmPCA do efektywnej obróbki tak dużych zbiorów danych.

Na podstawie: • Błaszkowski P. Wykrywanie, rozpoznawanie i śledzenie ruchomych obiektów poprzez niezależną platformę monitorującą,

przy wykorzystaniu sztucznych sieci neuronowych. Praca magisterska, Politechnika Gdańska 2013;• Turk M.; Pentland A.; , “Eigenfaces for Recognition”, Journal of Cognitive Neuro-science, 1991.

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Rozpoznawanie twarzy

Metoda Eigenfaces

Pierwszą fazą algorytmu jest przygotowanie zbioru zdjęć uczących.

Przykładowy zbiór składający się z M=21 zdjęć, o rozmiarach: 100x120 pikseli

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Rozpoznawanie twarzy

Metoda Eigenfaces

Kolejną fazą algorytmu jest przekonwertowanie zbioru zdjęć uczących do skali odcieni szarości.

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Rozpoznawanie twarzy

Metoda Eigenfaces

Następnie należy obliczyć zdjęcie, będące średnią arytmetyczną wszystkich zdjęć uczących.

Ostatnim etapem przygotowywania próbek jest odjęcie od wszystkich zdjęć zdjęcia średniego.

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Rozpoznawanie twarzy

Metoda Eigenfaces – Algorytm

Kolejne zdjęcia uczące (w skali szarości) zapisywane są w postaci wektorów: o N2 elementach,średnie zdjęcie twarzy można przedstawić jako:

M1

i

M

n

nM 1

1

ii

Różnica pomiędzy poszczególnymi zdjęciami a wartością średnią wynosi:

Kolejnym etapem algorytmu jest stworzenie macierzy A, składającej się z kolejnych znormalizowanychwektorów zdjęć:

MMNA 212

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Rozpoznawanie twarzy

Metoda Eigenfaces – Algorytm

W klasycznym PCA macierz kowariancji (C) oblicza się, mnożąc macierz A przez jej transpozycję:

Następnie z tej macierzy oblicza się wektory i wartości własne. W przypadku przetwarzania obrazów daje to ogromną macierz o wymiarach N2xN2, której obliczenie jest czasowo (pamięciowo…) wymagające, a czasami (często) wręcz niemożliwe do wykonania.

W metodzie Eigenfaces stosuje się pewien trick a mianowicie macierz kowariancji (L) oblicza się, dokonując transpozycji macierzy A i AT, w następujący sposób:

T

MNMNAAC 22 *

Prowadzi to do zmniejszenia wymiarów problemu do MxM. Operacja ta nie powoduje straty informacji, a jednocześnie znacznie upraszcza analizę.

MN

T

MNAAL 22 *

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Rozpoznawanie twarzy

iii

TAA

iii

T AAAA

Metoda Eigenfaces – Algorytm

Następnie, ze zmodyfikowanej macierzy kowariancji L oblicza się wektory własne v i wartości własne λ, oraz wybiera się najważniejsze składniki główne. Liczba wektorów własnych potrzebnych do dobrego odzwierciedlenia zdjęcia jest znacznie mniejsza od liczby wszystkich wektorów własnych.

Wektory i wartości własne zmienionej macierzy kowariancji ATA, można przedstawić za pomocą:

Mnożąc to równanie obustronnie przez A otrzymujemy:

Z ostatniego równania można wywnioskować, że Avi są wektorami własnymi macierzy C=AAT.

Wynika z tego, że po analizie PCA w zmienionej przestrzeni, możliwe jest powrócenie do właściwychwektorów własnych u za pomocą:

ii Au

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Rozpoznawanie twarzy

Metoda Eigenfaces – Algorytm

Dla analizowanego przykładu, takie podejście redukuje rozmiar macierzy kowariancji poddanej PCAz 12000x12000 do 20x20. Spośród 12000 wektorów własnych, 20 wektorów wystarcza (???) dozadawalającego przedstawienia obrazu twarzy.

Wektory składników głównych uN2

x1 można przedstawić w postaci tzw. twarzy własnych (Eigen faces)o wymiarach NxN.

Dla omawianego przykładu, zbiór dwudziestu wybranych twarzy własnych wygląda następująco:

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Rozpoznawanie twarzy

k 1

T

kk u

Metoda Eigenfaces – Algorytm

Po wyznaczeniu twarzy własnych, należy wszystkie zdjęcia uczące przetransformować do przestrzenicech:

Zdjęcia w przestrzeni cech są opisane jako wektory wag:

z których każda waga ωk niesie informację o udziale danej twarzy własnej w obrazie.Długość wektora wag jest zatem równa liczbie twarzy własnych.

Transformacja wszystkich zdjęć uczących daje bazę danych do identyfikacji nieznanych twarzy.

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Rozpoznawanie twarzy

Metoda Eigenfaces

Przykładowa twarz i jej wektor wag utworzona przy wykorzystaniu 20 twarzy własnych

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Przykładowa twarz i jej wektor wag utworzonaprzy wykorzystaniu 20 twarzy własnych

Rekonstrukcja twarzy polega na odpowiednimprzemnożeniu poszczególnych elementówwektora wag przez odpowiadające twarzegłówne oraz dodaniu twarzy średniej.

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Rozpoznawanie twarzy

Metoda Eigenfaces + sieci neuronowe

Proces przygotowania danych do uczenia sieci neuronowej

Eigenfaces nie pozwala na identyfikacjętwarzy a jedynie na zmianie ich reprezentacji(głównie rozmiaru).

Celem rozpoznania twarzy należy użyćjakiegoś klasyfikatora np. metodynajbliższego sąsiada (odległość Euclidesowa)lub sieci neuronowych.

źródło: Turk M.; Pentland A.; , “Eigenfaces for Recognition”, Journal of Cognitive Neuro-science, 1991

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Przykład

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Convolutional Neural Networks (ConvNets, CNNs) - Deep Neural Networks

(Splotowe sieci neuronowe – Głębokie sieci neuronowe)

źródło: CS231n: Convolutional Neural Networks for Visual Recognition, 2016. Stanford University

Monitorowanie i diagnostyka w systemach sterowania

„AlexNet” - Alex Krizhevsky, Ilya Sutskever, Geoffrey E Hinton, 2012

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Convolutional Neural Networks (ConvNets, CNNs) - Deep Neural Networks

(Splotowe sieci neuronowe – Głębokie sieci neuronowe)

Monitorowanie i diagnostyka w systemach sterowania

https://devblogs.nvidia.com/parallelforall/deep-learning-nutshell-core-concepts/

An image of a traffic sign is filtered by 4 5×5 convolutional kernels which create 4 feature maps, these feature maps are subsampled by max pooling.

The next layer applies 10 5×5 convolutional kernels to these subsampled images and again we pool the feature maps. The final layer is a fully connected layer where all generated features are combined and used in the classifier (essentially logistic regression). Image by Maurice Peemen.

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Convolutional Neural Networks (ConvNets, CNNs) - Deep Neural Networks

(Splotowe sieci neuronowe – Głębokie sieci neuronowe)

Monitorowanie i diagnostyka w systemach sterowania

http://stats.stackexchange.com/questions/166429/convolutional-neural-network-constructing-c3-layer-from-s2

Convolutional Neural NetworksCS231n: Convolutional Neural Networks for

Visual Recognition, Lecture 7, 2016. Stanford University

Fragmenty prezentacji:

źródło:CS231n: Convolutional Neural Networks for Visual Recognition, 2016.Stanford University

Fei-Fei Li, Andrej Karpathy, Justin Johnson

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Convolutional Neural Networks

Monitorowanie i diagnostyka w systemach sterowania

źródło: http://brohrer.github.io/blog.html

Pies

Kot

Mysz

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Monitorowanie i diagnostyka w systemach sterowania

źródło: CS231n: Convolutional Neural Networks for Visual Recognition, 2016. Stanford University

Convolutional Neural Networks

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Monitorowanie i diagnostyka w systemach sterowania

źródło: CS231n: Convolutional Neural Networks for Visual Recognition, 2016. Stanford University

Convolutional Neural Networks

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Convolutional Neural Networks (ConvNets, CNNs)

źródło: CS231n , Lecture 7 : Convolutional Neural Networks for Visual Recognition, 2016. Stanford University

Monitorowanie i diagnostyka w systemach sterowania

32

32

3

Convolution Layer

32x32x3 image

width

height

depth

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Convolutional Neural Networks (ConvNets, CNNs)

źródło: CS231n , Lecture 7 : Convolutional Neural Networks for Visual Recognition, 2016. Stanford University

Monitorowanie i diagnostyka w systemach sterowania

32

32

3

Convolution Layer

5x5x3 filter

32x32x3 image

Convolve the filter with the imagei.e. “slide over the image spatially, computing dot products”

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Convolutional Neural Networks (ConvNets, CNNs)

źródło: CS231n , Lecture 7 : Convolutional Neural Networks for Visual Recognition, 2016. Stanford University

Monitorowanie i diagnostyka w systemach sterowania

32

32

3

Convolution Layer

5x5x3 filter

32x32x3 image

Convolve the filter with the imagei.e. “slide over the image spatially, computing dot products”

Filters always extend the full depth of the input volume

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Convolutional Neural Networks (ConvNets, CNNs)

źródło: CS231n , Lecture 7 : Convolutional Neural Networks for Visual Recognition, 2016. Stanford University

Monitorowanie i diagnostyka w systemach sterowania

32

32

3

Convolution Layer

32x32x3 image5x5x3 filter

1 number: the result of taking a dot product between the filter and a small 5x5x3 chunk of the image(i.e. 5*5*3 = 75-dimensional dot product + bias)

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Convolutional Neural Networks (ConvNets, CNNs)

źródło: CS231n , Lecture 7 : Convolutional Neural Networks for Visual Recognition, 2016. Stanford University

Monitorowanie i diagnostyka w systemach sterowania

32

32

3

Convolution Layer

32x32x3 image5x5x3 filter

convolve (slide) over all spatial locations

activation map

1

28

28

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Convolutional Neural Networks (ConvNets, CNNs)

źródło: CS231n , Lecture 7 : Convolutional Neural Networks for Visual Recognition, 2016. Stanford University

Monitorowanie i diagnostyka w systemach sterowania

32

32

3

Convolution Layer

32x32x3 image5x5x3 filter

convolve (slide) over all spatial locations

activation maps

1

28

28

consider a second, green filter

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Convolutional Neural Networks (ConvNets, CNNs)

źródło: CS231n , Lecture 7 : Convolutional Neural Networks for Visual Recognition, 2016. Stanford University

Monitorowanie i diagnostyka w systemach sterowania

32

32

3

Convolution Layer

activation maps

6

28

28

For example, if we had 6 5x5 filters, we’ll get 6 separate activation maps:

We stack these up to get a “new image” of size 28x28x6!

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Convolutional Neural Networks (ConvNets, CNNs)

źródło: CS231n , Lecture 7 : Convolutional Neural Networks for Visual Recognition, 2016. Stanford University

Monitorowanie i diagnostyka w systemach sterowania

Preview: ConvNet is a sequence of Convolution Layers, interspersed with activation functions

32

32

3

28

28

6

CONV,ReLUe.g. 6 5x5x3 filters

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Convolutional Neural Networks (ConvNets, CNNs)

źródło: CS231n , Lecture 7 : Convolutional Neural Networks for Visual Recognition, 2016. Stanford University

Monitorowanie i diagnostyka w systemach sterowania

Preview: ConvNet is a sequence of Convolutional Layers, interspersed with activation functions

32

32

3

CONV,ReLUe.g. 6 5x5x3 filters 28

28

6

CONV,ReLUe.g. 10 5x5x6 filters

CONV,ReLU

….

10

24

24

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Convolutional Neural Networks (ConvNets, CNNs)

źródło: CS231n , Lecture 7 : Convolutional Neural Networks for Visual Recognition, 2016. Stanford University

Monitorowanie i diagnostyka w systemach sterowania

The brain/neuron view of CONV Layer

32

32

3

32x32x3 image5x5x3 filter

1 number: the result of taking a dot product between the filter and this part of the image(i.e. 5*5*3 = 75-dimensional dot product)

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Convolutional Neural Networks (ConvNets, CNNs)

źródło: CS231n , Lecture 7 : Convolutional Neural Networks for Visual Recognition, 2016. Stanford University

Monitorowanie i diagnostyka w systemach sterowania

The brain/neuron view of CONV Layer

32

32

3

32x32x3 image5x5x3 filter

1 number: the result of taking a dot product between the filter and this part of the image(i.e. 5*5*3 = 75-dimensional dot product)

It’s just a neuron with local connectivity...

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Convolutional Neural Networks (ConvNets, CNNs)

źródło: CS231n , Lecture 7 : Convolutional Neural Networks for Visual Recognition, 2016. Stanford University

Monitorowanie i diagnostyka w systemach sterowania

The brain/neuron view of CONV Layer

32

32

3

An activation map is a 28x28 sheet of neuron outputs:1. Each is connected to a small region in the input2. All of them share parameters

“5x5 filter” -> “5x5 receptive field for each neuron”

28

28

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Convolutional Neural Networks (ConvNets, CNNs)

źródło: CS231n , Lecture 7 : Convolutional Neural Networks for Visual Recognition, 2016. Stanford University

Monitorowanie i diagnostyka w systemach sterowania

The brain/neuron view of CONV Layer

32

32

3

28

28

E.g. with 5 filters,CONV layer consists of neurons arranged in a 3D grid(28x28x5)

There will be 5 different neurons all looking at the same region in the input volume

5

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Convolutional Neural Networks (ConvNets, CNNs)

źródło: CS231n , Lecture 7 : Convolutional Neural Networks for Visual Recognition, 2016. Stanford University

Monitorowanie i diagnostyka w systemach sterowania

Pooling layer- makes the representations smaller and more manageable - operates over each activation map independently:

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Convolutional Neural Networks (ConvNets, CNNs) - Deep Neural Networks

Monitorowanie i diagnostyka w systemach sterowania

źródło: http://cs231n.stanford.edu/

Fragmenty prezentacji:

źródło:

Blog: Data Science and Robots

Brandon Rohrer

http://brohrer.github.io/blog.html

[email protected]

A toy ConvNet: X’s and O’s

X or OCNN

A two-dimensional

array of pixels

źródło: http://brohrer.github.io/blog.html

Trickier cases

CNN X

CNN O

źródło: http://brohrer.github.io/blog.html

Deciding is hard

=?

źródło: http://brohrer.github.io/blog.html

-1 -1 -1 -1 -1 -1 -1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 -1 -1 1 -1 -1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 -1 -1 -1 -1 -1 -1 -1

-1 -1 -1 -1 -1 -1 -1 -1 -1

-1 -1 -1 -1 -1 -1 1 -1 -1

-1 1 -1 -1 -1 1 -1 -1 -1

-1 -1 1 1 -1 1 -1 -1 -1

-1 -1 -1 -1 1 -1 -1 -1 -1

-1 -1 -1 1 -1 1 1 -1 -1

-1 -1 -1 1 -1 -1 -1 1 -1

-1 -1 1 -1 -1 -1 -1 -1 -1

-1 -1 -1 -1 -1 -1 -1 -1 -1

What computers see

=?

źródło: http://brohrer.github.io/blog.html

-1 -1 -1 -1 -1 -1 -1 -1 -1

-1 X -1 -1 -1 -1 X X -1

-1 X X -1 -1 X X -1 -1

-1 -1 X 1 -1 1 -1 -1 -1

-1 -1 -1 -1 1 -1 -1 -1 -1

-1 -1 -1 1 -1 1 X -1 -1

-1 -1 X X -1 -1 X X -1

-1 X X -1 -1 -1 -1 X -1

-1 -1 -1 -1 -1 -1 -1 -1 -1

What computers see

źródło: http://brohrer.github.io/blog.html

-1 -1 -1 -1 -1 -1 -1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 -1 -1 1 -1 -1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 -1 -1 -1 -1 -1 -1 -1

-1 -1 -1 -1 -1 -1 -1 -1 -1

-1 -1 -1 -1 -1 -1 1 -1 -1

-1 1 -1 -1 -1 1 -1 -1 -1

-1 -1 1 1 -1 1 -1 -1 -1

-1 -1 -1 -1 1 -1 -1 -1 -1

-1 -1 -1 1 -1 1 1 -1 -1

-1 -1 -1 1 -1 -1 -1 1 -1

-1 -1 1 -1 -1 -1 -1 -1 -1

-1 -1 -1 -1 -1 -1 -1 -1 -1

Computers are literal

=xźródło: http://brohrer.github.io/blog.html

ConvNets match pieces of the image

=

=

=

źródło: http://brohrer.github.io/blog.html

1 -1 -1

-1 1 -1

-1 -1 1

-1 -1 1

-1 1 -1

1 -1 -1

1 -1 1

-1 1 -1

1 -1 1

Features match pieces of the image

źródło: http://brohrer.github.io/blog.html

1 -1 -1

-1 1 -1

-1 -1 1

-1 -1 1

-1 1 -1

1 -1 -1

1 -1 1

-1 1 -1

1 -1 1

źródło: http://brohrer.github.io/blog.html

1 -1 -1

-1 1 -1

-1 -1 1

-1 -1 1

-1 1 -1

1 -1 -1

1 -1 1

-1 1 -1

1 -1 1

źródło: http://brohrer.github.io/blog.html

1 -1 -1

-1 1 -1

-1 -1 1

-1 -1 1

-1 1 -1

1 -1 -1

1 -1 1

-1 1 -1

1 -1 1

źródło: http://brohrer.github.io/blog.html

1 -1 -1

-1 1 -1

-1 -1 1

-1 -1 1

-1 1 -1

1 -1 -1

1 -1 1

-1 1 -1

1 -1 1

źródło: http://brohrer.github.io/blog.html

1 -1 -1

-1 1 -1

-1 -1 1

-1 -1 1

-1 1 -1

1 -1 -1

1 -1 1

-1 1 -1

1 -1 1

źródło: http://brohrer.github.io/blog.html

1 -1 -1

-1 1 -1

-1 -1 1

-1 -1 -1 -1 -1 -1 -1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 -1 -1 1 -1 -1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 -1 -1 -1 -1 -1 -1 -1

Filtering: The math behind the match

źródło: http://brohrer.github.io/blog.html

Filtering: The math behind the match

źródło: http://brohrer.github.io/blog.html

1 -1 -1

-1 1 -1

-1 -1 1

-1 -1 -1 -1 -1 -1 -1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 -1 -1 1 -1 -1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 -1 -1 -1 -1 -1 -1 -1

Filtering: The math behind the match

źródło: http://brohrer.github.io/blog.html

11 -1 -1

-1 1 -1

-1 -1 1

-1 -1 -1 -1 -1 -1 -1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 -1 -1 1 -1 -1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 -1 -1 -1 -1 -1 -1 -1

Filtering: The math behind the match

źródło: http://brohrer.github.io/blog.html

1 11 -1 -1

-1 1 -1

-1 -1 1

-1 -1 -1 -1 -1 -1 -1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 -1 -1 1 -1 -1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 -1 -1 -1 -1 -1 -1 -1

Filtering: The math behind the match

źródło: http://brohrer.github.io/blog.html

1 1 11 -1 -1

-1 1 -1

-1 -1 1

-1 -1 -1 -1 -1 -1 -1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 -1 -1 1 -1 -1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 -1 -1 -1 -1 -1 -1 -1

Filtering: The math behind the match

źródło: http://brohrer.github.io/blog.html

1 1 1

1

1 -1 -1

-1 1 -1

-1 -1 1

-1 -1 -1 -1 -1 -1 -1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 -1 -1 1 -1 -1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 -1 -1 -1 -1 -1 -1 -1

Filtering: The math behind the match

źródło: http://brohrer.github.io/blog.html

1 1 1

1 1

1 -1 -1

-1 1 -1

-1 -1 1

-1 -1 -1 -1 -1 -1 -1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 -1 -1 1 -1 -1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 -1 -1 -1 -1 -1 -1 -1

Filtering: The math behind the match

źródło: http://brohrer.github.io/blog.html

1 1 1

1 1 1

1 -1 -1

-1 1 -1

-1 -1 1

-1 -1 -1 -1 -1 -1 -1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 -1 -1 1 -1 -1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 -1 -1 -1 -1 -1 -1 -1

Filtering: The math behind the match

źródło: http://brohrer.github.io/blog.html

1 1 1

1 1 1

1

1 -1 -1

-1 1 -1

-1 -1 1

-1 -1 -1 -1 -1 -1 -1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 -1 -1 1 -1 -1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 -1 -1 -1 -1 -1 -1 -1

Filtering: The math behind the match

źródło: http://brohrer.github.io/blog.html

1 1 1

1 1 1

1 1

1 -1 -1

-1 1 -1

-1 -1 1

-1 -1 -1 -1 -1 -1 -1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 -1 -1 1 -1 -1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 -1 -1 -1 -1 -1 -1 -1

Filtering: The math behind the match

źródło: http://brohrer.github.io/blog.html

1 1 1

1 1 1

1 1 1

1 -1 -1

-1 1 -1

-1 -1 1

-1 -1 -1 -1 -1 -1 -1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 -1 -1 1 -1 -1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 -1 -1 -1 -1 -1 -1 -1

Filtering: The math behind the match

źródło: http://brohrer.github.io/blog.html

1

1 1 1

1 1 1

1 1 1

1 -1 -1

-1 1 -1

-1 -1 1

-1 -1 -1 -1 -1 -1 -1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 -1 -1 1 -1 -1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 -1 -1 -1 -1 -1 -1 -1

Filtering: The math behind the match

źródło: http://brohrer.github.io/blog.html

11 -1 -1

-1 1 -1

-1 -1 1

-1 -1 -1 -1 -1 -1 -1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 -1 -1 1 -1 -1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 -1 -1 -1 -1 -1 -1 -1

Filtering: The math behind the match

źródło: http://brohrer.github.io/blog.html

1 1 -11 -1 -1

-1 1 -1

-1 -1 1

-1 -1 -1 -1 -1 -1 -1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 -1 -1 1 -1 -1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 -1 -1 -1 -1 -1 -1 -1

Filtering: The math behind the match

źródło: http://brohrer.github.io/blog.html

1 1 -1

1 1 1

-1 1 1

1 -1 -1

-1 1 -1

-1 -1 1

-1 -1 -1 -1 -1 -1 -1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 -1 -1 1 -1 -1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 -1 -1 -1 -1 -1 -1 -1

Filtering: The math behind the match

źródło: http://brohrer.github.io/blog.html

1

1 -1 -1

-1 1 -1

-1 -1 1

-1 -1 -1 -1 -1 -1 -1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 -1 -1 1 -1 -1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 -1 -1 -1 -1 -1 -1 -1

1 1 -1

1 1 1

-1 1 1

Filtering: The math behind the match

55

1 1 -1

1 1 1

-1 1 1

źródło: http://brohrer.github.io/blog.html

1 -1 -1

-1 1 -1

-1 -1 1

-1 -1 -1 -1 -1 -1 -1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 -1 -1 1 -1 -1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 -1 -1 -1 -1 -1 -1 -1

Convolution: Trying every possible match

0.77 -0.11 0.11 0.33 0.55 -0.11 0.33

-0.11 1.00 -0.11 0.33 -0.11 0.11 -0.11

0.11 -0.11 1.00 -0.33 0.11 -0.11 0.55

0.33 0.33 -0.33 0.55 -0.33 0.33 0.33

0.55 -0.11 0.11 -0.33 1.00 -0.11 0.11

-0.11 0.11 -0.11 0.33 -0.11 1.00 -0.11

0.33 -0.11 0.55 0.33 0.11 -0.11 0.77

źródło: http://brohrer.github.io/blog.html

1 -1 -1

-1 1 -1

-1 -1 1

-1 -1 -1 -1 -1 -1 -1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 -1 -1 1 -1 -1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 -1 -1 -1 -1 -1 -1 -1

Convolution: Trying every possible match

=

0.77 -0.11 0.11 0.33 0.55 -0.11 0.33

-0.11 1.00 -0.11 0.33 -0.11 0.11 -0.11

0.11 -0.11 1.00 -0.33 0.11 -0.11 0.55

0.33 0.33 -0.33 0.55 -0.33 0.33 0.33

0.55 -0.11 0.11 -0.33 1.00 -0.11 0.11

-0.11 0.11 -0.11 0.33 -0.11 1.00 -0.11

0.33 -0.11 0.55 0.33 0.11 -0.11 0.77

źródło: http://brohrer.github.io/blog.html

1 -1 -1

-1 1 -1

-1 -1 1

0.33 -0.11 0.55 0.33 0.11 -0.11 0.77

-0.11 0.11 -0.11 0.33 -0.11 1.00 -0.11

0.55 -0.11 0.11 -0.33 1.00 -0.11 0.11

0.33 0.33 -0.33 0.55 -0.33 0.33 0.33

0.11 -0.11 1.00 -0.33 0.11 -0.11 0.55

-0.11 1.00 -0.11 0.33 -0.11 0.11 -0.11

0.77 -0.11 0.11 0.33 0.55 -0.11 0.33

-1 -1 -1 -1 -1 -1 -1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 -1 -1 1 -1 -1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 -1 -1 -1 -1 -1 -1 -1

=

0.77 -0.11 0.11 0.33 0.55 -0.11 0.33

-0.11 1.00 -0.11 0.33 -0.11 0.11 -0.11

0.11 -0.11 1.00 -0.33 0.11 -0.11 0.55

0.33 0.33 -0.33 0.55 -0.33 0.33 0.33

0.55 -0.11 0.11 -0.33 1.00 -0.11 0.11

-0.11 0.11 -0.11 0.33 -0.11 1.00 -0.11

0.33 -0.11 0.55 0.33 0.11 -0.11 0.77

-1 -1 1

-1 1 -1

1 -1 -1

1 -1 1

-1 1 -1

1 -1 1

0.33 -0.55 0.11 -0.11 0.11 -0.55 0.33

-0.55 0.55 -0.55 0.33 -0.55 0.55 -0.55

0.11 -0.55 0.55 -0.77 0.55 -0.55 0.11

-0.11 0.33 -0.77 1.00 -0.77 0.33 -0.11

0.11 -0.55 0.55 -0.77 0.55 -0.55 0.11

-0.55 0.55 -0.55 0.33 -0.55 0.55 -0.55

0.33 -0.55 0.11 -0.11 0.11 -0.55 0.33

=

=

-1 -1 -1 -1 -1 -1 -1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 -1 -1 1 -1 -1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 -1 -1 -1 -1 -1 -1 -1

-1 -1 -1 -1 -1 -1 -1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 -1 -1 1 -1 -1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 -1 -1 -1 -1 -1 -1 -1

źródło: http://brohrer.github.io/blog.html

Convolution layer

0.33 -0.11 0.55 0.33 0.11 -0.11 0.77

-0.11 0.11 -0.11 0.33 -0.11 1.00 -0.11

0.55 -0.11 0.11 -0.33 1.00 -0.11 0.11

0.33 0.33 -0.33 0.55 -0.33 0.33 0.33

0.11 -0.11 1.00 -0.33 0.11 -0.11 0.55

-0.11 1.00 -0.11 0.33 -0.11 0.11 -0.11

0.77 -0.11 0.11 0.33 0.55 -0.11 0.33

1 -1 -1

-1 1 -1

-1 -1 1

0.77 -0.11 0.11 0.33 0.55 -0.11 0.33

-0.11 1.00 -0.11 0.33 -0.11 0.11 -0.11

0.11 -0.11 1.00 -0.33 0.11 -0.11 0.55

0.33 0.33 -0.33 0.55 -0.33 0.33 0.33

0.55 -0.11 0.11 -0.33 1.00 -0.11 0.11

-0.11 0.11 -0.11 0.33 -0.11 1.00 -0.11

0.33 -0.11 0.55 0.33 0.11 -0.11 0.77

-1 -1 1

-1 1 -1

1 -1 -1

1 -1 1

-1 1 -1

1 -1 1

0.33 -0.55 0.11 -0.11 0.11 -0.55 0.33

-0.55 0.55 -0.55 0.33 -0.55 0.55 -0.55

0.11 -0.55 0.55 -0.77 0.55 -0.55 0.11

-0.11 0.33 -0.77 1.00 -0.77 0.33 -0.11

0.11 -0.55 0.55 -0.77 0.55 -0.55 0.11

-0.55 0.55 -0.55 0.33 -0.55 0.55 -0.55

0.33 -0.55 0.11 -0.11 0.11 -0.55 0.33

-1 -1 -1 -1 -1 -1 -1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 -1 -1 1 -1 -1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 -1 -1 -1 -1 -1 -1 -1

źródło: http://brohrer.github.io/blog.html

Convolution layer

0.33 -0.11 0.55 0.33 0.11 -0.11 0.77

-0.11 0.11 -0.11 0.33 -0.11 1.00 -0.11

0.55 -0.11 0.11 -0.33 1.00 -0.11 0.11

0.33 0.33 -0.33 0.55 -0.33 0.33 0.33

0.11 -0.11 1.00 -0.33 0.11 -0.11 0.55

-0.11 1.00 -0.11 0.33 -0.11 0.11 -0.11

0.77 -0.11 0.11 0.33 0.55 -0.11 0.33

0.77 -0.11 0.11 0.33 0.55 -0.11 0.33

-0.11 1.00 -0.11 0.33 -0.11 0.11 -0.11

0.11 -0.11 1.00 -0.33 0.11 -0.11 0.55

0.33 0.33 -0.33 0.55 -0.33 0.33 0.33

0.55 -0.11 0.11 -0.33 1.00 -0.11 0.11

-0.11 0.11 -0.11 0.33 -0.11 1.00 -0.11

0.33 -0.11 0.55 0.33 0.11 -0.11 0.77

0.33 -0.55 0.11 -0.11 0.11 -0.55 0.33

-0.55 0.55 -0.55 0.33 -0.55 0.55 -0.55

0.11 -0.55 0.55 -0.77 0.55 -0.55 0.11

-0.11 0.33 -0.77 1.00 -0.77 0.33 -0.11

0.11 -0.55 0.55 -0.77 0.55 -0.55 0.11

-0.55 0.55 -0.55 0.33 -0.55 0.55 -0.55

0.33 -0.55 0.11 -0.11 0.11 -0.55 0.33

-1 -1 -1 -1 -1 -1 -1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 -1 -1 1 -1 -1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 -1 -1 -1 -1 -1 -1 -1

źródło: http://brohrer.github.io/blog.html

Pooling: Shrinking the image stack

źródło: http://brohrer.github.io/blog.html

1.00

Pooling

0.77 -0.11 0.11 0.33 0.55 -0.11 0.33

-0.11 1.00 -0.11 0.33 -0.11 0.11 -0.11

0.11 -0.11 1.00 -0.33 0.11 -0.11 0.55

0.33 0.33 -0.33 0.55 -0.33 0.33 0.33

0.55 -0.11 0.11 -0.33 1.00 -0.11 0.11

-0.11 0.11 -0.11 0.33 -0.11 1.00 -0.11

0.33 -0.11 0.55 0.33 0.11 -0.11 0.77

źródło: http://brohrer.github.io/blog.html

1.00 0.33

Pooling

0.77 -0.11 0.11 0.33 0.55 -0.11 0.33

-0.11 1.00 -0.11 0.33 -0.11 0.11 -0.11

0.11 -0.11 1.00 -0.33 0.11 -0.11 0.55

0.33 0.33 -0.33 0.55 -0.33 0.33 0.33

0.55 -0.11 0.11 -0.33 1.00 -0.11 0.11

-0.11 0.11 -0.11 0.33 -0.11 1.00 -0.11

0.33 -0.11 0.55 0.33 0.11 -0.11 0.77

źródło: http://brohrer.github.io/blog.html

1.00 0.33 0.55 0.33

0.33 1.00 0.33 0.55

0.55 0.33 1.00 0.11

0.33 0.55 0.11 0.77

Pooling

0.77 -0.11 0.11 0.33 0.55 -0.11 0.33

-0.11 1.00 -0.11 0.33 -0.11 0.11 -0.11

0.11 -0.11 1.00 -0.33 0.11 -0.11 0.55

0.33 0.33 -0.33 0.55 -0.33 0.33 0.33

0.55 -0.11 0.11 -0.33 1.00 -0.11 0.11

-0.11 0.11 -0.11 0.33 -0.11 1.00 -0.11

0.33 -0.11 0.55 0.33 0.11 -0.11 0.77

źródło: http://brohrer.github.io/blog.html

1.00 0.33 0.55 0.33

0.33 1.00 0.33 0.55

0.55 0.33 1.00 0.11

0.33 0.55 0.11 0.77

0.33 -0.11 0.55 0.33 0.11 -0.11 0.77

-0.11 0.11 -0.11 0.33 -0.11 1.00 -0.11

0.55 -0.11 0.11 -0.33 1.00 -0.11 0.11

0.33 0.33 -0.33 0.55 -0.33 0.33 0.33

0.11 -0.11 1.00 -0.33 0.11 -0.11 0.55

-0.11 1.00 -0.11 0.33 -0.11 0.11 -0.11

0.77 -0.11 0.11 0.33 0.55 -0.11 0.33

0.77 -0.11 0.11 0.33 0.55 -0.11 0.33

-0.11 1.00 -0.11 0.33 -0.11 0.11 -0.11

0.11 -0.11 1.00 -0.33 0.11 -0.11 0.55

0.33 0.33 -0.33 0.55 -0.33 0.33 0.33

0.55 -0.11 0.11 -0.33 1.00 -0.11 0.11

-0.11 0.11 -0.11 0.33 -0.11 1.00 -0.11

0.33 -0.11 0.55 0.33 0.11 -0.11 0.77

0.33 -0.55 0.11 -0.11 0.11 -0.55 0.33

-0.55 0.55 -0.55 0.33 -0.55 0.55 -0.55

0.11 -0.55 0.55 -0.77 0.55 -0.55 0.11

-0.11 0.33 -0.77 1.00 -0.77 0.33 -0.11

0.11 -0.55 0.55 -0.77 0.55 -0.55 0.11

-0.55 0.55 -0.55 0.33 -0.55 0.55 -0.55

0.33 -0.55 0.11 -0.11 0.11 -0.55 0.33

0.33 0.55 1.00 0.77

0.55 0.55 1.00 0.33

1.00 1.00 0.11 0.55

0.77 0.33 0.55 0.33

0.55 0.33 0.55 0.33

0.33 1.00 0.55 0.11

0.55 0.55 0.55 0.11

0.33 0.11 0.11 0.33

źródło: http://brohrer.github.io/blog.html

Pooling layer

Rectified Linear Units (ReLUs)

0.77 -0.11 0.11 0.33 0.55 -0.11 0.33

-0.11 1.00 -0.11 0.33 -0.11 0.11 -0.11

0.11 -0.11 1.00 -0.33 0.11 -0.11 0.55

0.33 0.33 -0.33 0.55 -0.33 0.33 0.33

0.55 -0.11 0.11 -0.33 1.00 -0.11 0.11

-0.11 0.11 -0.11 0.33 -0.11 1.00 -0.11

0.33 -0.11 0.55 0.33 0.11 -0.11 0.77

0.77

źródło: http://brohrer.github.io/blog.html

Normalization: Change everything negative to zero

0.77 0

Rectified Linear Units (ReLUs)

0.77 -0.11 0.11 0.33 0.55 -0.11 0.33

-0.11 1.00 -0.11 0.33 -0.11 0.11 -0.11

0.11 -0.11 1.00 -0.33 0.11 -0.11 0.55

0.33 0.33 -0.33 0.55 -0.33 0.33 0.33

0.55 -0.11 0.11 -0.33 1.00 -0.11 0.11

-0.11 0.11 -0.11 0.33 -0.11 1.00 -0.11

0.33 -0.11 0.55 0.33 0.11 -0.11 0.77

źródło: http://brohrer.github.io/blog.html

0.77 0 0.11 0.33 0.55 0 0.33

0 1.00 0 0.33 0 0.11 0

0.11 0 1.00 0 0.11 0 0.55

0.33 0.33 0 0.55 0 0.33 0.33

0.55 0 0.11 0 1.00 0 0.11

0 0.11 0 0.33 0 1.00 0

0.33 0 0.55 0.33 0.11 0 0.77

Rectified Linear Units (ReLUs)

0.77 -0.11 0.11 0.33 0.55 -0.11 0.33

-0.11 1.00 -0.11 0.33 -0.11 0.11 -0.11

0.11 -0.11 1.00 -0.33 0.11 -0.11 0.55

0.33 0.33 -0.33 0.55 -0.33 0.33 0.33

0.55 -0.11 0.11 -0.33 1.00 -0.11 0.11

-0.11 0.11 -0.11 0.33 -0.11 1.00 -0.11

0.33 -0.11 0.55 0.33 0.11 -0.11 0.77

źródło: http://brohrer.github.io/blog.html

ReLU layer

0.77 0 0.11 0.33 0.55 0 0.33

0 1.00 0 0.33 0 0.11 0

0.11 0 1.00 0 0.11 0 0.55

0.33 0.33 0 0.55 0 0.33 0.33

0.55 0 0.11 0 1.00 0 0.11

0 0.11 0 0.33 0 1.00 0

0.33 0 0.55 0.33 0.11 0 0.77

0.33 0 0.11 0 0.11 0 0.33

0 0.55 0 0.33 0 0.55 0

0.11 0 0.55 0 0.55 0 0.11

0 0.33 0 1.00 0 0.33 0

0.11 0 0.55 0 0.55 0 0.11

0 0.55 0 0.33 0 0.55 0

0.33 0 0.11 0 0.11 0 0.33

0.33 0 0.55 0.33 0.11 0 0.77

0 0.11 0 0.33 0 1.00 0

0.55 0 0.11 0 1.00 0 0.11

0.33 0.33 0 0.55 0 0.33 0.33

0.11 0 1.00 0 0.11 0 0.55

0 1.00 0 0.33 0 0.11 0

0.77 0 0.11 0.33 0.55 0 0.33

0.33 -0.11 0.55 0.33 0.11 -0.11 0.77

-0.11 0.11 -0.11 0.33 -0.11 1.00 -0.11

0.55 -0.11 0.11 -0.33 1.00 -0.11 0.11

0.33 0.33 -0.33 0.55 -0.33 0.33 0.33

0.11 -0.11 1.00 -0.33 0.11 -0.11 0.55

-0.11 1.00 -0.11 0.33 -0.11 0.11 -0.11

0.77 -0.11 0.11 0.33 0.55 -0.11 0.33

0.77 -0.11 0.11 0.33 0.55 -0.11 0.33

-0.11 1.00 -0.11 0.33 -0.11 0.11 -0.11

0.11 -0.11 1.00 -0.33 0.11 -0.11 0.55

0.33 0.33 -0.33 0.55 -0.33 0.33 0.33

0.55 -0.11 0.11 -0.33 1.00 -0.11 0.11

-0.11 0.11 -0.11 0.33 -0.11 1.00 -0.11

0.33 -0.11 0.55 0.33 0.11 -0.11 0.77

0.33 -0.55 0.11 -0.11 0.11 -0.55 0.33

-0.55 0.55 -0.55 0.33 -0.55 0.55 -0.55

0.11 -0.55 0.55 -0.77 0.55 -0.55 0.11

-0.11 0.33 -0.77 1.00 -0.77 0.33 -0.11

0.11 -0.55 0.55 -0.77 0.55 -0.55 0.11

-0.55 0.55 -0.55 0.33 -0.55 0.55 -0.55

0.33 -0.55 0.11 -0.11 0.11 -0.55 0.33

źródło: http://brohrer.github.io/blog.html

Layers get stacked

-1 -1 -1 -1 -1 -1 -1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 -1 -1 1 -1 -1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 -1 -1 -1 -1 -1 -1 -1

1.00 0.33 0.55 0.33

0.33 1.00 0.33 0.55

0.55 0.33 1.00 0.11

0.33 0.55 0.11 0.77

0.33 0.55 1.00 0.77

0.55 0.55 1.00 0.33

1.00 1.00 0.11 0.55

0.77 0.33 0.55 0.33

0.55 0.33 0.55 0.33

0.33 1.00 0.55 0.11

0.55 0.55 0.55 0.11

0.33 0.11 0.11 0.33

źródło: http://brohrer.github.io/blog.html

Deep stacking

-1 -1 -1 -1 -1 -1 -1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 -1 -1 1 -1 -1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 -1 -1 -1 -1 -1 -1 -1

1.00 0.55

0.55 1.00

0.55 1.00

1.00 0.55

1.00 0.55

0.55 0.55

źródło: http://brohrer.github.io/blog.html

Fully connected layer

1.00 0.55

0.55 1.00

0.55 1.00

1.00 0.55

1.00 0.55

0.55 0.55

1.00

0.55

0.55

1.00

1.00

0.55

0.55

0.55

0.55

1.00

1.00

0.55

źródło: http://brohrer.github.io/blog.html

Fully connected layer

X

O

1.00

0.55

0.55

1.00

1.00

0.55

0.55

0.55

0.55

1.00

1.00

0.55

źródło: http://brohrer.github.io/blog.html

Fully connected layer

X

O

0.55

1.00

1.00

0.55

0.55

0.55

0.55

0.55

1.00

0.55

0.55

1.00

źródło: http://brohrer.github.io/blog.html

Fully connected layer

X

O

0.9

0.65

0.45

0.87

0.96

0.73

0.23

0.63

0.44

0.89

0.94

0.53

źródło: http://brohrer.github.io/blog.html

Fully connected layer

X

O

0.9

0.65

0.45

0.87

0.96

0.73

0.23

0.63

0.44

0.89

0.94

0.53

źródło: http://brohrer.github.io/blog.html

Fully connected layer

X

O

0.9

0.65

0.45

0.87

0.96

0.73

0.23

0.63

0.44

0.89

0.94

0.53

źródło: http://brohrer.github.io/blog.html

Fully connected layer

X

O

0.9

0.65

0.45

0.87

0.96

0.73

0.23

0.63

0.44

0.89

0.94

0.53

źródło: http://brohrer.github.io/blog.html

Fully connected layer

X

O

0.9

0.65

0.45

0.87

0.96

0.73

0.23

0.63

0.44

0.89

0.94

0.53

źródło: http://brohrer.github.io/blog.html

Fully connected layer

X

O

0.9

0.65

0.45

0.87

0.96

0.73

0.23

0.63

0.44

0.89

0.94

0.53

źródło: http://brohrer.github.io/blog.html

Fully connected layer

X

O

0.9

0.65

0.45

0.87

0.96

0.73

0.23

0.63

0.44

0.89

0.94

0.53

źródło: http://brohrer.github.io/blog.html

Fully connected layer

X

O

0.9

0.65

0.45

0.87

0.96

0.73

0.23

0.63

0.44

0.89

0.94

0.53

źródło: http://brohrer.github.io/blog.html

Putting it all together

-1 -1 -1 -1 -1 -1 -1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 -1 -1 1 -1 -1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 -1 -1 -1 -1 -1 -1 -1

X

O

źródło: http://brohrer.github.io/blog.html

Learning

źródło: http://brohrer.github.io/blog.html

Backprop

-1 -1 -1 -1 -1 -1 -1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 -1 -1 1 -1 -1 -1 -1

-1 -1 -1 1 -1 1 -1 -1 -1

-1 -1 1 -1 -1 -1 1 -1 -1

-1 1 -1 -1 -1 -1 -1 1 -1

-1 -1 -1 -1 -1 -1 -1 -1 -1

X

O

źródło: http://brohrer.github.io/blog.html

Fragmenty prezentacji:

źródło:

https://youtu.be/AgkfIQ4IGaM

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Convolutional Neural Networks

źródło: Taigman et al. 2014: DeepFace: Closing the Gap to Human-Level Performance in Face Verification

Monitorowanie i diagnostyka w systemach sterowania

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Convolutional Neural Networks

Monitorowanie i diagnostyka w systemach sterowania

źródło: Taigman et al. 2014: DeepFace: Closing the Gap to Human-Level Performance in Face Verification

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Convolutional Neural Networks (ConvNets, CNNs) - Deep Neural Networks

Monitorowanie i diagnostyka w systemach sterowania

źródło: Arkadiusz Kwasigroch, Praca magisterska

Przykład – Koty i psy

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Convolutional Neural Networks (ConvNets, CNNs) - Deep Neural Networks

Monitorowanie i diagnostyka w systemach sterowania

Jak to napisać ?

https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Convolutional Neural Networks (ConvNets, CNNs) - Deep Neural Networks

Monitorowanie i diagnostyka w systemach sterowania

Jak to policzyć ?

http://www.nvidia.pl/object/deep-learning-pl.html

NVIDIA TITAN X

Akcelerator procesu uczenia w głębokim

uczeniu do komputerów stacjonarnych.

3584 rdzenie NVIDIA CUDA® taktowane

częstotliwością 1,5 GHz, karta TITAN X

oferuje wydajność na poziomie 11

TFLOPS. Dodatkowo wyposażono ją w 12

GB pamięci GDDR5X - jest to jedna z

najszybszych technologii pamięci na

świecie.

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Convolutional Neural Networks (ConvNets, CNNs) - Deep Neural Networks

Monitorowanie i diagnostyka w systemach sterowania

Jak to policzyć ?

NVIDIA JETSON TX1

Jetson TX1 to superkomputer w formie

modułu o rozmiarach karty kredytowej.

Jetson TX1 wyposażony w 256 rdzeni

CUDA, zapewniając ponad 1 TeraFLOP

mocy obliczeniowej. 64-bitowym jednostki

CPU, kodowanie i dekodowanie wideo 4K

oraz interfejs kamer o wydajności na

poziomie 1400 MPix/s.

http://www.nvidia.pl/object/jetson-embedded-systems-pl.html

źródło: CS231n: Convolutional NeuralNetworks for Visual Recognition, 2016 –Lecture6. Stanford

University

DeepDream

Politechnika GdańskaWydział Elektrotechniki i Automatyki

Katedra Inżynierii Systemów Sterowania

Monitorowanie i diagnostyka w systemach sterowania

Dziękuję za bardzo (!!) liczny udział w wykładach