Sadržaj:
- Korak 1: CNN i transferno učenje: neka teorija
- Korak 2: Pripremite svoje okruženje
- Korak 3: Instalirajte AXeleRate i pokrenite testove
- Korak 4: Ponovno obučite model, Pretvorite Keras model u.kmodel
- Korak 5: Pokrenite model na Sipeed Maix bitu
- Korak 6: Zaključci
Video: Prepoznavanje slike s K210 pločama i Arduino IDE/mikropythonom: 6 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:05
Već sam napisao jedan članak o tome kako pokrenuti OpenMV demonstracije na Sipeed Maix Bit -u, a također sam napravio i video demonstraciju otkrivanja objekata na ovoj ploči. Jedno od mnogih pitanja koja su ljudi postavili je - kako mogu prepoznati objekt za koji neuronska mreža nije obučena? Drugim riječima, kako napraviti vlastiti klasifikator slika i pokrenuti ga hardverskim ubrzanjem.
Ovo je razumljivo pitanje, jer za vaš projekt vjerojatno ne morate prepoznati neke generičke objekte, poput mačaka i pasa te aviona. Želite prepoznati nešto posebno, na primjer, pasminu psa za ta automatska vrata za kućne ljubimce, ili biljnu vrstu za sortiranje, ili bilo koju drugu izlaznu aplikaciju o kojoj možete razmišljati!
Imam te! U ovom članku ću vas naučiti kako stvoriti vlastiti prilagođeni klasifikator slika s učenjem prijenosa u Kerasu, pretvoriti obučeni model u.kmodel format i pokrenuti ga na Sipeed ploči (može biti bilo koja ploča, Bit/Dock ili Go) pomoću Micropythona ili Arduino IDE. I samo će vaša mašta biti granica zadataka koje možete obaviti s ovim znanjem.
AŽURIRAJTE MAJ 2020: Vidjevši kako su moj članak i video o Prepoznavanju slika s pločama K210 i dalje vrlo popularni i među vrhunskim rezultatima na YouTubeu i Googleu, odlučio sam ažurirati članak tako da uključi informacije o aXeleRate, Keras-ovom okviru za AI na Ivice razvijam.
aXeleRate se, u osnovi, temelji na zbirci skripti koje sam koristio za obuku modela prepoznavanja slika/otkrivanja objekata - kombiniranih u jedinstveni okvir i optimiziranih za tijek rada na Google Colabu. Pogodniji je za upotrebu i ažuriraniji.
Staru verziju članka još uvijek možete vidjeti na steemit.com.
Korak 1: CNN i transferno učenje: neka teorija
Konvolucijske neuronske mreže ili CNN je klasa dubokih neuronskih mreža, koja se najčešće primjenjuje za analizu vizualnih slika. Na internetu postoji mnogo literature na tu temu, a ja ću dati neke veze u posljednjem dijelu članka. Ukratko, CNN možete zamisliti kao niz filtera, primijenjenih na sliku, pri čemu svaki filter traži određenu značajku na slici - na donjim slojevitim slojevima značajke su obično linije i jednostavni oblici, a na višim slojevima značajke mogu biti konkretniji, npr dijelovi tijela, određene teksture, dijelovi životinja ili biljaka itd. Prisustvo određenog skupa obilježja može nam dati trag o tome šta bi objekt na slici mogao biti. Brkovi, dva oka i crni nos? Mora da je mačka! Zeleno lišće, stablo? Izgleda kao drvo!
Nadam se da ste sada stekli ideju o principu rada CNN -a. Obično dubokoj neuronskoj mreži trebaju hiljade slika i sati vježbanja (ovisno o hardveru koji koristite za obuku) za "razvoj" filtera koji su korisni za prepoznavanje vrsta objekata koje želite. Ali postoji prečica.
Model obučen za prepoznavanje mnogo različitih uobičajenih predmeta (mačke, psi, kućanski aparati, prijevoz itd.) Već ima mnogo "razvijenih" korisnih filtera, pa nam to ne treba za učenje prepoznavanja osnovnih oblika i dijelova ponovo objekata. Možemo samo ponovo osposobiti posljednjih nekoliko slojeva mreže da prepoznaju određene klase objekata, koji su za nas važni. To se zove "transferno učenje". Potrebno vam je znatno manje podataka o obuci i računajte vrijeme s prijenosom učenja, jer vježbate samo posljednjih nekoliko slojeva mreže, sastavljenih možda od nekoliko stotina neurona.
Zvuči odlično, zar ne? Pogledajmo kako to primijeniti.
Korak 2: Pripremite svoje okruženje
Postoje dva načina korištenja aXeleRate: lokalno pokretanje na Ubuntu mašini ili u Google Colabu. Za pokretanje u Google Colabu pogledajte ovaj primjer:
Klasifikacija slike Colab Notebook
Lokalno osposobljavanje vašeg modela i izvoz za upotrebu s hardverskim ubrzanjem također je sada mnogo lakše.
Moje radno okruženje je Ubuntu 16.04, 64bit. Za pokretanje Ubuntu slike možete koristiti virtualnu mašinu jer nećemo koristiti GPU za obuku. Uz neke izmjene, možete pokrenuti i skriptu za obuku na Windowsima, ali za konverziju modela morat ćete koristiti Linux sistem. Dakle, poželjno okruženje za izvršavanje ovog vodiča je Ubuntu 16.04, koji radi izvorno ili na virtualnoj mašini.
Počnimo s instaliranjem Miniconde, menadžera okruženja za Python. Stvorit ćemo izolirano okruženje, tako da nećemo slučajno ništa promijeniti u vašem sistemskom Python okruženju.
Ovdje preuzmite instalacijski program
Nakon dovršetka instalacije stvorite novo okruženje:
conda create -n ml python = 3.7
Aktivirajmo novo okruženje
conda aktivira ml
Prefiks prije vaše bash ljuske pojavit će se s imenom okoline, što znači da sada radite u tom okruženju.
Korak 3: Instalirajte AXeleRate i pokrenite testove
Instalirajte aXeleRate na svoju lokalnu mašinu pomoću
pip install git+https://github.com/AIWintermuteAI/aXeleRate
Da biste preuzeli primjere, pokrenite:
git clone
Možete pokrenuti brze testove sa test_training.py u folderu aXeleRate. Pokretat će obuku i zaključivanje za svaki tip modela, spremati i pretvarati obučene modele. Budući da se radi samo o obuci za 5 epoha, a skup podataka je vrlo mali, nećete moći dobiti korisne modele, ali ova je skripta namijenjena samo za provjeru nedostataka grešaka.
Korak 4: Ponovno obučite model, Pretvorite Keras model u.kmodel
Za ovaj primjer igračke trenirat ćemo model za prepoznavanje Djeda Mraza i Arduino Uno. Očigledno je da možete izabrati druge klase. Preuzmite skup podataka odavde. Napravite kopiju datoteke klasifier.json u konfiguracijskoj mapi, a zatim je promijenite u skladu s konfiguracijskom datotekom na snimku zaslona - provjerite je li put do mapa za obuku i provjeru valjanosti ispravan!
Pokrenite sljedeću naredbu iz mape aXeleRate:
python axelerate/train.py - c configs/santa_uno.json
Obuka će početi. Ako se tačnost provjere valjanosti (naša metrika provjere valjanosti) ne poboljšava 20 epoha, obuka će se prerano prekinuti. Svaki put kada se tačnost validacije poboljša, model se sprema u fasciklu projekta. Nakon završetka obuke, aXeleRate automatski konvertuje najbolji model u određene formate - od sada možete izabrati "tflite", "k210" ili "edgetpu".
Korak 5: Pokrenite model na Sipeed Maix bitu
Postoje dva načina za pokretanje modela koji sada imate na Sipeed Maix hardveru: mikropython firmver i Arduino IDE. Micropython hardver je lakši za upotrebu, ali zauzima značajan dio dostupne memorije, pa je modelu ostalo manje prostora. Arduino IDE je u osnovi C kod, koji je mnogo efikasniji i ima manji memorijski prostor. Moj model ima samo 1,9 MB, pa mu obje opcije odgovaraju. S Micropythonom možete koristiti modele velike do 2,9 Mb, za sve veće morate razmisliti o korištenju Arduino IDE -a.
Preuzmite OpenMV IDE odavde, a minimalni firmver mikropitona odavde.
Narežite firmver pomoću alata kflash_gui. Takođe možete izabrati da snimite trenirani model da treperi, kao što je prikazano na snimku ekrana. Ili ga kopirajte na SD karticu (u tom slučaju kopirajte.kmodel u korijen SD kartice i umetnite SD karticu u Sipeed Maix Bit)
Otvorite OpenMV IDE i pritisnite dugme za povezivanje. Otvorite skriptu santa_uno.py iz mape example_scripts i pritisnite dugme Start. Trebali biste gledati prijenos uživo s kamere, a ako otvorite serijski terminal dobit ćete vrhunski rezultat prepoznavanja slike s ocjenom pouzdanosti!
Za korištenje s Arduino IDE -om, prvo morate slijediti postupak dodavanja Sipeed ploča Arduino IDE -u, koji je ovdje dokumentiran. Vaša Arduino IDE verzija mora biti najmanje 1.8.12. Nakon što ste dodali ploče, otvorite skicu mobilenet_v1_transfer_learning.ino i postavite je na Sipeed Maix Bit. Promijenite naziv modela na SD kartici u "model" (ili napravite kopiju s ovim imenom). Imena oznaka možete promijeniti u names.cpp. Prikazat će stream kamere uživo na ekranu Sipeed Maix zajedno s rezultatom prepoznavanja slike na vrhu.
Korak 6: Zaključci
Evo još nekoliko materijala za čitanje na temu CNN -a i transfernog učenja:
Prijenosno učenje pomoću Mobileneta i Kerasa Odlično objašnjenje Transfer učenja, ovaj vodič koristi modificiranu verziju koda iz tog članka.
Mačke i psi i konvolucijske neuronske mreže Objašnjava osnove iza CNN -a i vizualizira neke od filtera. Sa mačkama!
Vježbajte, pretvarajte se, pokrenite MobileNet na Sipeed MaixPy i MaixDuino! Vodič tima Sipeed o tome kako trenirati klase Mobilenet 1000 od nule (bez prijenosa). Možete preuzeti njihov unaprijed obučeni model i isprobati ga!
Nadam se da možete iskoristiti svoje znanje koje sada imate za izgradnju sjajnih projekata s mašinskim vidom! Ovdje možete kupiti Sipeed ploče, one su među najjeftinijim opcijama dostupnim za ML na ugrađenim sistemima.
Preporučuje se:
Otkrivanje objekata sa Sipeed MaiX pločama (Kendryte K210): 6 koraka
Otkrivanje objekata sa Sipeed MaiX pločama (Kendryte K210): Kao nastavak mog prethodnog članka o prepoznavanju slika sa Sipeed MaiX pločama, odlučio sam da napišem još jedan vodič, fokusirajući se na otkrivanje objekata. Nedavno se pojavio zanimljiv hardver sa Kendryte K210 čipom, uključujući S
Umjetna inteligencija i prepoznavanje slike pomoću HuskyLensa: 6 koraka (sa slikama)
Umjetna inteligencija i prepoznavanje slike pomoću HuskyLensa: Hej, šta ima, momci! Akarsh ovdje iz CETech -a. U ovom projektu ćemo pogledati HuskyLens iz DFRobota. To je modul kamere sa AI-om koji može izvesti nekoliko operacija umjetne inteligencije, poput prepoznavanja lica
Sistem za prepoznavanje i gašenje požara na bazi obrade slike: 3 koraka
Sistem za prepoznavanje i gašenje požara na bazi obrade slike: Pozdrav prijatelji, ovo je sistem za detekciju i gašenje požara zasnovan na obradi slike koristeći Arduino
Kako postaviti Arduino IDE za rad s pločama Tinusaur .: 3 koraka
Kako postaviti Arduino IDE za rad s pločama Tinusaur .: Ovo je kratki vodič kako postaviti Arduino IDE za rad s pločama Tinusaur. Ono što u osnovi radi je da radi s mikrokontrolerima Atmel ATtiny85/45/25 . Jedina razlika je u tome što će se na popisu ploča pojaviti kao Tinusau
Prepoznavanje lica+prepoznavanje: 8 koraka (sa slikama)
Prepoznavanje lica+prepoznavanje: Ovo je jednostavan primjer pokretanja otkrivanja i prepoznavanja lica pomoću OpenCV -a sa kamere. NAPOMENA: NAPRAVIO SAM OVAJ PROJEKT ZA TAKMIČENJE SENZORA I KORISTIO SAM KAMERU KAO SENZOR ZA PRAĆENJE I PRIZNAVANJE LICA. Dakle, naš ciljU ovoj sesiji, 1. Instalirajte Anacondu