Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

OpenMV Cam H7 - system widzenia maszynowego wykorzystujący MicroPythona

ghost666 08 Paź 2018 10:11 2199 5
  • OpenMV Cam H7 - system widzenia maszynowego wykorzystujący MicroPythona
    Projekt OpenMV to inicjatywa mająca za zadanie tworzyć niedrogi, miniaturowy i łatwo dostępny system widzenia maszynowego, który oprogramować można w popularnym Pythonie. Twórcy tego systemu za cel wzięli sobie stworzenie, jak sami mówią "Arduino dla systemów widzenia maszynowego". Ich celem jest tworzenie systemu widzenia maszynowego, który byłby w zasięgu hobbystów i amatorów - tak finansowym, jak i merytorycznym. Wszystkie zaawansowane algorytmy, potrzebne do działania takiego systemu, zostały już stworzone i są preprogramowane w module, dzięki czemu bardzo łatwo wykorzystać go we własnej, dowolnej aplikacji.

    OpenMV jest kamerą dla Arduino z bardzo potężnymi możliwościami. Moduł programuje się w Pythonie, a zintegrowane w systemie algorytmy pozwalają na rozpoznawanie obiektów, twarzy, detekcję kolorów etc. Wszystko to bez wielkiego wysiłku algorytmicznego i z możliwością prostej komunikacji pinami GPIO z modułami takimi jak Arduino.

    Nowa kamera, która dołączyła do rodziny OpenMV - model H7, jest kolejną generacją tych systemów, następcą kamery M7, której sprzedano póki co ponad 10 tysięcy sztuk na całym świecie.

    OpenMV Cam H7 - system widzenia maszynowego wykorzystujący MicroPythona
    OpenMV H7 jest dwa razy potężniejsza niż jej poprzedniczka, OpenMV M7. Dzięki modułowej konstrukcji systemu możliwe jest np. wyjęcie z niej sensora i instalacja innego - kamery na podczerwień czy z globalną migawką.

    Co mogę zrobić z wykorzystaniem kamery OpenMV?

    Kamera z systemem widzenia maszynowego daje ogromne możliwości. Oto niektóre z nich:

    * System rozpoznawania i śledzenia kolorowych obiektów;
    * Robot podążający za linią;
    * Własny mikroskop DIY z zaawansowanymi funkcjami.

    Podstawowe funkcje wbudowane w system:

    Śledzenie kolorowych obiektów - dzięki zaawansowanym algorytmom wbudowanym w system, OpenMV H7 może śledzić obiekty bez problemu osiągając prędkość przetwarzania na poziomie 80 klatek na sekundę. To dostatecznie dużo, by sterować z jej pomocą np. autkiem RC.





    Dzięki zastosowaniu algorytmów tzw. Multi-Blob, system może śledzić dowolną ilość kolorowych przedmiotów w polu widzenia kamery. Wszystko dzięki segmentowaniu obrazu z wykorzystaniem 16 progów kolorów, dzięki czemu można realizować systemy takie jak śledzenie obiektów w konkretnym kolorze. System po wykryciu wszystkich plam barwnych na obrazie, dokona ich identyfikacji, a następnie scalenia w pojedyncze obiekty tych, które się na siebie nakładają. Kamera zwraca proste informacje na temat wielkości i położenia obiektu na obrazie, centroidzie, orientacji i wiele więcej. Wszystkie te dane obliczane są co klatkę, a dokładne ustawienia algorytmu edytować można z wykorzystaniem OpenMV IDE.

    Detekcja tagów April , kodów QR, kodów kreskowych i innych



    Kamera OpenMV H7 ma wbudowane algorytmy do dekodowania różnego rodzaju drukowanych kodów: April Tag, QR, kody kreskowe itp. Odczytuje je tak samo jak model M7, ale dwa razy szybciej.

    Wbudowana biblioteka do odczytywania jedno- i dwuwymiarowych kodów jest najszybszym sposobem, w jaki dodać można tą funkcjonalność do dowolnej aplikacji z mikrokontrolerem. Autorzy wykorzystują popularne biblioteki napisane na desktopy, takie jak AprilTag2, ZBar czy libdmtx. Wszystko dzięki możliwości korzystania z Pythona.

    OpenMV Cam H7 - system widzenia maszynowego wykorzystujący MicroPythona
    Termowizja

    Dzięki możliwości wymiany sensora w module, można w nim zainstalować kamerę FLIR Lepton 1/2/3, która pozwala na termoobrazowanie. Na obrazach z kamery termowizyjnej dokonywać można takiej samej analizy, jak na obrazach z zwykłych sensorów, jakie podpiąć można do OpenMV. Dzięki temu z łatwością można stworzyć systemy detekcji np. osób w pomieszczeniu.

    Dodatkowo, moduł OpenMV H7 daje nam pełną kontrolę nad kamerą FLIR Lepton. W firmware systemu wbudowany jest moduł dedykowany do obsługi tej kamery. Dzięki temu uzyskanie informacji na temat np. absolutnej temperatury dowolnego z pikseli na obrazie nie jest jakimkolwiek problemem.

    Wsparcie dla globalnej migawki



    Dla osób, które wymagają ostrych i precyzyjnych zdjęć w systemach widzenia maszynowego, autorzy konstrukcji dają możliwość podłączenia sensora MT9V034. Jest to moduł kamery z globalną migawką, która pozwala na uniknięcie rozmycia i przesunięcia względem siebie poszczególnych linii obrazu, jak widać na poniższym porównaniu.

    OpenMV Cam H7 - system widzenia maszynowego wykorzystujący MicroPythona


    Sensor MT9V034 to monochromatyczna kamera z globalną migawką i wsparciem dla wyzwalania na żądanie. Może ona nagrywać filmy z prędkością do 80 klatek na sekundę przy rozdzielczości VGA/QVGA, do 200 FPS przy QQVGA oraz 400 FPS czy QQQVGA.

    Tego rodzaju sensor jest szczególnie przydatny w aplikacjach, gdzie potrzebna jest perfekcyjna kontrola nad wyzwalaniem kamery i czasem jej ekspozycji – wszystko dzięki globalnej migawce.

    Jeśli potrzebujemy większej mocy obliczeniowej do analizy obrazów zebranych OpenMV H7 to bez problemu możemy podpiąć ją do Raspberry Pi i wykorzystywać kamerę z opisywanym sensorem jako niedrogą kamerę przemysłową z globalną migawką i zewnętrznym wyzwalaniem.

    Wsparcie sieci neuronowych CNN

    OpenMV H7 wspiera sieci neuronowe – do procesora modułu załadować można prostą sieć neuronową CNN, taką jak na przykład LENET-6 do detekcji liczb na obrazie. Wsparcie dla sieci neuronowych w module zapewnia biblioteka ARMa CMSIS-NN.

    Po zakończeniu kampanii crowdfundingowej na Kickstarterze projektanci modułu chcą skupić się na ćwiczeniu większej ilości sieci CNN, aby możliwe było, np. wykrywanie osób.

    Specyfikacja

    OpenMV Cam H7 - system widzenia maszynowego wykorzystujący MicroPythona


    OpenMV Cam H7 - system widzenia maszynowego wykorzystujący MicroPythona
    Kamera OpenMV H7 pracuje pod kontrolą mikrokontrolera STM32H743VIT6, który posiada między innymi (oprócz standardowych peryferiów, takich jak UART czy SPI):

    * Rdzeń ARM Cortex-M7 pracujący przy 400 MHz, który zdolny jest do wykonywania 2 instrukcji na cykl zegara. Układ posiada również FPU o podwójnej precyzji;
    * 1 MB pamięci RAM o szerokości szyny pamięci równej 64 bity, która taktowana jest 400 MHz zapewnia przepustowość do 3,2 GB/s, dzięki czemu idealnie nadaje się jako bufor klatek;
    * 2 MB pamięci FLASH z 64-bitową szyną danych, która również pracować może z zegarem 400 MHz. Idealna do np. konwersji przestrzeni kolorów z wykorzystaniem tablic;
    * Sprzętowy konwerter JPEG pracujący przy częstotliwości taktowania równej 200 MHz.

    Powyższe cechy pozwalają na przesyłanie wysokiej jakości strumieniu wideo z kamery do OpenMV IDE – o wiele lepszych niż w modelu M7. System ten pracuje o wiele szybciej niż jej poprzednik. STM32H7 wykorzystany w H7 osiąga 2060 punktów w teście CoreMark. Jednocześnie układ ten pobiera zaledwie 110 mA (średnio) podczas przetwarzania obrazów i jest w stanie bardzo szybko przechodzić w stan uśpienia (w którym podtrzymywana jest zawartość pamięci SRAM), w którym pobiera zaledwie 2 mA. Wybudzenie systemu jest bardzo szybkie i może być zrealizowane z pomocą jednego z pinów I/O modułu.

    MicroPython

    Kamera OpenMV H7 pracuje oskryptowana przez w MicroPythonie stworzonym przez Damiena Georga. Pozwala on na tworzenie własnych skryptów dla mikrokontrolera w Pythonie 3. MicroPython jest bardzo popularnym systemem operacyjnym dla mikrokontrolerów, takich jak BBC Microbit, ESP8266 czy ESP32.

    Pisanie skryptów na H7 w Pythonie daje ogromną przewagę nad pisaniem ich w C – o wiele szybciej ładują się one do układu – zajmuje to zaledwie sekundę; w przypadku C jest to istotnie więcej.

    Firmware OpenMV H7 jest w pełni open-source, a sam układ można programować także w C, jeśli sobie tego życzymy.

    OpenMV IDE

    Kamera OpenMV H7 dostarczana jest z pakietem OpenMV IDE, który czyni programowanie bardzo prostym i przyjemnym. W środowisku OpenMV IDE znajdziemy prosty edytor plików tekstowych z możliwością edycji wielu skryptów naraz, terminal szeregowy do łączenia się z modułem oraz bufor ramek, który umożliwia oglądanie na bieżąco tego, co widzi kamera.

    OpenMV IDE rozwijane jest już od dwóch lat. Środowisko to dostępne jest w wersjach na Windowsa, MacOSa, Linuksa w tym także na Raspberry Pi. OpenMV IDE to niezawodny, stabilny i sprawdzony pakiet do rozwijania oprogramowania dla kamer OpenMV: OpenMV M4 (OV2640/OV7725), OpenMV M7, OpenMV H7 oraz każdej płytki wykorzystującej MicroPythona i zgodnej z REPL.

    OpenMV jest oprogramowaniem open-source, więc można modyfikować jego źródło bez problemu. Można np. stworzyć z jego wykorzystaniem aplikację desktopową, która współpracować ma z OpenMV H7 i komputerem PC.

    Dostępne dodatki

    OpenMV Cam H7 - system widzenia maszynowego wykorzystujący MicroPythona
    Dodatkowy moduł H7 z kamerą OV7725

    Koszt dodatkowych 49 dolarów, jeśli kupujemy kamerę w ramach kampanii crowdfundingowej. To o 25% taniej niż w normalnym sklepie.



    OpenMV Cam H7 - system widzenia maszynowego wykorzystujący MicroPythona
    Obudowa OpenMV H7

    Koszt dodatkowych pięciu dolarów za przeźroczystą obudowę dla naszego modułu H7. Pozwala ona na montaż wszystkich sensorów i obiektywów.



    OpenMV Cam H7 - system widzenia maszynowego wykorzystujący MicroPythona
    Adapter dla sensora FLIR Lepton

    Ten adapter pozwala na montaż kamery FLIR Lepton 1, 2 lub 3 w module. Koszt – 15 dolarów. Zestaw nie zawiera sensora FLIR Lepton.

    Jeśli chcemy dokupić adapter od razu z sensorem podczerwieni, to zamiast 15 dolarów do kosztów zakupu kamery doliczyć musimy 280 dolarów, wtedy dostaniemy w zestawie sensor FLIR Lepton 3.5 z wsparciem dla radiometrii.



    OpenMV Cam H7 - system widzenia maszynowego wykorzystujący MicroPythona
    Moduł z kamerą z globalną migawką

    Za dodatkowe 50 dolarów do zestawu dokupić możemy moduł z kamerą z globalną migawką i zewnętrznym wyzwalaniem, jaki opisywaliśmy powyżej. Idealne rozwiązanie dla osób potrzebujących precyzyjnego obrazowania w systemie widzenia maszynowego.



    OpenMV Cam H7 - system widzenia maszynowego wykorzystujący MicroPythona
    Shield do prototypowania

    Za jedyne cztery dolary do zestawu dołączyć możemy shield do prototypowania, dzięki któremu do modułu OpenMV dołożyć możemy dowolne układy elektroniczne, jakie tylko potrzebujemy.



    OpenMV Cam H7 - system widzenia maszynowego wykorzystujący MicroPythona
    Ekran LCD

    Do układu dołączyć możemy także wyświetlacz LCD, który pozwoli na wyświetlanie obrazów z kamery. Jego koszt to 16 dolarów.



    OpenMV Cam H7 - system widzenia maszynowego wykorzystujący MicroPythona
    Moduł Wi-Fi

    Za dodatkowe 24 dolary do zestawu dołączyć można moduł bezprzewodowy, który pozwala na podłączenie kamery OpenMV do Internetu.



    OpenMV Cam H7 - system widzenia maszynowego wykorzystujący MicroPythona
    Moduł sterowania serwami

    Ten kosztujący 12 dolarów moduł pozwala na kontrolowanie do ośmiu serw – takich jak w pojazdach RC – z poziomu samej kamery OpenMV.



    OpenMV Cam H7 - system widzenia maszynowego wykorzystujący MicroPythona
    Moduł sterowania silnikami DC

    Moduł można także wyposażyć w kontroler silników prądu stałego. Ten kosztujący 16 dolarów moduł sterować może dwoma silnikami DC.



    OpenMV Cam H7 - system widzenia maszynowego wykorzystujący MicroPythona
    Obiektyw dla podczerwieni

    Za cztery dolary do kamery możemy dokupić obiektyw zoptymalizowany do pracy w podczerwieni. Nie posiada on filtra IR, dzięki czemu do naszej kamery dociera dostatecznie dużo podczerwieni, aby obrazować w tym zakresie. Obiektyw ten kosztuje 4 dolary.



    OpenMV Cam H7 - system widzenia maszynowego wykorzystujący MicroPythona
    Teleobiektyw

    Cztery dolary kosztuje też teleobiektyw, który pozwala widzieć naszej kamerze dużo dalej niż standardowy obiektyw.



    OpenMV Cam H7 - system widzenia maszynowego wykorzystujący MicroPythona
    Obiektyw szerokokątny

    Jeśli zamiast większego przybliżenia, potrzebujemy szerszego pola widzenia, to za dwanaście dolarów do modułu dokupić możemy obiektyw o krótkiej ogniskowej, zapewniający szerokie pole widzenia.

    Źródło: https://www.kickstarter.com/projects/1798207217/openmv-cam-h7-machine-vision-w-micropython


    Fajne!
  • #2 08 Paź 2018 18:05
    arturavs
    Poziom 38  

    Rozpoznawanie twarzy. Ciekawy temat. Dało by radę na podstawie OpenMV Cam H7 zrobić rozpoznawanie pyska zwierzęcia? Konkretnie chodzi mi o kota.
    Mam zamontowaną taką małą furtkę w drzwiach dla zwierza. Ale ostatnio nieproszony przybłęda potrafi wejść pod nieobecność domowników i wyżreć z miski dla Głodzilla mego.
    Takie rozpoznawanie pyska( twarzy) umożliwiłoby identyfikację osobnika, i ewentualną blokadę furtki. Da radę na tym coś takiego zrobić?

  • #3 08 Paź 2018 18:40
    ghost666
    Tłumacz Redaktor

    arturavs napisał:
    Rozpoznawanie twarzy. Ciekawy temat. Dało by radę na podstawie OpenMV Cam H7 zrobić rozpoznawanie pyska zwierzęcia? Konkretnie chodzi mi o kota.
    Mam zamontowaną taką małą furtkę w drzwiach dla zwierza. Ale ostatnio nieproszony przybłęda potrafi wejść pod nieobecność domowników i wyżreć z miski dla Głodzilla mego.
    Takie rozpoznawanie pyska( twarzy) umożliwiłoby identyfikację osobnika, i ewentualną blokadę furtki. Da radę na tym coś takiego zrobić?


    Do kamery ładować można sieci neuronowe... więc w zasadzie zrobić da się wszystko. Jeżeli jest w stanie zidentyfikować na obrazie ludzką twarz, to pewnie jest też w stanie wykryć kota, tylko kwestia tego czy i jak uda Ci się sieć wytrenować...

  • #4 08 Paź 2018 18:49
    arturavs
    Poziom 38  

    ghost666 napisał:
    tylko kwestia tego czy i jak uda Ci się sieć wytrenować...



    Ułatwieniem byłoby to, że mój kot jest nakrapiany/pręgowany. Intruz czarny( tylko oczy ma złote).

    Tylko, że ze mnie taki programista...... A jeszcze sieci neuronowe....

    Chyba RFIDa w obrożę wsadzę. Prościej będzie, i w moim zasięgu technicznym. Aczkolwiek nie chcę żeby kot w obroży chodził( gdzieś się zaczepi, czy coś).

  • #5 08 Paź 2018 19:08
    ghost666
    Tłumacz Redaktor

    arturavs napisał:
    ghost666 napisał:
    tylko kwestia tego czy i jak uda Ci się sieć wytrenować...



    Ułatwieniem byłoby to, że mój kot jest nakrapiany/pręgowany. Intruz czarny( tylko oczy ma złote).

    Tylko, że ze mnie taki programista...... A jeszcze sieci neuronowe....

    Chyba RFIDa w obrożę wsadzę. Prościej będzie, i w moim zasięgu technicznym. Aczkolwiek nie chcę żeby kot w obroży chodził( gdzieś się zaczepi, czy coś).


    Są RFID podskórne dla zwierzaków, ale nie wiem jaki mają zasięg.

  • #6 08 Paź 2018 22:39
    PUH_HESTA
    Poziom 11  

    ghost666 napisał:
    arturavs napisał:
    ghost666 napisał:
    tylko kwestia tego czy i jak uda Ci się sieć wytrenować...



    Ułatwieniem byłoby to, że mój kot jest nakrapiany/pręgowany. Intruz czarny( tylko oczy ma złote).

    Tylko, że ze mnie taki programista...... A jeszcze sieci neuronowe....

    Chyba RFIDa w obrożę wsadzę. Prościej będzie, i w moim zasięgu technicznym. Aczkolwiek nie chcę żeby kot w obroży chodził( gdzieś się zaczepi, czy coś).


    Są RFID podskórne dla zwierzaków, ale nie wiem jaki mają zasięg.


    Dla zwierząt są dedykowane wg ISO 11784 & 11785.
    Na chwile obecną łatwiej i o większym zasięgu jednak RFID do obroży i bramę radiową koło drzwi.
    Dodatkowo według testów, analiza obrazu przy zwierzętach jeszcze jest dużo mniej precyzyjna niż dla ludzi..