Tworzenie w godzinę rozwiązania SI rozpoznającego obrazy

Usługi kognitywne firmy Microsoft oferują wytrenowane sieci neuronowe, które umożliwiają developerom szybki rozwój algorytmów np. rozpoznawania obrazu. Ten krótki post ma pokazać, jak to się robi i jak stworzyłem system rozpoznawania ludzi w czasie rzeczywistym. Celem tego rozwiązania jest rozpoznanie ludzi w naszym biurze i ewentualnie poinformowanie naszych ukochanych założycieli. Użyłem: skryptu w języku Pythona i kamerki internetowej FullHD + API Custom Vision.

artykuł_10_person detector

 

Kroki są dość proste:

  • Zdobądź dane treningowe.
  • Stwórz usługę kognitywną.
  • Trenuj sieć i ustaw endpoint. Musimy mieć API endpoint, który można poprosić o prognozy.
  • Napisz skrypt Pythona, który 1. pobiera obraz z kamery, 2. pyta przewidywanie i odbiera odpowiedź 3. rysuje prostokąty wokół ludzi, 4. pokazuje je.

Zdobywanie danych

Zgodnie z opisem firmy Microsoft, w rozwiązaniu powinno być około 15 obrazów na jedną klasę, które chcesz rozpoznać. Może to być np. kot lub pies. W tym przypadku będziemy szukać sylwetlki osoby. Ponieważ szkolę tylko jedną klasę, wykonałem 25 zdjęć naszego biura Clouds On Mars jako próbkę szkoleniową. Pozostawiłem 5 jako dane testowe.

Composite

Zakładanie usługi kognitywnej

1000 predykcji jest bezpłatnych i możesz je skonfigurować tutaj. Interfejs jest bardzo intuicyjny.
Po zalogowaniu się utwórz nowy projekt:

image

Wybierz Object Detection (preview):

image

Tworzenie algorytmu

Aby wytrenować algorytm, musisz dostarczyć mu zdjęcia i obiekty. Najpierw dodaj obrazy i zacznij oznaczać, rysując prostokąty wokół obiektów, aby zidentyfikować:

image

Po oznaczeniu zdjęć kliknij “Trenuj” i sprawdź działanie algorytmu:

image

Przejdź do Quick Test, aby sprawdzić wydajność na zdjęciu testowym:

image

Aby uzyskać prediction endpoint, przejdź do ustawień. Będzie pod “Prediction Key”:

01 (002)

Pisanie skryptu pythona

Aby połączyć się z Cognitive Service Custom Vision API, musisz zainstalować nowy moduł python. W linii poleceń uruchom:

Następnie potrzebujemy modułu do obsługi obrazów i aparatu. Idealne do pracy jest OpenCV – moduł wizyjny o otwartym kodzie źródłowym – super przydatny. Użyłem go wcześniej w moim projekcie flappy bird.

Co do skryptu. Uzyskanie kamery jest łatwe. Nie udało mi się wprowadzić go bezpośrednio do usługi, ale pracowałem nad plikami – to mogło być wąskie gardło.

Prezentacja wyników:

 

Cały skrypt:

 

Efekt końcowy:

image

Moje wnioski:

  • Cena wydaje się niska, ale usługa okazuje się bardzo droga. Zwłaszcza przy projektowaniu rozwiązań działających w czasie rzeczywistym. Jedna kamera np. w sklepie kosztowałby około 25 USD dziennie.
  • Wydajność nie jest zadowalająca – musiałem poczekać kilka sekund na prognozę, a to wyklucza wszelkie rozwiązania, które polegają o szybkości odpowiedzi.
  • Bardzo łatwe i czyste rozwiązanie, aby przetestować niektóre projekty sprawdzając wymagania i działanie
  • Ogólnie – niezła zabawa.

Dodaj komentarz

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