Miejsce sztucznej inteligencji w systemach IIoT

Miejsce sztucznej inteligencji w systemach IIoT

Sztuczna inteligencja może sprawić, że systemy wbudowane dla przemysłowego Internetu rzeczy (IIoT) będą znacznie bardziej responsywne i niezawodne. Użytkownicy już teraz stosują tę technologię do monitorowania stanu maszyn i wczesnego wykrywania awarii, a także do planowania rutynowych prac konserwacyjnych w bardziej kosztowo-efektywny sposób.

Ważna decyzja dotycząca wdrażania technologii sztucznej inteligencji w systemach wbudowanych polega na określeniu, gdzie będzie realizowane przetwarzanie danych. Algorytmy sztucznej inteligencji różnią się znacznie pod względem wymaganej wydajności obliczeniowej. Ma to duży wpływ na wymagania sprzętowe i w efekcie na miejsce, gdzie to przetwarzanie będzie wykonywane. Istnieją trzy wyraźne podejścia projektantów systemów wbudowanych opartych na sztucznej inteligencji: zastosowanie sztucznej inteligencji opartej na chmurze, wdrażanie systemu z wbudowaną sztuczną inteligencją lub opracowywanie własnych algorytmów, zazwyczaj bazujących na oprogramowaniu typu open source.

Korzystanie z usługi opartej na chmurze

Architektura głębokich sieci neuronowych (DNN) jest przykładem algorytmu, który ma szczególnie wysokie wymagania w odniesieniu do mocy obliczeniowej, szczególnie w fazie uczenia, gdzie za każdym razem, gdy model musi zostać zaktualizowany, potrzebne są miliardy obliczeń zmiennoprzecinkowych. Ze względu na duże zapotrzebowanie na DNN, typowym podejściem jest wysyłanie danych do chmury w celu zdalnego przetworzenia. Przetwarzanie w chmurze jest już szeroko stosowane w urządzeniach konsumenckich, takich jak inteligentne głośniki. Urządzenia obsługujące sztuczną inteligencję w sterowaniu przemysłowym mogą podobnie wykorzystać to zdalne przetwarzanie, a także narzędzia i struktury przygotowane do pracy z usługami w chmurze, z których wiele jest udostępnianych w formie open source.

Popularnym przykładem sztucznej inteligencji opartej na chmurze jest TensorFlow od Google. Zapewnia wiele poziomów abstrakcji, aby umożliwić korzystanie z nich inżynierom doświadczonym w tworzeniu algorytmów sztucznej inteligencji, a także tym, którzy dopiero zaczynają. Interfejs API Keras, który stanowi część struktury TensorFlow, został zaprojektowany w celu ułatwienia eksploracji technik uczenia maszynowego oraz uruchamiania i działania aplikacji.

Wadą przetwarzania w chmurze jest przede wszystkim przepustowość komunikacji wymagana do jego obsługi. Niezawodne połączenie internetowe jest niezbędne do utrzymania usługi i warto zauważyć, że wiele konsumenckich aplikacji chmury AI opiera się na połączeniach szerokopasmowych. Urządzenia w fabryce mogą nie mieć dostępu do transmisji danych o szybkości wymaganej do aktualizacji zdalnego modelu AI w czasie rzeczywistym.

Wykonując więcej przetwarzania lokalnie, możliwe jest zmniejszenie wymagań dotyczących przepustowości. W przypadku wielu zastosowań przemysłowych ilość danych, które muszą zostać przesłane do zdalnej lokalizacji, można zmniejszyć, zwracając uwagę na ich zawartość. W aplikacji monitorującej zmienne środowiskowe wiele z nich nie zmienia się przez długi czas. W modelu istotne są zmiany powyżej lub poniżej określonych progów. Nawet jeśli czujnik może analizować dane wejściowe milisekunda po milisekundzie, częstotliwość aktualizacji dla serwera w chmurze może być rzędu kilku aktualizacji na sekundę lub nawet rzadziej.

Budowanie oprogramowania sztucznej inteligencji AI

W przypadku bardziej złożonych form danych, takich jak audio lub wideo, wymagany będzie większy stopień wstępnego przetwarzania. Przetwarzanie obrazu przed przekazaniem danych wyjściowych do modelu AI może nie tylko zaoszczędzić na przepustowości komunikacji, ale także poprawić ogólną wydajność systemu. Na przykład redukcja szumów przed kompresją często poprawia wydajność algorytmów kompresji. Jest to szczególnie istotne w przypadku technik kompresji stratnej, które są wrażliwe na sygnały o wysokiej częstotliwości. Wykrywanie krawędzi może być używane z segmentacją obrazu, aby skupić model tylko na obiektach zainteresowania. Zmniejsza to ilość nieistotnych danych, które należy wprowadzić do modelu zarówno podczas uczenia, jak i wnioskowania.

Chociaż przetwarzanie obrazów to złożona dziedzina, w wielu przypadkach programiści mogą przetwarzać algorytmy lokalnie, korzystając z łatwo dostępnych bibliotek. Eliminuje to konieczność korzystania z połączeń internetowych o dużej przepustowości i może zmniejszyć opóźnienia. Popularnym przykładem jest biblioteka typu open source do przetwarzania wizji komputerowej – OpenCV. Jest stosowana przez wiele zespołów do wstępnego przetwarzania danych dla algorytmów sztucznej inteligencji. Została napisana w C++ dla uzyskania wysokiej wydajności, ale wspiera podejście łatwego prototypowania i programiści mogą stosować bibliotekę w kodzie C++, Java, Python i Matlab. Wykorzystując OpenCV i przetwarzając dane lokalnie, integratorzy eliminują również zagrożenia bezpieczeństwa związane z przesyłaniem i przechowywaniem danych w chmurze. Głównym problemem użytkowników końcowych jest prywatność i bezpieczeństwo danych przekazywanych do chmury. Monitorowanie stanu i inspekcja przemysłowa to krytyczne procesy, które wymagają jak najlepszej analizy danych, ale zawierają informacje, które mogłyby być korzystne dla pozbawionych skrupułów konkurentów, gdyby je uzyskali. Inne systemy, np. te stosowane w medycynie, borykają się z dalszymi problemami dotyczącymi ochrony prywatności. Chociaż operatorzy chmury wdrożyli środki zapobiegające złamaniu danych, dane przechowywane w każdym urządzeniu (w miarę możliwości) ograniczają ryzyko ujawnienia w przypadku udanego włamania.

Oprócz obsługi przetwarzania obrazu, najnowsze wersje OpenCV zawierają bezpośrednie wsparcie dla modeli uczenia maszynowego zbudowanych przy użyciu wielu popularnych platform, w tym Caffe, PyTorch i Tensorflow. Jedną z metod, która okazała się sukcesem dla wielu użytkowników, jest użycie chmury do wstępnego rozwoju i prototypowania przed przeniesieniem modelu na wbudowaną platformę.

Fotografia 1. Minikomputer Avnet Ultra96-V2 umożliwiający realizację algorytmów AI w czasie rzeczywistym

Wydajność jest głównym problemem w przypadku każdego modelu uczenia maszynowego, który jest przenoszony na urządzenie wbudowane. Ponieważ dane szkoleniowe mają bardzo wysokie wymagania dotyczące wydajności, jedną z opcji jest wykonanie ich na serwerach lokalnych lub w chmurze (w zależności od kwestii prywatności), z wnioskowaniem – gdy trenowany model jest zasilany danymi w czasie rzeczywistym – wykonywanym na samym urządzeniu. Tam, gdzie wymagana jest wydajność lokalna, możliwym rozwiązaniem jest Avnet Ultra96-V2 (fotografia 1), który zawiera Xilinx Zynq UltraScale+ ZU3EG MPSoC. Połączenie rdzeni procesorów ARM z wbudowanymi maszynami przetwarzania sygnałów oraz w pełni programowalnym układem logicznym zapewnia efektywną obsługę modeli DNN oraz procedur przetwarzania obrazu. Ultra96-V2 rozszerza zakres temperatur produktu do pełnego zakresu przemysłowego, umożliwiając stosowanie go w pobliżu maszyn pracujących w trudnych warunkach.

Rekonfiguracja zapewnia możliwość obsługi szkolenia lokalnego, a także wnioskowania, jeśli aplikacja ma wymagania dotyczące wysokiej przepustowości.

Wnioskowanie wiąże się z mniejszym obciążeniem niż uczenie, a w przypadku strumieni czujników, a nie obrazów, zadowalający może być mikrokontroler obsługujący jądro DNN w oprogramowaniu. Jednak strumienie o niższej szybkości transmisji danych mogą być nadal zbyt duże, aby urządzenie o niskim poborze mocy mogło sobie z nimi poradzić. Niektóre zespoły stosują techniki optymalizacji, aby zmniejszyć liczbę obliczeń potrzebnych do wnioskowania, mimo że zwiększa to złożoność rozbudowy. Modele AI często zawierają wysoki stopień nadmiarowości. Ucinając połączenia między neuronami i zmniejszając precyzję obliczeń do 8-bitowej liczby całkowitej lub nawet niższej rozdzielczości, można uzyskać znaczne oszczędności mocy obliczeniowej.

Korzystanie z urządzenia z wbudowaną sztuczną inteligencją

Alternatywną opcją jest przeniesienie wnioskowania na urządzenia lokalne - bramki. Jedna bramka mogłaby obsłużyć obowiązki wnioskowania dla wielu węzłów czujników, jeśli przepustowość na węzeł jest stosunkowo niska. Na przykład w komputerowych aplikacjach wizyjnych nie ma potrzeby wysyłania danych do wnioskowania AI, gdy narzędzie nie działa lub nie ładuje nowej części do kontroli.

Fotografia 2.  Arduino Portenta Vision Shield – moduł rozszerzający z kamerą dla płytki  Arduino Portenta H7

Konieczność dystrybucji obciążeń, przenoszenia i optymalizacji modeli z platform zorientowanych na chmurę zwiększa złożoność programowania. Inną opcją jest zastosowanie szkieletu, który jest już zoptymalizowany do użytku wbudowanego. Arduino Portenta Vision Shield (fotografia 2), gotowe do produkcji rozszerzenie dla potężnego Arduino Portenta H7 które dodaje energooszczędną kamerę, dwa mikrofony i łączność — wszystko, czego potrzebujesz do szybkiego tworzenia brzegowych aplikacji ML. Portenta Vision Shield jest wyposażone w kamerę Himax o bardzo niskim poborze mocy, która autonomicznie wykrywa ruch, gdy Portenta H7 jest w trybie gotowości, budząc mikro-sterownik tylko w razie potrzeby. OpenMV IDE zapewnia łatwy sposób na wizję komputerową przy użyciu MicroPython jako paradygmatu programowania i mnóstwo algorytmów AI / ML dostępnych od razu „po wyjęciu z pudełka”. Łącznie Arduino Portenta H7 i Vision Shield umożliwia maszynowe uczenie się na urządzeniu i znacznie zmniejszają wymagania dotyczące przepustowości komunikacji w aplikacji IoT.

Inni wiodący na rynku dostawcy, tacy jak Schneider Electric i Festo, włączyli lokalne wsparcie sztucznej inteligencji do produktów sterujących do określonych aplikacji. Pierwsza z nich oferuje aplikację Predictive Analytics do identyfikowania subtelnych zmian w zachowaniu systemu, które mają wpływ na wydajność. W 2018 r. Festo przejęło firmę Resolto, specjalistę w dziedzinie nauki o danych, a jej oprogramowanie SCRAITEC uczy się zdrowego stanu systemu, aby wykrywać każdą anomalię.

To, jakie podejście podejmie producent oryginalnego sprzętu lub integrator przy wdrażaniu sztucznej inteligencji, będzie zależało od indywidualnych okoliczności. Oprócz dostępnej mocy obliczeniowej pojawią się inne czynniki, które zachęcają do korzystania z przetwarzania w chmurze, tworzenia nowego oprogramowania i/lub integracji urządzenia brzegowego w celu zarządzania sztuczną inteligencją. Przykładowo, gdy użytkownicy próbują wykorzystać analitykę dużych zbiorów danych, mogą chcieć przenieść informacje z wielu systemów do większej bazy danych, a tym samym faworyzować korzystanie z usług w chmurze. Inni będą chcieli zapewnić wysoki poziom prywatności swoich danych. Tam, gdzie odciążanie przetwarzania jest kluczowym czynnikiem, istnieją sposoby, aby do niego podejść, począwszy od stosowania urządzeń odciążających opartych na lokalnych bramkach, a skończywszy na szerokim zastosowaniu przetwarzania w chmurze. Ważne, że istnieje wiele środowisk, które umożliwiają łatwe prototypowanie i wdrażanie w wybranej architekturze.

Cliff Ortmeyer
Globalny Dyrektor ds. Marketingu Technicznego, Farnell

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik lipiec 2021

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio lipiec - sierpień 2021

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka Podzespoły Aplikacje lipiec 2021

Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna lipiec 2021

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich sierpień 2021

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów