Sisällysluettelo:
- Vaihe 1: CNN ja siirto -oppiminen: joitakin teorioita
- Vaihe 2: Valmistele ympäristösi
- Vaihe 3: Asenna AXeleRate ja suorita testit
- Vaihe 4: Kouluta malli uudelleen, muunna Keras-malli.kmodeliksi
- Vaihe 5: Suorita malli Sipeed Maix Bitillä
- Vaihe 6: Johtopäätökset
Video: Kuvan tunnistus K210 -levyillä ja Arduino IDE/Micropython: 6 vaihetta (kuvilla)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:00
Kirjoitin jo yhden artikkelin OpenMV -demojen suorittamisesta Sipeed Maix Bitillä ja tein myös videon objektin havaitsemisdemosta tällä levyllä. Yksi monista kysymyksistä, joita ihmiset ovat esittäneet, on - kuinka voin tunnistaa kohteen, johon hermoverkkoa ei ole koulutettu? Toisin sanoen kuinka tehdä oma kuvan luokittelija ja käyttää sitä laitteistokiihdytyksellä.
Tämä on ymmärrettävä kysymys, koska sinun ei luultavasti tarvitse tunnistaa joitakin yleisiä esineitä, kuten kissoja, koiria ja lentokoneita. Haluat tunnistaa jotain erityistä, esimerkiksi koiran rodun automaattista lemmikkieläinten ovea varten, kasvilajin lajittelua varten tai muita poistuvia sovelluksia, joita voit ajatella!
Minä sain sinut! Tässä artikkelissa opetan sinulle, miten voit luoda oman mukautetun kuvien luokittelijan siirto -opetuksella Kerasissa, muuntaa koulutetun mallin.kmodel -muotoon ja käyttää sitä Sipeed -kortilla (voi olla mikä tahansa levy, Bit/Dock tai Go) Micropython- tai Arduino IDE. Ja vain mielikuvitus rajoittaa tehtäviä, joita voit tehdä tällä tiedolla.
PÄIVITTÄMINEN TOUKOKUU 2020: Nähdessäni, kuinka artikkelini ja videoni K210-levyjen kuvantunnistuksesta ovat edelleen erittäin suosittuja ja YouTuben ja Googlen huipputulosten joukossa, päätin päivittää artikkelin sisältämään tiedot aXeleRate, Keras-pohjaisesta AI-kehyksestä Edge I kehittyy.
aXeleRate perustuu pohjimmiltaan kokoelmaan skriptejä, joita käytin kuvantunnistus-/objektin havaitsemismallien kouluttamiseen - yhdistettynä yhdeksi kehykseksi ja optimoitu Google Colabin työnkulkua varten. Se on kätevämpi käyttää ja ajan tasalla.
Artikkelin vanha versio näkyy edelleen osoitteessa steemit.com.
Vaihe 1: CNN ja siirto -oppiminen: joitakin teorioita
Convolutional Neural Networks tai CNN on syvien hermoverkkojen luokka, jota käytetään yleisimmin visuaalisten kuvien analysointiin. Internetissä on paljon kirjallisuutta aiheesta ja annan joitain linkkejä artikkelin viimeiseen osaan. Lyhyesti sanottuna voit ajatella CNN: ää sarjana suodattimia, joita käytetään kuvassa, jokainen suodatin etsii kuvassa tiettyä ominaisuutta - alemmilla konvoluutiokerroksilla ominaisuudet ovat yleensä viivoja ja yksinkertaisia muotoja ja ylemmillä kerroksilla ominaisuuksia voi olla tarkempi, esim kehon osat, tietyt tekstuurit, eläinten tai kasvien osat jne. Tiettyjen ominaisuuksien olemassaolo voi antaa meille vihjeen siitä, mikä kuvassa oleva esine voisi olla. Viikset, kaksi silmää ja musta nenä? Täytyy olla kissa! Vihreät lehdet, puunrunko? Näyttää puulta!
Toivottavasti saat nyt käsityksen CNN: n toimintaperiaatteesta. Normaalisti syvä hermoverkko tarvitsee tuhansia kuvia ja harjoitustuntia (riippuu laitteistosta, jota käytät harjoitteluun) "kehittääksesi" suodattimia, jotka ovat hyödyllisiä haluttujen kohteiden tunnistamisessa. Mutta on olemassa pikakuvake.
Mallissa, joka on koulutettu tunnistamaan monia erilaisia yhteisiä esineitä (kissat, koirat, kodinkoneet, kuljetus jne.), On jo paljon hyödyllisiä suodattimia "kehitetty", joten meidän ei tarvitse oppia tunnistamaan perusmuotoja ja osia esineistä uudelleen. Voimme vain kouluttaa verkon viimeiset kerrokset uudelleen tunnistamaan tietyt meille tärkeät objektiluokat. Tätä kutsutaan "siirto -oppimiseksi". Tarvitset huomattavasti vähemmän harjoitustietoa ja lasket aikaa siirto -oppimisella, koska harjoittelet vain viimeisiä verkkokerroksia, jotka koostuvat ehkä muutamasta sadasta neuronista.
Kuulostaa mahtavalta, eikö? Katsotaan kuinka se toteutetaan.
Vaihe 2: Valmistele ympäristösi
Voit käyttää aXeleRatea kahdella tavalla: käynnissä paikallisesti Ubuntu -koneella tai Google Colabissa. Jos haluat käyttää Google Colabia, katso tämä esimerkki:
Kuvien luokittelu Colab -muistikirja
Mallin kouluttaminen paikallisesti ja sen vieminen laitteistokiihdytykseen on nyt myös paljon helpompaa.
Työympäristöni on Ubuntu 16.04, 64bit. Voit käyttää virtuaalikonetta Ubuntu -kuvan suorittamiseen, koska emme käytä GPU: ta koulutukseen. Joillakin muutoksilla voit myös suorittaa harjoitusskriptin Windowsissa, mutta mallin muuntamiseen sinun on käytettävä Linux -järjestelmää. Joten suositeltava ympäristö tämän opetusohjelman suorittamiseen on Ubuntu 16.04, joka toimii natiivina tai virtuaalikoneessa.
Aloitetaan asentamalla Miniconda, joka on Pythonin ympäristöpäällikkö. Luomme eristetyn ympäristön, joten emme vahingossa muuta mitään järjestelmän Python -ympäristössä.
Lataa asennusohjelma täältä
Kun asennus on valmis, luo uusi ympäristö:
conda create -n ml python = 3.7
Aktivoidaan uusi ympäristö
conda aktivoi ml
Etuliite ennen bash -kuorta tulee näkyviin ympäristön nimen kanssa, mikä osoittaa, että työskentelet nyt kyseisessä ympäristössä.
Vaihe 3: Asenna AXeleRate ja suorita testit
Asenna aXeleRate paikalliselle koneellesi
pip install git+https://github.com/AIWintermuteAI/aXeleRate
Lataa esimerkkejä suorittamalla:
git -klooni
Voit suorittaa pikatestejä testien_training.py avulla aXeleRate -kansiossa. Se suorittaa koulutusta ja päätelmiä kullekin mallityypille, tallentaa ja muuntaa koulutetut mallit. Koska se on vain viiden aikakauden koulutus ja tietojoukko on hyvin pieni, et voi saada hyödyllisiä malleja, mutta tämä skripti on tarkoitettu vain virheiden puuttumisen tarkistamiseen.
Vaihe 4: Kouluta malli uudelleen, muunna Keras-malli.kmodeliksi
Tässä leluesimerkissä opetamme mallia tunnistamaan joulupukin ja Arduino Unon. On selvää, että voit valita muita luokkia. Lataa tietojoukko täältä. Luo kopio classifier.json -tiedostosta määrityskansioon ja muuta sitä vastaavasti, kuten kuvakaappauksessa oleva määritystiedosto - varmista, että koulutus- ja validointikansioiden polku on oikea!
Suorita seuraava komento aXeleRate -kansiosta:
python axelerate/train.py - c configs/santa_uno.json
Koulutus alkaa. Jos validointitarkkuus (validointimittarimme) ei parane 20 aikakauden aikana, koulutus keskeytyy ennenaikaisesti. Aina kun validointitarkkuus paranee, malli tallennetaan projektikansioon. Harjoituksen päätyttyä aXeleRate muuntaa automaattisesti parhaan mallin tiettyyn muotoon - voit valita "tflite", "k210" tai "edgetpu".
Vaihe 5: Suorita malli Sipeed Maix Bitillä
Nykyinen malli voidaan käyttää kahdella tavalla Sipeed Maix -laitteistossa: micropython -laiteohjelmisto ja Arduino IDE. Micropython -laitteistoa on helpompi käyttää, mutta se vie huomattavan osan käytettävissä olevasta muistista, joten mallille jää vähemmän tilaa. Arduino IDE on pohjimmiltaan C -koodi, joka on paljon tehokkaampi ja jolla on pienempi muistijalanjälki. Mallini on vain 1,9 Mt, joten molemmat vaihtoehdot toimivat sen puolesta. Voit käyttää jopa 2,9 Mt: n malleja Micropythonin kanssa, mikä tahansa suurempi on harkittava Arduino IDE: n käyttöä.
Lataa OpenMV IDE täältä ja minimaalinen micropython -laiteohjelmisto täältä.
Polta laiteohjelmisto kflash_gui -työkalulla. Voit myös polttaa koulutetun mallin salamaan, kuten kuvakaappauksessa näkyy. Tai kopioi se SD -kortille (kopioi siinä tapauksessa.kmodel SD -kortin juureen ja aseta SD -kortti Sipeed Maix Bitiin)
Avaa OpenMV IDE ja paina yhdistämispainiketta. Avaa santa_uno.py -skripti example_scripts -kansiosta ja paina Käynnistä -painiketta. Sinun pitäisi nähdä livestriimi kamerasta, ja jos avaat sarjapäätteen, saat parhaan kuvan tunnistustuloksen luottamuspisteellä!
Jos haluat käyttää Arduino IDE: tä, sinun on ensin noudatettava Sipeed -levyjen lisäämistä Arduino IDE: hen, joka on kuvattu tässä. Arduino IDE -versiosi on oltava vähintään 1.8.12. Kun olet lisännyt levyt, avaa mobilenet_v1_transfer_learning.ino -luonnos ja lataa se Sipeed Maix Bitiin. Muuta SD -kortilla olevan mallin nimeksi "malli" (tai kopioi tämä nimi). Voit muuttaa nimien nimiä osoitteessa names.cpp. Se näyttää kameran suoran lähetyksen Sipeed Maix -näytössä yhdessä parhaan kuvan tunnistustuloksen kanssa.
Vaihe 6: Johtopäätökset
Tässä on lisää materiaalia luettavaksi CNN -aiheista ja siirto -oppimisesta:
Siirron oppiminen Mobilenetin ja Kerasin avulla Tämä opetusohjelma käyttää erinomaista selitystä siirto -oppimiselle, ja siinä käytetään muokattua versiota kyseisen artikkelin koodista.
Kissat ja koirat sekä kehittyneet hermoverkot Selittää CNN: ien takana olevat perusteet ja visualisoi joitain suodattimia. Kissojen kanssa!
Harjoittele, muunna, suorita MobileNet Sipeed MaixPy- ja MaixDuino -sovelluksissa! Sipeed -tiimin opetusohjelma Mobilenet 1000 -luokkien kouluttamisesta tyhjästä (ei siirto -oppimista). Voit ladata esikoulutetun mallin ja kokeilla sitä!
Toivottavasti voit käyttää nykyistä tietämystäsi rakentaaksesi mahtavia projekteja konenäön avulla! Voit ostaa Sipeed -levyjä täältä, ne ovat halvimpia vaihtoehtoja ML: lle sulautetuissa järjestelmissä.
Suositeltava:
Tekoäly ja kuvan tunnistus HuskyLens -objektiivilla: 6 vaihetta (kuvilla)
Tekoäly ja kuvan tunnistus HuskyLensin avulla: Hei, mitä kuuluu, kaverit! Tässä projektissa aiomme tarkastella DFRobotin HuskyLens -objektiivia. Se on tekoälykäyttöinen kameramoduuli, joka pystyy suorittamaan useita tekoälyoperaatioita, kuten kasvojentunnistusta
Kasvojen tunnistus ja tunnistus - Arduino -kasvotunnus OpenCV Pythonin ja Arduinon avulla .: 6 vaihetta
Kasvojen tunnistus ja tunnistus | Arduino -kasvotunnus OpenCV Pythonin ja Arduinon avulla .: Kasvontunnistus AKA -kasvotunnus on yksi tärkeimmistä ominaisuuksista matkapuhelimissa nykyään. Joten minulla oli kysymys " voinko saada kasvotunnuksen Arduino -projektilleni " ja vastaus on kyllä … Matkani alkoi seuraavasti: Vaihe 1: Pääsy
2D -kuvan muuttaminen 3D -malliksi: 7 vaihetta (kuvilla)
Muuta 2D -kuva 3D -malliksi: Oletko koskaan halunnut ottaa 2D -kuvan ja muuttaa sen 3D -malliksi? Tämä ohje antaa sinulle ohjeet ilmaisen komentosarjan ja Fusion 360: n avulla.Mitä tarvitset Fusion 360 (Mac / Windows) Mitä teetLataa ja asenna Fusion 360. Rekisteröidy ilmaiseksi
Kuvan tunnistus TensorFlow -toiminnolla Raspberry Pi: 6 vaihetta
Kuvan tunnistus TensorFlow-toiminnolla Raspberry Pi -laitteella: Google TensorFlow on avoimen lähdekoodin ohjelmistokirjasto numeeriseen laskentaan käyttämällä datavirtakaavioita. Google käyttää sitä eri koneoppimisen ja syvän oppimisen teknologioiden aloilla. TensorFlow on alunperin kehittänyt Google Brai
Kuvan helpotus vedessä: 4 vaihetta (kuvilla)
Kuvan helpotus vedessä: Oletko huomannut, kuinka vesi tummenee syvemmälle, mutta matala vesi on läpinäkyvämpää? Olen pyrkinyt hallitsemaan tätä ilmiötä tehdäkseni kuvia. Tämä tehdään luomalla helpotus kuvan voimakkuuden perusteella ja työstämällä tämä