Zaufaj inteligencji chmury. Poznaj Amazon Rekognition
Chmury publiczne często sprowadza się do roli alternatywy dla typowych hostingów, a ich wykorzystanie ogranicza się do tworzenia kolejnych wirtualnych maszyn. Odwzorowanie architektury znanej z systemów on-premises jest dobrym początkiem przygody z chmurą, ale my proponujemy pójść o krok dalej i zacząć prawdziwą zabawę. Amazon Web Services to nie tylko zakładki z instancjami EC2 i wiaderkami S3, ale też szereg usług, które mogą w znaczący sposób przyspieszyć proces tworzenia twojej aplikacji, a to bezpośrednio przekłada się na wskaźnik time to market.
Jakub Woźniak. Cloud Architect w dziale R&D Nordcloud. Zajmuje się problemami potencjalnie nierozwiązywalnymi, szczególnie gdy w grę wchodzą systemy rozproszone. W wolnych chwilach spaceruje po biurze. Polecamy zajrzeć do BrandStory firmy NORDCLOUD, by poznać ją bliżej.
Spis treści
Gdy zaczniesz poszukiwać rozwiązania w chmurze
Chmura oferuje wachlarz usług, na które normalnie musielibyśmy poświęcić wiele zasobów, szczególnie czasu. Co znajdziemy w AWS? Konwertery multimediów, uczenie maszynowe, narzędzia do Big Data, uwierzytelniania i zarządzania użytkownikami, GraphQL, IoT czy nawet Amazon Sumerian — środowisko do tworzenia gier. Pamiętacie polski syntezator mowy Ivona? Znajdziecie go w zasobach AWS, ale pod nazwą Amazon Polly!
Warto zapoznać się z możliwościami jakie oferuje nam chmura publiczna. Tym bardziej, że dostęp do niej nie wymaga żadnego zobowiązania ani nakładów finansowych. Chcesz wygenerować mowę z tekstu? Wykonaj jedno zapytanie do API i testuj bez obaw. Niczego nie ryzykujesz, bo możesz wykorzystać 5 milionów znaków miesięcznie za darmo w ciągu pierwszego roku korzystania z usługi.
Przetwarzanie obrazów dla każdego
Amazon Rekognition to jedna z moich ulubionych usług. Pozwala na zaawansowane przetwarzanie obrazów, które kiedyś wymagałoby ode mnie zbudowania całkiem pokaźnych rozmiarów bazy danych i zaimplementowania algorytmów, poznanych i ostatni raz wykorzystanych na studiach. Teraz jestem w stanie napisać i uruchomić aplikację w niecałą godzinę, a skomplikowane algorytmy sprowadzają się do wywołania jednej funkcji AWS SDK.
Rekognition pozwala na analizę obrazów statycznych i sekwencji wideo (również strumieniowanych). Usługa potrafi zidentyfikować obiekty, ludzi, tekst, scenę i czynność przedstawioną na obrazie. Doskonale nadaje się również do filtrowania nieodpowiednich treści zamieszczanych przez użytkowników. W połączeniu z AWS Lambda (Function as a Service), API Gateway i S3 możemy zbudować zaawansowaną aplikację bez uruchomienia żadnej maszyny wirtualnej. Wszystko w duchu programowania zdarzeniowego i serverless.
Początek tej zabawy nie wymaga od nas napisania nawet fragmentu kodu. Już po wejściu na stronę Rekognition mamy do wyboru dwa przykładowe zdjęcia wraz z wynikami rozpoznania. Na załączonym obrazie możemy zobaczyć, że prawidłowo rozpoznano osobę na deskorolce, a pewność algorytmu jest na poziomie 99%. Oczywiście, to nie jest żaden dowód na poprawność algorytmów, bo zdjęcie przygotował zespół Rekognition.
Wrzućmy tym razem autorskie zdjęcie katedry w Helsinkach, które wykonałem przy okazji wizyty w fińskim biurze Nordcloud. Kiepski ze mnie fotograf, ale może AWS da sobie z tym radę.
Wyniki rozpoznania z największą ufnością są następujące: building (72%), architecture (72%), cathedral (72%), church (72%), worship (72%), dome (70%). Nie otrzymaliśmy konkretnej nazwy budowli i jej adresu, ale etykiety jakimi opisano zdjęcie są bardzo trafne i śmiało można z nimi pracować.
Jeżeli chcemy wykorzystać Rekognition do moderacji treści zamieszczanych przez użytkowników, nie musimy operować na czystym API i zastanawiać się jaka etykieta może nam zostać zwrócona i od jakiego poziomu ufności uznać obraz za nieodpowiedni. Twórcy przemyśleli sprawę i dodali również osobną metodę do takich zastosowań. Z oczywistych powodów nie mogę tutaj zamieścić przykładu obrazu, ale odpowiedź API dla testowego zdjęcia wygląda następująco:
{ "ModerationLabels": [ { "Confidence": 98.75021362304688, "Name": "Suggestive", "ParentName": "" }, { "Confidence": 98.75021362304688, "Name": "Female Swimwear Or Underwear", "ParentName": "Suggestive" } ] }
Powyższy JSON jednoznacznie opisuje analizowaną fotografię, możemy podjąć decyzję czy taki wpis należy usunąć z naszej bazy danych. Szybkie, łatwe i przyjemne, a do tego kosztuje grosze.
Równie ciekawą opcją Rekognition jest rozpoznawanie osób na zdjęciu lub filmie. Wystarczy, że stworzymy swój własny zbiór zdjęć profilowych, a następnie AWS spróbuje odnaleźć poznane osoby na kolejnych zdjęciach, które wyślemy do przetwarzania. Szczerze się zdziwiłem, gdy Rekognition znalazło mnie na grupowym zdjęciu Nordcloud Poland. Widać na nim było tylko połowę twarzy, do tego mocno prześwietlonej, a do dyspozycji miało wcześniej przesłane zdjęcie profilowe. Bez żadnego problemu odnalazło mnie spośród 30 osób, odpowiadając z blisko 90% pewnością. Amazon dodatkowo utrzymuje bazę celebrytów, więc bez problemu rozpoznamy ich na zdjęciach. Radzi sobie całkiem nieźle nawet z polskimi gwiazdami.
Ostatnie dwie opcje jakie oferuje nam usługa to: analiza twarzy i rozpoznawanie tekstu na obrazie. Pierwsza pozwala otrzymać opis twarzy (podobny jak przy analizie sceny), czyli emocje, cechy szczególne (broda, wąsy, okulary), współrzędne oczu, kącików ust i nosa. Druga – znany wszystkim OCR, który jest w stanie odczytać nazwy ulic ze znaków czy numery rejestracyjne samochodów. Z pewnością może to znaleźć ciekawe zastosowanie, szczególnie w połączeniu z analizą strumieniowanego obrazu.
Przybliżmy trochę chmurę…
Mam przyjemność przedstawić jedną z naszych biurowych zabawek — AWS DeepLens! Jest to bezprzewodowa kamera, która posiada odrobinę mocy obliczeniowej i system Ubuntu na pokładzie.
DeepLens integruje się z AWS SageMaker — w pełni zarządzaną platformą do trenowania modeli uczenia maszynowego. Część rozpoznania jest w stanie wykonać lokalnie, a odnalezione próbki może w łatwy sposób przesłać do dalszej analizy, np. przy pomocy poznanego dzisiaj Rekognition Video. Dzięki temu nie musimy przesyłać ciągłego strumienia danych (co mogłoby już być kosztowne), a jedynie ograniczyć się do fragmentów, które przeszły wstępną filtrację. Przykład? Jesteśmy w stanie rozpoznać człowieka przy drzwiach do naszego biura, natomiast chmura powie nam, że to dostawca jedzenia! Czy życie może być piękniejsze?
Co dzisiaj chcesz rozpoznać?
Prototypowanie aplikacji przy wykorzystaniu usług chmurowych jest banalnie proste. Czas, w którym jesteśmy w stanie zaprezentować działające oprogramowanie, uległ drastycznemu skróceniu, a dzięki wykorzystaniu elastycznego modelu płatności — nie zbankrutujemy korzystając z zaawansowanych algorytmów. W dziale R&D testujemy różne rozwiązania i lubimy szukać ciekawych zastosowań chmury w biurowym życiu. Nic tak nie cieszy jak bezprzewodowy przycisk, który uruchamia funkcję AWS Lambda i powiadamia pracowników, że czas zebrać się w kuchni! Dron rozpoznający twarze koleżanek i kolegów? Nic trudnego, po tym artykule już wiemy z czego należy skorzystać. Mam nadzieję, że udało mi się przekonać Was do spróbowania swoich sił i pobrania odpowiednich bibliotek na swoje komputery.