ANDRZEJ LEWICKI - CORE · prace nad testami (adaptacja skali Wechslera, testy pro ...
Monitorowanie i Diagnostyka w Systemach Sterowania · Stanford University Sikora M. Inteligentny...
-
Upload
nguyenthien -
Category
Documents
-
view
221 -
download
0
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
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
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
-1 -1 -1 -1 -1 -1 -1 -1 -1
-1 1 -1 -1 -1 -1 -1 1 -1
-1 -1 1 -1 -1 -1 1 -1 -1
-1 -1 -1 1 -1 1 -1 -1 -1
-1 -1 -1 -1 1 -1 -1 -1 -1
-1 -1 -1 1 -1 1 -1 -1 -1
-1 -1 1 -1 -1 -1 1 -1 -1
-1 1 -1 -1 -1 -1 -1 1 -1
-1 -1 -1 -1 -1 -1 -1 -1 -1
-1 -1 -1 -1 -1 -1 -1 -1 -1
-1 -1 -1 -1 -1 -1 1 -1 -1
-1 1 -1 -1 -1 1 -1 -1 -1
-1 -1 1 1 -1 1 -1 -1 -1
-1 -1 -1 -1 1 -1 -1 -1 -1
-1 -1 -1 1 -1 1 1 -1 -1
-1 -1 -1 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
1 -1 -1
-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
1 -1 -1
-1 1 -1
-1 -1 1
-1 -1 -1 -1 -1 -1 -1 -1 -1
-1 1 -1 -1 -1 -1 -1 1 -1
-1 -1 1 -1 -1 -1 1 -1 -1
-1 -1 -1 1 -1 1 -1 -1 -1
-1 -1 -1 -1 1 -1 -1 -1 -1
-1 -1 -1 1 -1 1 -1 -1 -1
-1 -1 1 -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
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
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
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