Detektyw pod przykrywką. Robot Maqueen i rozpoznawanie twarzy

Czas czytania: 6 min.

Z drogi śledzie, Maqueen Plus jedzie. Śledziom robot może nie zagraża, ale przestępcom już tak. Oto pomysł stworzenia najmniejszego Robocopa świata. Oprócz tego zajmiemy się szerzej rozpoznawaniem twarzy. 

Dzisiejszy artykuł to:

  • prezentacja fascynującego projektu, który można wdrożyć z wykorzystaniem małego robota, 
  • przedstawienie sposobów komputerowego rozpoznawania twarzy (ang. face recognition). 

Po latach rozwoju technologia rozpoznawania twarzy zaczęła się… cóż, rozwijać nareszcie. Przy wjeździe na węzeł komunikacji miejskiej informacje ze zdjęcia na karcie identyfikacyjnej są porównywane przez kamerę, zegar skanuje twarz w pracy, twarz skanują systemy płatności elektronicznych, w smartfonie działa funkcja face-to-unlock. Przykładów jest mnóstwo i są coraz powszechniejsze.

Technologia rozpoznawania twarzy została również skutecznie zastosowana w dziedzinie bezpieczeństwa publicznego, np. przy aresztowaniu poszukiwanych. W ostatnich latach wielu przestępców aresztowano podczas koncertów gwiazd. Dzięki wykorzystaniu technologii rozpoznawania twarzy AI, gdy zbieg przechodzi przez kontrolę bezpieczeństwa, kamera rejestruje informacje o jego twarzy i porównuje je z bazą danych back-end. Następnie system wydaje komunikat ostrzegawczy. Jeszcze niedawno pisaliśmy o tym w kontekście uczenia maszynowego, które jest wykonywane na podstawie twarzy oraz linii papilarnych przy okazji kamer CCTV oraz ASUS Tinker Edge

Ludzka twarz, podobnie jak inne cechy ludzkiego ciała (odcisk palca, tęczówka itp.), rodzi się z pewną niepowtarzalnością. Nie jest łatwa do powielenia. Obrazy twarzy należą do kategorii obrazów, które zaczęły być badane jako jedne z najwcześniejszych i są również najczęściej wykorzystywane w dziedzinie widzenia komputerowego. Właśnie tę funkcję wykorzystuje HuskyLens montowany w robocie Maqueen Plus. Jeszcze do tego wrócimy.

Rozpoznawanie twarzy - jak działa?

Rozpoznawanie twarzy to rodzaj technologii identyfikacji biometrycznej opartej na informacjach o rysach twarzy człowieka. Poprzez zbieranie obrazów lub filmów wideo zawierających ludzkie twarze za pomocą kamer, automatyczne wykrywanie informacji obrazowych i śledzenie ludzkich twarzy, wykonywana jest seria analiz technicznych na wykrytych ludzkich twarzach.

W procesie rozpoznawania twarzy istnieją cztery kluczowe etapy:

  • Face Detection (wykrywanie, znajdowanie twarzy)
  • Face Alignment (dostosowywanie, ustawianie twarzy),
  • Face Encoding (kodowanie twarzy),
  • Face Comparison (porównanie twarzy).

Krok 1 – Face Detection. Twarze ustawione pod różnym kątem są rozpoznawane i oznaczane dzięki tzw. feature points

Krok 2 – Face Alignment. Twarze są identyfikowane pod różnymi kątami i umieszcza się na nich punkty charakterystyczne.

Krok 3 – Face Encoding. Ten etap można rozumieć jako wydobywanie informacji o twarzy i przekształcanie ich w informacje zrozumiałe dla komputerów.

Krok 4 – Face Comparison. To porównywanie informacji o twarzy z istniejącą bazą danych, aby uzyskać ocenę podobieństwa i dać wynik porównania.

Podobieństwo i zmienność ludzkiej twarzy

Teza, że wszyscy jesteśmy różni i unikalni, nie jest do końca prawdziwa. Dla algorytmu różnych twarzy nie cechują aż tak wielkie różnice, jak mogłoby się wydawać. Chodzi o to, że struktura wszystkich ludzkich twarzy jest podobna – nos ma swoje “zwyczajowe” miejsce, prawda? Nawet struktura i wygląd organów twarzy ludzkiej są bardzo podobne. Ta cecha jest korzystna dla umiejscowienia ludzkiej twarzy, ale niekorzystna dla odróżnienia danej jednostki ludzkiej od ludzkiej twarzy – wybaczcie ten nieczuły, zdehumanizowany żargon, ale rozmawiamy o maszynach. 

Drugim parametrem, oprócz podobieństwa, jest zmienność. Wygląd ludzkiej twarzy jest niestabilny. Ludzie mogą wytwarzać wiele wyrazów twarzy poprzez zmiany w ułożeniu mięśni, a obrazy twarzy różnią się znacznie pod różnymi kątami obserwacji – en face, z profilu i tak dalej. Ponadto na rozpoznawanie twarzy mają również wpływ różne czynniki, w tym warunki oświetleniowe (takie jak dzień i noc, wewnątrz i na zewnątrz, itp.), zasłony na twarzy (takie jak maski, okulary słoneczne, włosy, broda, itp.), wiek, stan cery i inne.

Zastosowania Face Recognition

Rozpoznawanie twarzy jest stosowane znacznie szerzej niż w aparatach fotograficznych czy w odblokowaniu telefonu komórkowego.

  • Systemy kontroli dostępu. Obszary objęte ochroną bezpieczeństwa mogą identyfikować tożsamość osób próbujących wejść poprzez rozpoznawanie twarzy (więzienia i ośrodki zatrzymań, obszary mieszkalne, instytucje, szkoły itp.).
  • Systemy nadzoru wideo. Monitorowanie tłumów w miejscach publicznych, takich jak banki, lotniska, stadiony, centra handlowe czy supermarkety w celu identyfikacji tożsamości ma wiele powodów. Koronnym przykładem niech będzie tutaj system monitoringu zainstalowany na lotnisku, aby uniemożliwić wejście na pokład samolotu osobom, mówiąc oględnie, o niedobrych zamiarach. 
  • Aplikacje sieciowe: Wprowadzanie rozpoznawania twarzy do wspomagania płatności online kartą kredytową ma swoje niebezpieczeństwa – trzeba zapobiec używaniu kart kredytowych przez osoby ich nieposiadające, albo zapobiec fałszywym roszczeniom o ubezpieczenie i świadczenia wydawane podobnymi metodami.

Funkcja rozpoznawania twarzy HuskyLens

Wystarczy już suspensu. Po garści informacji teoretycznych o rozpoznawaniu twarzy – choć nie można rzec, że temat został wyczerpany – możemy nareszcie przejść do pomysłu z nagłówka przy udziale robota Maqueen. Najpierw musimy przyjrzeć się jednak samej kamerze AI (ang. Artificial Intelligence, sztuczna inteligencja) HuskyLens. 

Kamera AI HuskyLens oparta na procesorze Kendryte K210 od DFRobot to urządzenie zgoła nietypowe. Moduł ten może w łatwy sposób nauczyć się wykrywać i rozpoznawać obiekty, kolory, a nawet ważne w kontekście dzisiejszego artykułu ludzkie twarze poprzez… kliknięcie przycisku. Rozbudowane algorytmy pozwalają HuskyLens robić to w naprawdę zadowalającej prędkości 30 klatek na sekundę. 

Oprócz tego z myślą o fanach minikomputerów warto wspomnieć, że kamera AI HuskyLens jest kompatybilna z Arduino, Raspberry Pi, LattePanda oraz przede wszystkim platformą BBC micro:bit. Na razie zostawmy w spokoju szczegóły specyfikacji technicznej sprzętu – zawsze możecie odnaleźć je na stronie produktu.

Funkcje AI HuskyLens.

Jak to działa? Kierujemy HuskyLens na obszar z twarzami. Po wykryciu twarzy zostanie ona automatycznie wybrana przez białe pole ograniczające na ekranie z napisem “Face” powyżej. Następnie kierujemy symbol “+” na twarz i naciskamy krótko przycisk, aby moduł nauczył się twarzy. Jeśli ta twarz zostanie wykryta przez HuskyLens ponownie, pojawi się okno z napisem “Face”: ID1″ – oznacza to tyle, że HuskyLens już wcześniej rozpoznał tę twarz i może ją rozpoznać teraz. 

Jeśli w środku ekranu nie ma symbolu “+” przed rozpoczęciem nauki, oznacza to, że HuskyLens nauczył się już twarzy w aktualnej funkcji. W tym czasie, po krótkim naciśnięciu “przycisku nauki”, na ekranie pojawi się komunikat “Click again to forget” (kliknij ponownie, aby zapomnieć twarz). Zanim zakończy się odliczanie, wystarczy nacisnąć krótko “przycisk uczenia się”, aby usunąć informacje o nauczonej twarzy.

Maqueen wjeżdża na scenę. Co będziemy robić?

Jak wykorzystuje się rozpoznawanie twarzy HuskyLens? Jak stworzyć robota omijającego przeszkody z tym, co oferuje Maqueen Plus? A może: jak wykryć złodzieja? Podzielimy cały projekt na kilka małych zadań i wykonamy krok po kroku tajne zadanie detektywistyczne.

Projekt zostanie zrealizowany w etapach. Po pierwsze nauczymy się korzystać z funkcji rozpoznawania twarzy HuskyLens i wyświetlać odpowiedni identyfikator twarzy na ekranie płyty głównej. Następnie dowiemy się, jak wdrożyć omijanie przeszkód w działaniu Maqueen Plus. Na koniec poprawimy cały projekt pozwalając robotowi Maqueen Plus działać przy jednoczesnym unikaniu przeszkód i wykrywaniu naszego złoczyńcy. Jeśli bad guy zostanie znaleziony, wówczas zostanie uruchomiony alarm. Drodzy detektywi, zaczynamy szkolenie operacyjne.

Krok 1 - nauka i rozpoznawanie

Natrudniejszy pierwszy krok? Nie w tym wypadku. Tutaj możesz wybrać kilka zdjęć twarzy i dać HuskyLensowi się ich nauczyć. Uwaga: pamiętaj o przestawieniu na funkcję “learn multiple”.

Krok 2 - instrukcje

Zobaczmy, ile celów zostało nauczonych w ramach obecnego algorytmu z wymaganego “wyniku”. Aby dowiedzieć się, czy wiele celów może być ustawionych z HuskyLens, należy dłużej przytrzymać przycisk funkcji, aby wprowadzić ustawienia parametrów.

Krok 3 - analiza funkcji​

Zakładając, że istnieją tylko 3 informacje o twarzy, program jest łatwy do wdrożenia. Jak pokazano na poniższym rysunku, wystarczy oceniać tylko jedną po drugiej.

A co, jeżeli HuskyLens rozpoznał 5, 10 albo 15 twarzy? Analizowanie jedna po drugiej jest raczej… rozwleczone. Czy zauważyłeś jakieś powtarzające się elementy powyżej? W rzeczywistości tak długo, jak dodawana jest jedna zmienna, pewne części o wysokiej powtarzalności w powyższym programie mogą być uproszczone. Program postępuje tak, że bez względu na to, ile ID zostało poznanych, można je oceniać jeden po drugim.

Krok 4 - Analiza Flow Chart

Zoptymalizujmy działanie programu. Gdy nie zostanie wykryta twarz wyuczona, na ekranie LED pojawi się uśmiechnięta twarz, a gdy pojawi się twarz wyuczona, zostanie wyświetlony jej identyfikator. 

Analiza schematu blokowego programu prezentuje się tak, jak na grafie poniżej. Logika może być nieco skomplikowana, prawda? Możesz użyć schematu blokowego do uporządkowania logiki programu lub użyć programu do zrozumienia metody realizacji funkcji schematu blokowego.

Zerknijmy na przykład:

Nowe zadanie. Unikanie przeszkód

Maqueen Plus, jako tajny detektyw, musi mieć wolną rękę – damy mu podstawową funkcję samodzielnej jazdy. Jak ma automatycznie omijać przeszkody?

Można by pomyśleć o kamerach, które mają być używane do omijania przeszkód. W rzeczywistości jednak podstawowa funkcja omijania przeszkód w ogóle nie potrzebuje kamery, a Maqueen Plus poradzi sobie z nią sam. Rzućmy okiem!

Silnik Maqueen Plus posiada własny enkoder, za pomocą którego prędkość obrotowa silnika może być odczytywana w czasie rzeczywistym. Kiedy podczas jazdy nasz samochodzik napotka na przeszkodę, będzie on zmuszony do zatrzymania się, a prędkość obrotowa silnika stanie się bliska 0. Dlatego właśnie prędkość obrotową silnika można odczytać, aby określić, czy napotyka on na przeszkody. Jeśli Maqueen napotka na przeszkodę, będzie realizował pewne działania mające na celu jej uniknięcie, na przykład będzie to cofanie się i zatrzymywanie.

Nauka instrukcji i test programu

Spójrzmy na niektóre z głównych instrukcji. Odczytaj aktualną prędkość obrotową silnika i wybierz lewy lub prawy silnik.

Odczytaj prędkość obrotowej silnika przez port szeregowy. Weźmy jako przykład lewy silnik. Czas na program testowy:

 Weźmy jako przykład lewy silnik. Przetestujmy program:

 

Wyniki testu: Obszar portu szeregowego pokazuje prędkość lewego silnika. Daj lewemu kołowi trochę oporu ręką – prędkość obrotowa silnika może być zmniejszona.

Gdy spojrzysz na prędkość, możesz zauważyć, że prędkość odczytywana przez silnik ma pewne odchylenie od prędkości ustawionej przez program, co jest związane z mocą baterii i siłą tarcia na kołach. Warto przyjrzeć się kontroli PID, która polega na regulacji prędkości w czasie rzeczywistym za pomocą algorytmu po odczytaniu prędkości obrotowej silnika przez enkoder, tak aby prędkość obrotowa silnika była zbliżona do prędkości ustawionej.

 

Przykłady programu

Teraz Maqueen Plus będzie samodzielnie jeździł i omijał przeszkody. W przypadku napotkania przeszkody Maqueen Plus cofnie się i zmieni kierunek, aby ją ominąć. Uwaga – gdy program zostanie uruchomiony, najpierw zostanie wykonana akcja ominięcia przeszkody, ponieważ prędkość obrotowa silnika nie zwiększa się natychmiast.

Kolejna misja Maqueena - alarmować o złoczyńcy

Wielkimi, ale prostymi krokami zbliżamy się do ukoronowania naszego projektu. Przechodzimy do ostatniego zadania. 

Analiza funkcji

W zadaniu pierwszym wdrożymy funkcję rozpoznawania twarzy, a w zadaniu 2 funkcję omijania przeszkód. W efekcie będzie to połączenie tych dwóch funkcji, bo tego właśnie chcemy dla detektywa pod przykrywką. Kiedy HuskyLens nie rozpoznaje wyznaczonej twarzy, Maqueen Plus unika przeszkód. Gdy wskazana twarz zostanie rozpoznana, Maqueen Plus przestaje się poruszać, uruchamia alarm na miejscu i wyświetla rozpoznany identyfikator twarzy na ekranie płyty głównej.

Analiza Flow Chart

Chcemy, by program działał nieprzerwanie. Po rozpoznaniu twarzy, jeśli twarzy nie ma już na zdjęciu, należy nacisnąć przycisk A, aby ponownie uruchomić program. Schemat blokowy jest następujący:

Funkcja “Avoid Obstacles” pozostaje niezmieniona, to główny program jest modyfikowany. Kompletny prezentuje się tak:

Podsumowanie projektu

I jak? Wykonane? Zadbaliśmy o wszystko. Jeżeli spojrzeć na to jeszcze raz z retrospektywy i przechodząc powoli do efektu: po pierwsze, niech HuskyLens nauczy się wielu twarzy za pomocą funkcji rozpoznawania twarzy. Podczas uruchamiania programu ustawisz Maqueena Plus w dowolnej pozycji, a samochód automatycznie ominie przeszkody. Jeżeli HuskyLens zobaczy nauczoną twarz podczas jazdy, robot przestanie się poruszać, uruchomi alarm, a na ekranie wyświetli się odpowiedni identyfikator twarzy. Następnie, gdy HuskyLens nie wykryje twarzy wyuczonej, na ekranie płyty głównej wyświetli się A, co oznacza, że naciśnięcie przycisku A może zrestartować Maqueen Plus i kontynuować wyszukiwanie bandytów!

Jak oceniasz ten wpis blogowy?

Kliknij gwiazdkę, aby go ocenić!

Średnia ocena: 5 / 5. Liczba głosów: 2

Jak dotąd brak głosów! Bądź pierwszą osobą, która oceni ten wpis.

Podziel się:

Picture of Oskar Pacelt

Oskar Pacelt

Fan dobrej literatury i muzyki. Wierzy, że udany tekst jest jak list wysłany w przyszłość. W życiu najbardziej interesuje go prawda, pozostałych zainteresowań zliczyć nie sposób. Kocha pływać.

Zobacz więcej:

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Ze względów bezpieczeństwa wymagane jest korzystanie z usługi Google reCAPTCHA, która podlega Polityce Prywatności oraz Warunkom użytkowania.