Përmbajtje:
- Hapi 1: CNN dhe mësimi transferues: Disa teori
- Hapi 2: Përgatitni mjedisin tuaj
- Hapi 3: Instaloni AXeleRate dhe Drejtoni Testet
- Hapi 4: Ri-stërvitni modelin, shndërroni modelin Keras në.kmodel
- Hapi 5: Drejtoni modelin në Sipeed Maix Bit
- Hapi 6: Përfundime
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:11
Unë tashmë kam shkruar një artikull se si të ekzekutoni demonstrimet OpenMV në Sipeed Maix Bit dhe gjithashtu bëra një video të demonstrimit të zbulimit të objekteve me këtë tabelë. Një nga pyetjet e shumta që njerëzit kanë bërë është - si mund ta njoh një objekt për të cilin rrjeti nervor nuk është i trajnuar? Me fjalë të tjera, si ta bëni klasifikuesin tuaj të imazhit dhe ta përdorni me përshpejtimin e harduerit.
Kjo është një pyetje e kuptueshme, pasi për projektin tuaj ndoshta nuk keni nevojë të njihni disa objekte të përgjithshme, si macet dhe qentë dhe aeroplanët. Ju dëshironi të njihni diçka specifike, për shembull, një racë qeni për atë derë automatike të kafshëve shtëpiake, ose një specie bimore për klasifikim, ose ndonjë aplikacion tjetër dalës për të cilin mund të mendoni!
Te kuptova! Në këtë artikull do t'ju mësoj se si të krijoni klasifikuesin tuaj personal të imazhit me mësimin e transferimit në Keras, ta shndërroni modelin e trajnuar në formatin.kmodel dhe ta ekzekutoni atë në bordin Sipeed (mund të jetë çdo tabelë, Bit/Dock ose Go) duke përdorur Micropython ose Arduino IDE. Dhe vetëm imagjinata juaj do të jetë kufiri i detyrave që mund të bëni me këtë njohuri.
P URDITSIM MAJ 2020: Duke parë sesi artikulli dhe videoja ime mbi Njohjen e Imazheve janë ende shumë të popullarizuara dhe në mesin e rezultateve kryesore në YouTube dhe Google, vendosa të azhurnoj artikullin për të përfshirë informacionin rreth aXeleRate, kuadrit të bazuar në Keras për AI në Edge unë zhvillohem.
aXeleRate, në thelb, bazohet në koleksionin e skripteve që kam përdorur për trajnimin e modeleve të njohjes së imazhit/zbulimit të objekteve - të kombinuara në një kornizë të vetme dhe të optimizuar për rrjedhën e punës në Google Colab. Moreshtë më i përshtatshëm për t'u përdorur dhe më i përditësuar.
Për versionin e vjetër të artikullit, ende mund ta shihni në steemit.com.
Hapi 1: CNN dhe mësimi transferues: Disa teori
Rrjetet Nevolucionare Konvolucionare ose CNN është një klasë e rrjeteve nervore të thella, më së shpeshti aplikohet për të analizuar imazhet vizuale. Ka shumë literaturë në internet mbi këtë temë dhe unë do të jap disa lidhje në pjesën e fundit të artikullit. Me pak fjalë, ju mund të mendoni për CNN si një seri filtrash, të aplikuar në imazh, secili filtër kërkon një veçori të veçantë në imazh - në shtresat e poshtme konvolucionare tiparet janë zakonisht linja dhe forma të thjeshta dhe në shtresat më të larta tiparet mund të jetë më specifike, p.sh pjesët e trupit, tekstura të veçanta, pjesë të kafshëve ose bimëve, etj. Prania e një grupi të caktuar karakteristikash mund të na japë një ide se cili mund të jetë objekti në imazh. Mustaqe, dy sy dhe një hundë të zezë? Duhet të jetë mace! Gjethe jeshile, një trung peme? Duket si një pemë!
Shpresoj se e keni marrë idenë për parimin e punës së CNN tani. Normalisht një rrjet nervor i thellë ka nevojë për mijëra imazhe dhe orë të stërvitjes (varet nga pajisjet që përdorni për trajnim) për të "zhvilluar" filtra që janë të dobishëm për njohjen e llojeve të objekteve që dëshironi. Por ka një shkurtore.
Një model i trajnuar për të njohur shumë objekte të ndryshme të zakonshme (mace, qen, pajisje shtëpiake, transport, etj) tashmë ka shumë filtra të dobishëm të "zhvilluar", kështu që ne nuk kemi nevojë për të për të mësuar njohjen e formave dhe pjesëve themelore e objekteve përsëri. Ne thjesht mund të ritrajnojmë shtresat e fundit të rrjetit për të njohur klasa të veçanta të objekteve, të cilat janë të rëndësishme për ne. Kjo quhet "të mësuarit e transferimit". Keni nevojë për shumë më pak të dhëna stërvitore dhe llogaritni kohën me transferimin e mësimit, pasi jeni duke trajnuar vetëm shtresat e fundit të rrjetit, të përbëra ndoshta nga disa qindra neurone.
Tingëllon e mrekullueshme, apo jo? Le të shohim se si ta zbatojmë atë.
Hapi 2: Përgatitni mjedisin tuaj
Janë dy mënyra për të përdorur aXeleRate: ekzekutimi lokal në makinën Ubuntu ose në Google Colab. Për të funksionuar në Google Colab, hidhini një sy këtij shembulli:
Klasifikimi i imazheve Fletore Colab
Trajnimi i modelit tuaj në vend dhe eksportimi i tij për t'u përdorur me përshpejtimin e harduerit është gjithashtu shumë më i lehtë tani.
Mjedisi im i punës është Ubuntu 16.04, 64bit. Ju mund të përdorni Virtual machine për të ekzekutuar imazhin Ubuntu pasi ne nuk do të përdorim GPU për trajnim. Me disa modifikime ju gjithashtu mund të ekzekutoni skriptin e trajnimit në Windows, por për konvertimin e modelit do t'ju duhet të përdorni sistemin Linux. Pra, mjedisi i preferuar për ju për të ekzekutuar këtë tutorial është Ubuntu 16.04, që funksionon në vendlindje ose në makinë virtuale.
Le të fillojmë duke instaluar Miniconda, e cila është menaxher i mjedisit për Python. Ne do të krijojmë një mjedis të izoluar, kështu që ne nuk do të ndryshojmë rastësisht asgjë në mjedisin tuaj të sistemit Python.
Shkarkoni instaluesin këtu
Pasi të përfundojë instalimi, krijoni një mjedis të ri:
conda create -n ml piton = 3.7
Le të aktivizojmë mjedisin e ri
conda aktivizoni ml
Një parashtesë para guaskës tuaj bash do të shfaqet me emrin e mjedisit, duke treguar që ju punoni tani në atë mjedis.
Hapi 3: Instaloni AXeleRate dhe Drejtoni Testet
Instaloni aXeleRate në makinën tuaj lokale me
pip instalo git+https://github.com/AIWintermuteAI/aXeleRate
Për të shkarkuar shembuj ekzekutoni:
git klon
Ju mund të bëni teste të shpejta me tests_training.py në dosjen aXeleRate. Ai do të kryejë trajnime dhe përfundime për secilin lloj modeli, do të kursejë dhe konvertojë modele të trajnuara. Meqenëse është vetëm trajnim për 5 epoka dhe grupi i të dhënave është shumë i vogël, nuk do të jeni në gjendje të merrni modele të dobishme, por ky skenar është menduar vetëm për të kontrolluar mungesën e gabimeve.
Hapi 4: Ri-stërvitni modelin, shndërroni modelin Keras në.kmodel
Për këtë shembull lodrash ne do të trajnojmë modelin për të njohur Santa Claus dhe Arduino Uno. Natyrisht që ju mund të zgjidhni klasa të tjera. Shkarkoni bazën e të dhënave nga këtu. Krijoni një kopje të skedarit classifier.json në dosjen e konfigurimit, pastaj ndryshojeni në përputhje me rrethanat, e ngjashme me skedarin e konfigurimit në pamjen e ekranit - sigurohuni që rruga drejt dosjeve të trajnimit dhe vërtetimit është e saktë!
Drejtoni komandën e mëposhtme nga dosja aXeleRate:
python axelerate/train.py - c konfiguron/santa_uno.json
Trajnimi do të fillojë. Nëse saktësia e vlerësimit (metrika jonë e vlefshmërisë) nuk po përmirësohet për 20 epoka, trajnimi do të ndalet para kohe. Sa herë që saktësia e vlerësimit përmirësohet, modeli ruhet në dosjen e projektit. Pas përfundimit të trajnimit, aXeleRate konverton automatikisht modelin më të mirë në formate të specifikuara - tani mund të zgjidhni, "tflite", "k210" ose "edgetpu".
Hapi 5: Drejtoni modelin në Sipeed Maix Bit
Ekzistojnë dy mënyra për të drejtuar modelin që keni tani në pajisjen Sipeed Maix: firmware micropython dhe Arduino IDE. Pajisjet Micropython janë më të lehta për t'u përdorur, por zënë një pjesë të konsiderueshme të kujtesës në dispozicion, kështu që ka më pak hapësirë për modelin. Arduino IDE është në thelb kodi C, i cili është shumë më efikas dhe ka gjurmë më të vogël të kujtesës. Modeli im është vetëm 1.9Mb, kështu që të dy opsionet funksionojnë për të. Ju mund të përdorni modele të mëdha deri në 2.9 Mb me Micropython, për çdo gjë më të madhe që duhet të merrni parasysh duke përdorur Arduino IDE.
Shkarkoni OpenMV IDE nga këtu dhe firmware minimal micropython nga këtu.
Djeg firmware me mjetin kflash_gui. Ju gjithashtu mund të zgjidhni të digjni modelin e stërvitur për të ndezur gjithashtu, siç tregohet në pamjen e ekranit. Ose kopjojeni atë në kartën SD (në atë rast kopjoni.kmodel në rrënjën e një karte SD dhe futni kartën SD në Sipeed Maix Bit)
Hapni OpenMV IDE dhe shtypni butonin e lidhjes. Hapni skriptin santa_uno.py nga dosja example_scripts dhe shtypni butonin Start. Ju duhet të shihni një transmetim të drejtpërdrejtë nga kamera dhe nëse hapni Terminalin Serial do të arrini rezultatin kryesor të njohjes së imazhit me rezultatin e besimit!
Për ta përdorur me Arduino IDE, së pari duhet të ndiqni procedurën për shtimin e pllakave Sipeed në Arduino IDE, e cila është e dokumentuar këtu. Versioni juaj Arduino IDE duhet të jetë së paku 1.8.12. Pasi të keni shtuar bordet, hapni skicën mobilenet_v1_transfer_learning.ino dhe ngarkojeni në Sipeed Maix Bit. Ndryshoni emrin e modelit në kartën SD në "model" (ose bëni një kopje me këtë emër). Ju mund të ndryshoni emrat e etiketave në names.cpp. Do të shfaqë transmetimin e drejtpërdrejtë të kamerës në ekranin e Sipeed Maix së bashku me rezultatin kryesor të njohjes së imazhit.
Hapi 6: Përfundime
Këtu janë disa materiale të tjera për të lexuar në temën e CNN -ve dhe për të transferuar mësimin:
Transferimi i të mësuarit duke përdorur Mobilenet dhe Keras Një shpjegim i shkëlqyeshëm i transferimit të mësimit, ky tutorial përdor një version të modifikuar të kodit nga ai artikull.
Macet dhe qentë dhe rrjetet nervore konvolucionale Shpjegon bazat pas CNN -ve dhe vizualizon disa nga filtrat. Me macet!
Trajnoni, Konvertoni, Drejtoni MobileNet në Sipeed MaixPy dhe MaixDuino! Një mësim nga ekipi i Sipeed se si të stërvitni klasat Mobilenet 1000 nga e para (pa mësim transferimi). Ju mund të shkarkoni modelin e tyre të para-trajnuar dhe ta provoni!
Shpresoj se mund të përdorni njohuritë që keni tani për të ndërtuar disa projekte të mrekullueshme me vizion makinerik! Ju mund të blini bordet Sipeed këtu, ato janë ndër opsionet më të lira të disponueshme për ML në sistemet e ngulitura.
Recommended:
Inteligjenca artificiale dhe njohja e imazhit duke përdorur HuskyLens: 6 hapa (me fotografi)
Inteligjenca artificiale dhe njohja e imazhit duke përdorur HuskyLens: Hej, çfarë ka, djema! Akarsh këtu nga CETech. Në këtë projekt, ne do të kemi një vështrim mbi HuskyLens nga DFRobot. Shtë një modul kamerash i mundësuar nga AI që është i aftë të bëjë disa operacione të Inteligjencës Artificiale siç është Face Recognitio
Përpunimi i Imazhit Me Raspberry Pi: Instalimi i OpenCV & Ndarja e Ngjyrës së Imazhit: 4 Hapa
Përpunimi i Imazhit Me Raspberry Pi: Instalimi i OpenCV & Ndarja e Ngjyrës së Imazhit: Ky postim është i pari nga disa mësime të përpunimit të imazhit që do të ndiqen. Ne hedhim një vështrim më të afërt në pikselët që përbëjnë një imazh, mësojmë se si të instalojmë OpenCV në Raspberry Pi dhe gjithashtu shkruajmë skripte testimi për të kapur një imazh dhe gjithashtu
Njohja dhe Identifikimi i Fytyrës - Arduino Face ID duke përdorur OpenCV Python dhe Arduino .: 6 hapa
Njohja dhe Identifikimi i Fytyrës | Arduino Face ID Duke përdorur OpenCV Python dhe Arduino .: Njohja e fytyrës ID e fytyrës AKA është një nga veçoritë më të rëndësishme në telefonat celularë në ditët e sotme. Pra, kisha një pyetje " a mund të kem një ID të fytyrës për projektin tim Arduino " dhe përgjigja është po … Udhëtimi im filloi si më poshtë: Hapi 1: Qasja tek ne
Si të konfiguroni Arduino IDE për të punuar me tabelat Tinusaur .: 3 hapa
Si të vendosni Arduino IDE për të punuar me bordet Tinusaur .: Ky është një udhëzues i shkurtër se si të konfiguroni Arduino IDE për të punuar me bordet Tinusaur. Ajo që në thelb bën është ta bëjë atë të punojë me mikrokontrolluesit Atmel ATtiny85/45/25 Me Dallimi i vetëm është se do të shfaqet në listën e bordeve si Tinusau
Njohja e imazhit me TensorFlow në Raspberry Pi: 6 hapa
Njohja e imazhit me TensorFlow në Raspberry Pi: Google TensorFlow është një Bibliotekë e softuerit me burim të hapur për llogaritjen numerike duke përdorur grafikët e rrjedhës së të dhënave. Përdoret nga Google në fushat e ndryshme të të mësuarit të makinerisë dhe teknologjive të të mësuarit të thellë. TensorFlow u krijua fillimisht nga Google Brai