Talaan ng mga Nilalaman:

Sipeed MaiX Bit OpenMV Demos - Computer Vision: 3 Hakbang
Sipeed MaiX Bit OpenMV Demos - Computer Vision: 3 Hakbang

Video: Sipeed MaiX Bit OpenMV Demos - Computer Vision: 3 Hakbang

Video: Sipeed MaiX Bit OpenMV Demos - Computer Vision: 3 Hakbang
Video: Unpacking and OpenMV Demos Sipeed MaiX Bit 2024, Nobyembre
Anonim
Image
Image

Ito ang pangalawang artikulo sa serye tungkol sa Sipeed AI sa platform ng microcontroller ng Edge. Sa oras na ito ay magsusulat ako tungkol sa MaiX Bit (link sa Seeed Studio Shop), isang maliit, board ng handang handa na sa breadboard. Ang mga pagtutukoy na ito ay halos kapareho sa MaiX Dock, ang board na ginamit ko para sa huling tutorial, dahil gumagamit sila ng parehong chip, Kendryte K210.

Gagamitin namin ang micropython firmware upang subukan ang ilang mga demo ng OpenMV. Narito ang paglalarawan mula sa OpenMV homepage:

Ang proyekto ng OpenMV ay tungkol sa paglikha ng mga murang gastos, napapalawak, pinapagana ng Python, mga module ng paningin ng makina at naglalayong maging "Arduino ng Machine Vision". … Ginagawa ng Python ang pakikipagtulungan sa mga algorithm ng pangitain ng makina na mas madali. Halimbawa, ang find_blobs () na pamamaraan sa code ay nakakahanap ng mga color blob at nagbabalik ng isang listahan ng mga 8-halagang bagay na kumakatawan sa bawat color blob na natagpuan. Sa Python na pag-ulit sa listahan ng mga bagay na ibinalik ng find_blobs () at pagguhit ng isang rektanggulo sa paligid ng bawat blangko ng kulay ay madaling gawin sa dalawang linya lamang ng code.

Kaya, sa kabila ng mga tampok ng MaiX Bit na nakatuon sa neural network accelerator, kung minsan mas madaling gamitin lang ang mga OpenMV hard-coded na algorithm upang gawin ang trabaho o gamitin ang mga ito sa isa't isa.

Ang ilang mga kaso ng paggamit na naisip ko ay:

1) Pagtuklas ng linya para sa bot ng tagasunod sa linya

2) Ang pagtuklas ng mga ilaw ng trapiko na may pagtuklas ng bilog at kulay

3) Paggamit ng pagtuklas ng mukha upang mahanap ang mga mukha para sa pagkilala sa mukha (na may DNN)

Repository ng Github para sa artikulong ito

Hakbang 1: Flash Micropython Firmware

Kumonekta sa MaiX Bit
Kumonekta sa MaiX Bit

Una sa lahat kakailanganin naming i-flash ang micropython firmware sa aming board. Ang isang precompiled binary ay kasama sa repository ng github para sa artikulong ito, kasama ang kflash.py (isang flash utility). Kung nais mong i-compile ang firmware mula sa source code, i-download lamang ang source code mula https://github.com/sipeed/MaixPy, i-install ang toolchain at i-compile ang source code sa maixpy.bin file. Ang mga detalyadong tagubilin sa pagbuo ay matatagpuan dito.

I-flash ang binary file gamit ang

sudo python3 kflash.py kpu.bin

Matapos ang matagumpay na flashing sundin ang susunod na hakbang.

Hakbang 2: Kumonekta sa MaiX Bit

Ngayon ang aming MaiX Bit ay dapat na ma-access sa pamamagitan ng isang serial na koneksyon sa USB na may baudrate 115200. Maaari mong gamitin ang iyong paboritong software para sa serial na komunikasyon o mga utos lamang ng pusa at echo, anuman ang nababagay sa iyong mga pangangailangan. Gumagamit ako ng screen para sa serial na komunikasyon at nahanap ko itong napakadali.

Ang utos para sa pagtataguyod ng isang serial session ng komunikasyon sa screen ay

sudo screen / dev / ttyUSB0 115200

kung saan ang / dev / ttyUSB0 ay ang address ng iyong aparato.

Maaaring kailanganin mong pindutin ang pindutan ng pag-reset sa iyong microcontroller upang makita ang mensahe ng pagbati at prompt ng interpreter ng python.

Hakbang 3: Patakbuhin ang Mga Demo

Ngayon ay maaari mong ma-access ang kopya mode sa pamamagitan ng pagpindot sa Ctrl + E at kopyahin ang mga demo code. Upang patakbuhin ang mga ito pindutin ang Ctrl + D sa kopya mode.

Kung hindi mo nais na i-record ang mga video, kailangan mong magbigay ng puna sa mga linya ng pagrekord ng video. Kung hindi man magtatapon ang code ng isang pagbubukod kung walang naipasok na SD card

Narito ang mga maikling paglalarawan ng bawat demo:

Maghanap ng mga lupon - gumagamit ng pag-andar ng find_circles mula sa OpenMV. Nangangailangan ng higit pang pag-aayos para sa iyong tukoy na application, partikular ang threshold (kinokontrol kung anong mga lupon ang napansin mula sa hough transform. Ang mga onlycircle na may lakas na mas malaki sa o katumbas ng threshold ang naibalik) at r_min, mga halagang r_max.

Maghanap ng mga parihaba - gumagamit ng find_rects function mula sa OpenMV. Maaari kang maglaro kasama ang halaga ng threshold, ngunit ang halagang mayroon ako sa demo ay gumagana nang mahusay para sa paghahanap ng mga parihaba.

Maghanap ng mga mukha, maghanap ng mga mata - gumagamit ng pag-andar ng find_feature kasama ang Haar Cascades para sa pagtuklas ng mga mata at pangharap na mukha sa imahe. Maaari kang maglaro sa paligid ng mga halaga ng threshold at sukatan para sa tamang trade-off sa bilis.

Maghanap ng mga walang katapusang linya - gumagamit ng find_lines function upang hanapin ang lahat ng mga walang katapusang linya sa imahe gamit ang hough transform.

Makita ang kulay - gumagamit ng function na get_statistics upang makakuha ng porsyento na bagay at pagkatapos ay nagko-convert ng mga halagang halaga ng LAB tuple sa mga halaga ng tupad ng RGB. Sinulat ko ang halimbawang ito sa aking sarili at gumagana ito ng maayos, ngunit tandaan ang mga resulta ng pagtuklas ng kulay ay maaapektuhan ng mga nakapaligid na kundisyon ng ilaw.

Maaari kang makahanap ng maraming mas kawili-wiling mga demo sa OpenMV github repository! Karamihan sa mga ito ay katugma sa MaiX Bit micropython, ang tanging bagay na kailangan mong tandaan ay upang magdagdag ng sensor.run (1) pagkatapos itakda ang pixformat at i-frame.

Maligayang eksperimento sa OpenMV code. Kung mayroon kang anumang mga katanungan o nais na ibahagi ang ilan sa iyong mga kagiliw-giliw na mga resulta, huwag mag-atubiling makipag-ugnay sa akin sa Youtube o LinkedIn. Ngayon, patawarin mo ako, gagawa ako ng mga robot!

Inirerekumendang: