Rozwijający się ekosystem kamer przemysłowych daje nowe możliwości systemom wizyjnym
Jak może się zmienić funkcjonowanie maszyn przemysłowych, jeśli będą w stanie widzieć otaczający je świat?
Do niedawna było to hipotetyczne pytanie dotyczące wielu rodzajów urządzeń przemysłowych. To prawda, że istnieją pewne zastosowania w zakresie widzenia maszynowego: na przykład zakłady produkcyjne lub przetwórcze o dużej skali produkcyjnej często polegają na aparatach do przeprowadzania automatycznej kontroli optycznej (ang. Automated Optical Inspecton, AOI), wykrywania wad lub klasyfikowania towarów w bardziej niezawodny, szybki i tani sposób niż ludzie. Sprzęt fotograficzny wykonuje również zadania wizualne, takie jak optyczne rozpoznawanie znaków, np. rejestrowanie tablic rejestracyjnych samochodów na parkingach. Do tej pory takie rozwiązania do widzenia maszynowego wymagały architektury systemu opartej na kamerze podłączonej do komputera lub serwera. Konstrukcja oparta na PC niesie jednak za sobą duży rozmiar, koszt i moc, co sprawia, że jest ona poza zasięgiem w wielu popularnych zastosowaniach przemysłowych. Jak pokazuje jednak ten artykuł, wprowadzenie nowej generacji systemów wizyjnych opartych o układy System-on-Chip (SoC), wspieranych przyjaznymi dla użytkownika narzędziami do tworzenia aplikacji dedykowanych, umożliwia dodanie inteligentnego widzenia do zakresu funkcji systemów wbudowanych.
Niewygodna architektura współczesnych systemów wizyjnych
Trudność we wdrożeniu inteligentnego widzenia maszynowego wynika z wielkości i charakteru przetwarzanych danych. Przemysłowy czujnik obrazu ma zwykle od 1 miliona do 10 milionów pikseli i działa z szybkością do kilkuset klatek na sekundę. Kiedy specjaliści IT mówią o potencjale „dużych zbiorów danych” (big data), odnoszą się częściowo do ogromnej ilości obrazów generowanych przez takie zintegrowane kamery. Zbiory danych są nie tylko duże, ale również trudne do sklasyfikowania. Ludzki mózg z łatwością ogląda zestaw zdjęć obiektów i przypisuje do nich nazwy: „pies”, „ptak” lub „autobus” z absolutną pewnością. W przypadku maszyny wymaga to złożonego zestawu operacji logicznych. Oczywiście niektóre formy danych obrazu są łatwiejsze do przetworzenia: obecnie opracowanie systemu kamer, który może rozpoznawać znaki alfanumeryczne, wykrywanie poziomów lub kolorów, jest stosunkowo proste. Jednak niektóre aplikacje wymagają bardziej złożonych form przetwarzania. Dobrym przykładem jest technologia pojazdów autonomicznych, która jest rozwijana już od kilku lat. Wynika to z trudności w nauczaniu maszyn rozróżniania poruszających się obiektów, takich jak samochody, autobusy, rowery i piesi. A zadania związane z widzeniem maszynowym są jeszcze trudniejsze: inżynierowie rozpoczęli eksperymenty z maszynami, które potrafią czytać emocje na ludzkich twarzach, co może ostatecznie zostać zastosowane przez przemysł reklamowy lub w zapobieganiu przestępczości. Wizja maszynowa wymaga zatem szybkiego przetwarzania ogromnych ilości danych za pomocą skomplikowanych algorytmów. Obecnie ta funkcja jest zazwyczaj implementowana przez architektury oparte na komputerach PC lub serwerach. Mają one podwójne zalety:
- Ogromne możliwości przetwarzania danych, które zapewniają najnowsze ultra-szybkie, wielordzeniowe procesory lub procesory graficzne (GPU)
- Kompleksowe, wysokopoziomowe zasoby do programowania aplikacji i narzędzia dostarczane przez systemy operacyjne Windows® lub Linux®
Problem dla twórców systemów zintegrowanych polega na tym, że komputer zwykle nie jest odpowiednią platformą sprzętową dla tych rozwiązań. Zazwyczaj systemy zintegrowane działają w warunkach ograniczonej mocy, wielkości i kosztów. Komputer nie jest zoptymalizowany pod kątem żadnego z tych czynników. Istnieje jednak wyraźnie duży potencjał na zwiększenie wartości systemów zintegrowanych w kontekście zastosowania w inteligentnych systemach wizyjnych. Na przykład automatyczne drzwi mogą dziś wykorzystywać czujniki zbliżeniowe na podczerwień lub czujniki ciśnienia w podłodze, aby wiedzieć kiedy się otworzyć. Tzw. „nieinteligentne czujniki” mogą jednak dawać błędne wyniki. W sklepie na ruchliwej ulicy automatyczne drzwi mogą się otwierać zarówno dla przechodniów, jak i dla tych, którzy chcą wejść do sklepu. Drzwi, które widzą i rozróżniają piksele w kształcie ludzkiej twarzy, mogą odróżnić ludzi stojących przed drzwiami od tych, którzy po prostu przechodząc obok nich pokazują jedynie swój profil, a nie twarz wprost do kamery. Ten rodzaj rozwiązania umożliwiłby systemowi drzwi oszczędzanie energii wewnątrz sklepu poprzez utrzymywanie w nim ciepła i ograniczenie przeciągów. Przedłużyłoby to także żywotność drzwi i obniżyło koszty ich konserwacji poprzez zmniejszenie liczby operacji otwierania. Jest to typowy przykład rozwiązania, który napotyka ograniczenia wielkości i kosztów, i dla którego komputer PC nie jest odpowiednią platformą sprzętową. Podczas osadzania wizji maszynowej w takim rozwiązaniu projektanci systemów będą szukać pewnych ważnych cech:
- Niskiego zużycie energii,
- Obsługi programowania wysokiego poziomu na poziomie funkcjonalnym,
- Opcji łączności, które umożliwiają systemowi eksportowanie danych wyjściowych do systemu klienckiego lub do chmury,
- Wszechstronnego interfejsu dla połączeń czujnika obrazu,
- Podstawowych, przyspieszanych sprzętowo bloków poprawy jakości obrazu, które obecnie są zwykle realizowane w układzie FPGA
- Wydajnej kompresji obrazu
- Interfejsów pamięci masowej
- Obsługi standardowego, wytrzymałego systemu operacyjnego. W świecie zintegrowanym oznacza to zwykle system operacyjny Linux
Obecnie dostępna platforma dla zintegrowanego systemu wizyjnego oferująca wszystkie te funkcje jest dostępna w postaci nowej, zoptymalizowanej pod kątem widzenia platformy SoC, S32V, z oferty NXP Semiconductors.
Kompleksowy ekosystem sprzętu i oprogramowania
Wartość nowego SoC S32V wynika z połączenia zasobów sprzętowych i programowych, wymaganych przez twórców systemów wbudowanych. Sprzęt jest całkowicie nowym układem SoC, który zawiera dedykowane bloki funkcjonalne widzenia wraz z wydajnym blokiem przetwarzania ogólnego przeznaczenia, jak pokazano na rysunku 1. Platforma CPU zawiera dwa lub cztery rdzenie Arm® Cortex®-A53 pracujące z częstotliwością do 1 GHz. Rdzeń Cortex-M4 o taktowaniu 133 MHz dba o bezpieczeństwo funkcjonalne i inne zadania związane z utrzymaniem urządzenia.
Rysunek 1. Diagram blokowy układu SoC S32V
Blok funkcjonalny przetwarzania obrazu jest umieszczony na podwójnych rdzeniach akceleratora wizyjnego APEX-2, które są obsługiwane przez narzędzia graficzne OpenCL, APEX-CV i APEX, będące częścią oprogramowania opisanego poniżej. S32V zapewnia także współpracę z dwiema kamerami, umożliwiając stosowanie aplikacji wizyjnych stereo, aby algorytmy były jeszcze bardziej niezawodne w środowisku naturalnym. Przetwarzanie obrazów z czujników (ang. Image Sensor Processing (ISP)) obsługuje wideo typu High Dynamic Range, konwersję kolorów, mapowanie tonów i inne funkcje, co sprawia, że tradycyjne podejście oparte na FPGA w wielu przypadkach stają się przestarzałe.
Wiele opcji łączności zapewnia szybki transfer przetwarzanych obrazów w architekturze obliczeniowej. Obejmują one kontroler Gigabit Ethernet, podwójny CAN-FD, podwójny FlexRay i jednokanałowy interfejs PCIe 5 Gbit/s co umożliwia skalowalność systemu.
Opcjonalny podsystem graficzny obejmuje jednostkę przetwarzania grafiki 3D, która obsługuje interfejsy renderowania grafiki OpenCL 1.2 EP 2.0, OpenGL ES 3.0 i OpenVG 1.1. Umożliwia to przetwarzanie obrazu wymagane w przypadku skomplikowanych zastosowań wideo takich jak inteligentna reklama, pomoc kierowcy lub scenariusze bezpieczeństwa wymagające nadzoru człowieka. Korzystając z wydajności energetycznej rodziny procesorów ARM serii A, typowy pobór mocy S32V wynosi od 5 do 10 W, S32V zapewnia również wystarczającą moc przetwarzania obrazu, aby wykonywać zaawansowane zadania, takie jak rozpoznawanie twarzy lub wykrywanie obiektów ruchomych, tak jak to przedstawiono na rysunku 2. Ale jeśli zostanie użyty tak jak w przykładzie z automatycznymi drzwiami, w celu dodania do systemu funkcji przetwarzania obrazu, programista nie musi znać procesu pisania oprogramowania dla złożonych rozwiązań widzenia maszynowego. Ważnym pytaniem do rozważenia przez dewelopera jest zatem, w jaki sposób rozwój oprogramowania użytkowego jest wspierany przez ekosystem S32V.
Podstawą uaktywnienia oprogramowania w S32V jest zestaw Vision SDK (Vision Software Development Kit) firmy NXP, który jest częścią S32 Design Studio dla wizyjnego zintegrowanego środowiska programistycznego (ang. Vision Integrated Development Environment (IDE)). Zestaw Vision SDK jest obsługiwany na płytkach ewaluacyjnych S32V dostarczanych przez NXP wraz z przykładami zastosowań dla funkcji takich jak wykrywanie twarzy i homografia do dopasowywania cech. Zawiera bazę kodu open-source: działa na systemie operacyjnym Linux, zawiera bibliotekę open source (OpenCV) oraz otwarte, standardowe języki i API, w tym OpenCL i OpenGL.
Rysunek 2: Algorytm wykrywania twarzy dostarczony jako przykładowy kod w zestawie SDK Vision S32V
Co najważniejsze, rozwój oprogramowania można osiągnąć za pomocą samego języka programowania C. Zestaw Vision SDK ułatwia pracę nad podziałem zadań między akceleratory sprzętowe i rdzenie ogólnego przeznaczenia, co w przeszłości było wyraźnie trudnym elementem podczas wdrażania projektów systemów wizyjnych. W zestawie Vision SDK zawarta została dodatkowa biblioteka wizyjna APEX-CV. Oprócz zestawu Vision SDK, NXP zapewnia także modelowy zestaw narzędzi do projektowania, który umożliwia projektantom korzystanie z oprogramowania MATLAB® w celu opracowania aplikacji na S32V.
Szybki rozwój koncepcji S32V
S32V jest dostarczany jako wstępnie skonfigurowany do pracy ze standardowymi, gotowymi modułami kamery, umożliwiając programistom natychmiastową koncentrację na rozwoju oprogramowania:
- Moduł S32V-SONYCAM firmy NXP
- Omnivision OV10640CSP-S32V lub MXOV10635-S32V, obie kamery MIPI o wysokim zakresie dynamicznym (HDR)
Oczywiście, możliwa jest integracja innych czujników, ale konieczne będzie opracowanie sterowników na niskim poziomie. Strumień obrazu S32V został zaprojektowany do współpracy z czujnikami obrazu o rozdzielczości do 2 Mpx. Oznacza to, że należy wziąć pod uwagę ograniczenia przepustowości w systemach o wyższej rozdzielczości. NXP dostarcza również różne płytki ewaluacyjne do opracowywania prototypów opartych na S32V. Należą do nich:
- SBC-S32V234 , płytka ewaluacyjna do syntezy obrazu i sensorów, jak pokazano na rysunku 3
- S32V234-EVB2, połączenie systemu ewaluacji obrazu i czujników oraz platformy programistycznej
Połączenie gotowego sprzętu programistycznego z kompleksowym pakietem narzędzi i gotowymi przykładami aplikacji daje początkującym twórcom zintegrowanego systemu wizyjnego najlepszą możliwą platformę do szybkiego rozwoju systemu. Oznacza to, że po raz pierwszy zintegrowane rozwiązania, dla których architektura wizyjna na PC była nieodpowiednia, mogą teraz korzystać z funkcjonalności inteligentnego widzenia maszynowego, co może znacznie zwiększyć wartość wielu współczesnych projektów systemów zintegrowanych.
Rysunek 3. Płytka ewaluacyjna SBC-S32V234 dla procesora S32V