Komponenty do projektowania systemów wizji maszynowej

Utworzono: sierpień 13, 2021
Zaktualizowano: lipiec 1, 2024
Szeroka wizja

 

Inteligentne kamery, komputerowe systemy widzenia, maszynowe widzenie... bez względu na to, jak to nazwiesz, aplikacje wykorzystujące widzenie są coraz częściej integrowane z różnymi produktami. Klasyczną aplikacją, z którą większość projektantów PCB jest dobrze zaznajomiona, jest produkcja, a ostatnio także rozpoznawanie twarzy w smartfonach. Projektanci dobrze zorientowani w projektowaniu i systemach maszynowego widzenia dostrzegają wiele unikalnych zastosowań w medycynie, motoryzacji, robotyce, lotnictwie, bezpieczeństwie i z pewnością w innych dziedzinach.

 

Jedną z interesujących rzeczy w branży elektronicznej jest łatwość, z jaką nowe technologie mogą być integrowane z nowymi systemami, ponieważ nadal się rozpowszechniają. Maszynowe widzenie zdecydowanie przekroczyło próg, do którego standardyzacja, wsparcie dla deweloperów i bogactwo komponentów są dostępne dla projektantów, którzy chcą innowować w tej dziedzinie. Obecnie istnieje kilka popularnych platform sprzętowych, które są opcją wejściową dla nowszych projektantów. Jeśli jesteś poza etapem prototypowania i przygotowujesz sprzęt gotowy do produkcji, nowsze procesory umożliwiają tworzenie bardziej zintegrowanych systemów, które wykorzystują zaawansowane technologie, takie jak uczenie maszynowe.

 

W tym przewodniku zbadamy niektóre komponenty potrzebne do budowy systemów maszynowego widzenia oraz zasoby dostępne dla programistów wbudowanych. Systemy maszynowego widzenia mają ważny element inżynierii sprzętowej i mechanicznej, ponieważ mamy do czynienia z kamerami i optyką. Rozwój tych systemów jest bardzo bogaty, z zadaniami obejmującymi wiele dyscyplin. Na szczęście producenci komponentów i deweloperzy open-source mają dostęp do wielu zasobów, które mogą pomóc przyspieszyć projektowanie sprzętu i rozwój systemów, a zainteresowani programiści są zachęcani do zapoznania się z niektórymi przykładami, które tutaj pokażemy, aby zacząć.

Architektura systemu maszynowego widzenia

Pod względem elektroniki, systemy maszynowego widzenia mają dość ogólną architekturę w porównaniu z innymi systemami. Poniższy schemat blokowy ilustruje ogólną architekturę wysokiego poziomu, która jest implementowana w systemach maszynowego widzenia. Te systemy mogą mieć różne poziomy integracji i formy, przy czym niektóre z pokazanych poniżej bloków mogą być zintegrowane z bardziej zaawansowanym procesorem.

 

Architektura systemu maszynowego widzenia wysokiego poziomu

 

Nie istnieje kwintesencja systemu maszynowego widzenia, który mógłby być używany jako odniesienie dla innych projektów, ponieważ maszynowe widzenie jest zdolnością, a nie produktem czy konkretnym typem projektu. Systemy maszynowego widzenia mają wspólne cechy, jak pokazano na powyższym schemacie blokowym, ale są implementowane z różnymi zestawami komponentów. Zamiast wyrzucać listy komponentów wspierających systemy maszynowego widzenia, musimy zacząć od poziomu procesora, aby zobaczyć, jak algorytmy przetwarzania obrazu mogą być efektywnie implementowane.

FPGA, MPU, czy GPU?

MCU lub SoC oparte na MCU zawsze były popularne, nawet w systemach implementujących możliwości wizji maszynowej. MCU z standardowymi interfejsami cyfrowymi mogą łączyć się z bardziej specjalizowanymi ASIC do przetwarzania obrazu, podczas gdy FPGA mogą być na tyle duże, aby implementować bezpośrednie pozyskiwanie obrazu, funkcje DSP i inne przetwarzanie na poziomie systemu. GPU mogą zapewnić dedykowany zewnętrzny procesor wizyjny, który dostarcza dane z powrotem do kontrolera hosta.

 

 

 

Pod względem poziomu zaawansowania, architektury MPU + FPGA lub MPU + GPU są preferowane do niemal czasu rzeczywistego wizji maszynowej. Są również preferowane do przetwarzania obrazów o wyższej rozdzielczości, ponieważ FPGA/GPU mogą implementować równoległość, co skraca czas przetwarzania, gdy wymagane jest przetwarzanie o wysokiej rozdzielczości/głębi kolorów. Jest to główna zaleta FPGA, ponieważ logika jest elastyczna, jednak zarządzanie i algorytmy do zaawansowanego przetwarzania są trudniejsze do opracowania bez wcześniejszego doświadczenia.

 

To wszystko nie oznacza, że MCU i MPU nie mogą być używane jako kontrolery hosta w aplikacjach wizji maszynowej. Na przykład, twój telefon i komputer nie używają tych i mogą wykonywać niektóre prostsze zadania przetwarzania obrazu z wideo o niskiej liczbie klatek na sekundę i statycznych obrazów. Szczerze mówiąc, CPU/SoC w tych urządzeniach ma zwykle znacznie większą moc obliczeniową niż wysokiej klasy MPU. MCU mogłoby być używane do przetwarzania obrazów o niższej rozdzielczości, mniejszej liczbie klatek na sekundę, mniejszej głębi kolorów lub w monochromie, a dodając więcej mocy obliczeniowej, można obsługiwać bardziej szczegółowe obrazy. MPU są lepszą opcją w produkcji, ponieważ możesz potrzebować dostępu do zewnętrznej pamięci o wysokiej prędkości, co oznacza, że będziesz potrzebować interfejsu DDR RAM i możliwie PCIe dla niektórych peryferiów, czego zwykle nie znajdziesz w wolniejszym MCU.

Specyficzne dla aplikacji vs. Uogólnione

Jeśli chcesz zaimplementować bardziej zaawansowane algorytmy rozpoznawania obrazów i segmentacji w swoim systemie, możesz zdecydować się na SOM, COM lub komputer jednopłytkowy jako główny kontroler dla swojej aplikacji wizji maszynowej. Jeśli procesor ma wystarczająco dużo pamięci na chipie i zewnętrznej RAM, zwykle może implementować większość zadań pozyskiwania i przetwarzania, jednocześnie uruchamiając aplikację do kontrolowania reszty systemu. Te architektury są często używane do zadań segmentacji obrazu opartej na progach i wykrywania obiektów w bardzo specyficznych aplikacjach od niskiej do umiarkowanej liczby klatek na sekundę danych wideo.

Wyzwania w projektowaniu wizji maszynowej

Podobnie jak wiele innych projektów, które zasadniczo działają z niskopoziomowymi sygnałami analogowymi, systemy i projekty wizji maszynowej mają własny zestaw wyzwań elektrycznych, które należy wziąć pod uwagę. Niektóre z rozwiązań leżą na poziomie przetwarzania obrazu, inne są na poziomie systemu i dotyczą wyboru komponentów. Oto niektóre z głównych wyzwań, które projektanci muszą rozważyć w projektowaniu wizji maszynowej:

 

  • Zarządzanie ciepłem: Kamery o wysokiej rozdzielczości montowane na płytach w bardziej kompaktowych systemach mogą odbierać dużo ciepła podczas pracy, co może wymagać zastosowania radiatora lub przepływu powietrza przez obudowę, aby pozostały chłodne. Systemy z mniejszymi procesorami i większymi płytami zazwyczaj mogą samodzielnie utrzymać niską temperaturę, ale mniejsze płyty z szybszymi procesorami mogą wymagać materiału interfejsowego połączonego z obudową w celu odprowadzenia ciepła.

  • EMI/EMC: Ponieważ systemy wizyjne są zazwyczaj systemami mieszanych sygnałów, wymagają odpowiedniego układu, aby zapobiec zakłóceniom między komponentami cyfrowymi a wyjściem z sensora CMOS lub CCD. CMOS może być lepszą opcją, ponieważ konwersja danych odbywa się na poziomie chipa. Aby zapewnić dokładne odzyskiwanie obrazu w kompaktowych systemach z szybkim przetwarzaniem, upewnij się, że zaimplementujesz najlepsze praktyki tłumienia EMI.

  • Integralność zasilania: Systemy wizyjne i systemy HMI mogą doświadczać problemów z integralnością zasilania, jeśli układ nie jest odpowiednio skonstruowany, nawet w przypadku, gdy projekt nie działa z komponentami lub protokołami wysokiej prędkości. Może to brzmieć jak problem, który można wyeliminować za pomocą filtracji, ale nie jest to takie proste. Rozwiązanie może być tak proste, jak zapewnienie, że płaszczyzna uziemienia jest umieszczona do routingu wszystkich sygnałów cyfrowych wchodzących na płytę główną.

  • Montaż optyki: Systemy wizyjne wymagają optyki do definiowania płaszczyzn obiektu i obrazu oraz do tworzenia wyraźnych obrazów na czujniku obrazu, aby mogło dojść do akwizycji danych. Nowoczesne systemy wizyjne potrzebują stabilnego montażu z niską histerezą i możliwie zautomatyzowanym ustawianiem ostrości z zintegrowaną kontrolą silnika. Jest to wyzwanie zarówno w zakresie projektowania mechanicznego, jak i elektrycznego, gdzie to ostatnie obejmuje pobór mocy w obwodzie kontroli silnika i czasowania.

 

Komponenty, których będziesz potrzebować

Oczywiście nie możemy pokazać każdego możliwego komponentu w tym artykule, ponieważ byłby on po prostu zbyt długi. Co możemy zrobić, to dać ci dobrą listę komponentów, które możesz użyć, aby zacząć budować różne części twojego systemu. Poniżej zamieściłem kilka przykładowych komponentów z każdej części nowego systemu, które możesz użyć, aby zacząć:

 

  • MCU takie jak STM32 i MSP430 są świetną opcją do uruchamiania lekkich systemów wizji maszynowej oraz implementowania niektórych prostszych zadań wnioskowania AI.

  • Dla czegoś z znacznie większą mocą obliczeniową, platforma Zynq FPGA jest świetną opcją dla systemów wizji maszynowej. Xilinx oferuje również dużo wsparcia dla deweloperów systemów wizji maszynowej zbudowanych na Zynq.

  • Czujniki obrazu CMOS i czujniki CCD mogą być monochromatyczne lub kolorowe i występują w różnych rozdzielczościach. Przykładem dobrego kolorowego czujnika CMOS do zastosowań w wysokiej rozdzielczości wizji maszynowej jest MT9P031I12STC-DR1 od ON Semiconductor.

  • Do rozwijania aplikacji wysokiego poziomu, OpenCV jest doskonałym zestawem bibliotek open source, które zawierają wiele standardowych funkcji przetwarzania obrazu używanych w systemach wizji maszynowej. W internecie dostępne są inne biblioteki open source, które mogą być używane do rozwoju bardziej specjalistycznych aplikacji.

 

Do bardziej ogólnych zadań takich jak rozpoznawanie obrazów, segmentacja i identyfikacja obiektów z śledzeniem w danych wideo bez stosowania specyficznych dla aplikacji przetworzeń wstępnych (tj. z surowych obrazów) poleciłbym użycie GPU lub FPGA. Wspominam o tym tutaj, ponieważ musimy rozważyć, jak zinterfejsować się z czujnikiem obrazu, a czujnik musi być dopasowany do procesora. W FPGA logika akwizycji i następujące po niej przetwarzanie mogą być implementowane równolegle wraz z resztą logiki aplikacji.

 

Jedną z popularnych otwartych platform sprzętowych, która może być używana do rozwoju systemu, jest OpenMV. Te moduły kamery integrują logikę akwizycji obrazu, sprzęt do montowania elementów optycznych oraz PCB zapewniający EMI/EMC i SI/PI. Są również kompatybilne z MCU STM32 i innymi platformami. Jest to dobry system dla deweloperów aplikacji, którzy chcą używać zewnętrznego procesora jako kontrolera hosta dla większej aplikacji w systemie, ale bez zagłębiania się w rozwój sprzętu i debugowanie.

 

Moduł kamery M7 (po lewej) i Moduł adaptera FLIR Lepton (po prawej).

 

Integracja projektów wizji maszynowej z chmurą

Wizja maszynowa jest niezwykle użyteczna we wszystkich swoich formach i nie powinniśmy się dziwić, że zaawansowane rozwiązania oparte na MCU, MPU lub FPGA powinny być zintegrowane z chmurą. W zależności od tego, jak wykorzystywana jest moc obliczeniowa chmury, lepiej może być przenieść przetwarzanie do centrum danych niż wykonywać je na krawędzi, więc można użyć MCU lub lekkiego MPU. Gdy szybkie przetwarzanie jest wymagane w terenie, zadania przetwarzania powinny być wykonywane w terenie z użyciem bardziej potężnego kontrolera hosta (FPGA, MPU + FPGA lub MPU + GPU). Ponownie, wybór zależy od ilości przetwarzania wstępnego, które wykonujesz na urządzeniu, aby oczyścić i skompresować obrazy przed wysłaniem ich do chmury w celu przetwarzania.

 

Dla aplikacji AI/ML związanych z wizją maszynową, niektóre firmy dostarczają SoC i ASIC jako uzupełnienie wolniejszych procesorów lub jako moduły dodatkowe dla SBC. Google Coral jest jedną z tych opcji, działającą jako dedykowany procesor do uruchamiania modeli TensorFlow Lite dotyczących wnioskowania z danych obrazowych. Na rynek wchodzą inne opcje od startupów, które celują w wnioskowanie AI dla wielu strumieni wideo, idealnie zastępując GPU mniejszymi pakietami.

 

Systemy wizji maszynowej muszą robić znacznie więcej niż tylko przechwytywać i przetwarzać obrazy. Dzisiejsze systemy są połączone, łączą się z wieloma czujnikami, Niektóre inne komponenty, które mogą być potrzebne do Twojego systemu wizji maszynowej, to:

 

 

Projektowanie systemów wizji maszynowej wymaga wiedzy specjalistycznej w wielu dziedzinach i współpracy z zespołem, ale wybór komponentów dla tych systemów nie powinien być trudny. Gdy potrzebujesz znaleźć komponenty do swojej aplikacji wizji maszynowej, użyj zaawansowanych funkcji wyszukiwania i filtracji w Octopart. Korzystając z wyszukiwarki elektroniki Octopart, będziesz miał dostęp do aktualnych danych o cenach dystrybutorów, zapasach części i specyfikacjach części, a wszystko to jest swobodnie dostępne w przyjaznym interfejsie użytkownika. Zobacz naszą stronę z układami scalonymi, aby znaleźć potrzebne komponenty.

Bądź na bieżąco z naszymi najnowszymi artykułami, zapisując się do naszego newslettera.

Powiązane zasoby

Powrót do strony głównej
Thank you, you are now subscribed to updates.