Satura rādītājs:
- 1. solis: CNN un pārneses mācīšanās: dažas teorijas
- 2. solis: Sagatavojiet savu vidi
- 3. darbība: instalējiet AXeleRate un palaidiet testus
- 4. solis: pārmāciet modeli, pārveidojiet Keras modeli par.kmodel
- 5. darbība: palaidiet modeli ar Sipeed Maix bitu
- 6. darbība. Secinājumi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:52
Es jau uzrakstīju vienu rakstu par to, kā palaist OpenMV demonstrācijas vietnē Sipeed Maix Bit, kā arī ar šo dēli izveidoju objekta noteikšanas demonstrācijas video. Viens no daudzajiem cilvēkiem uzdotajiem jautājumiem ir - kā es varu atpazīt objektu, kuram neironu tīkls nav apmācīts? Citiem vārdiem sakot, kā izveidot savu attēlu klasifikatoru un palaist to ar aparatūras paātrinājumu.
Šis ir saprotams jautājums, jo jūsu projektam, iespējams, nav jāatpazīst daži vispārīgi objekti, piemēram, kaķi, suņi un lidmašīnas. Jūs vēlaties atpazīt kaut ko īpašu, piemēram, suņa šķirni šīm automātiskajām mājdzīvnieku durvīm vai augu sugu šķirošanai, vai jebkuru citu aizraujošu lietojumprogrammu, par kuru varat padomāt!
ES tevi sapratu! Šajā rakstā es jums iemācīšu, kā izveidot savu pielāgoto attēlu klasifikatoru ar pārneses mācīšanos Kerasā, pārvērst apmācīto modeli.kmodel formātā un palaist to uz Sipeed board (var būt jebkura tāfele, Bit/Dock vai Go), izmantojot Micropython vai Arduino IDE. Un tikai jūsu iztēle ierobežos uzdevumus, ko varat veikt ar šīm zināšanām.
2020. GADA MAIJA ATJAUNINĀŠANA: Redzot, kā mans raksts un video par attēlu atpazīšanu ar K210 dēļiem joprojām ir ļoti populāri un starp labākajiem rezultātiem pakalpojumā YouTube un Google, es nolēmu atjaunināt rakstu, iekļaujot tajā informāciju par aXeleRate, Keras balstītu AI sistēmu. Edge I attīstās.
Būtībā aXeleRate pamatā ir skriptu kolekcija, ko izmantoju attēlu atpazīšanas/objektu noteikšanas modeļu apmācībai - apvienota vienotā ietvarā un optimizēta darbplūsmai pakalpojumā Google Colab. Tas ir ērtāk lietojams un aktuālāks.
Raksta vecajai versijai to joprojām varat redzēt vietnē steemit.com.
1. solis: CNN un pārneses mācīšanās: dažas teorijas
Konvolucionālie neironu tīkli vai CNN ir dziļu neironu tīklu klase, ko visbiežāk izmanto vizuālo attēlu analīzei. Internetā ir daudz literatūras par šo tēmu, un es sniegšu dažas saites raksta pēdējā daļā. Īsāk sakot, jūs varat iedomāties CNN kā filtru sēriju, kas tiek pielietota attēlam, katrs filtrs meklē konkrētu attēla iezīmi - apakšējos konvolūcijas slāņos iezīmes parasti ir līnijas un vienkāršas formas, bet augstākajos slāņos - funkcijas var būt konkrētāks, piem ķermeņa daļas, īpašas faktūras, dzīvnieku vai augu daļas utt. Noteiktu pazīmju kopuma klātbūtne var dot mums priekšstatu par to, kas varētu būt attēlā redzamais objekts. Ūsas, divas acis un melns deguns? Jābūt kaķim! Zaļas lapas, koka stumbrs? Izskatās pēc koka!
Es ceru, ka jums tagad ir ideja par CNN darbības principu. Parasti dziļam neironu tīklam ir vajadzīgi tūkstošiem attēlu un stundu apmācības laiks (atkarīgs no aparatūras, ko izmantojat apmācībai), lai "izstrādātu" filtrus, kas ir noderīgi vēlamo objektu veidu atpazīšanai. Bet ir saīsne.
Modelis, kas apmācīts atpazīt daudz dažādu kopīgu objektu (kaķi, suņi, sadzīves tehnika, transports utt.), Jau ir daudz šo noderīgo filtru "izstrādāts", tāpēc mums tas nav vajadzīgs, lai iemācītos atpazīt pamata formas un detaļas atkal no objektiem. Mēs varam vienkārši pārmācīt dažus pēdējos tīkla slāņus, lai atpazītu noteiktas objektu klases, kas mums ir svarīgas. To sauc par “pārneses mācīšanos”. Jums ir nepieciešams daudz mazāk apmācības datu un jāaprēķina laiks ar pārneses mācīšanos, jo jūs trenējat tikai pēdējos tīkla slāņus, kas sastāv no dažiem simtiem neironu.
Izklausās lieliski, vai ne? Apskatīsim, kā to īstenot.
2. solis: Sagatavojiet savu vidi
Ir divi veidi, kā izmantot aXeleRate: darbojas lokāli Ubuntu mašīnā vai pakalpojumā Google Colab. Lai darbotos pakalpojumā Google Colab, apskatiet šo piemēru:
Attēlu klasifikācija Colab Notebook
Tagad ir daudz vieglāk apmācīt savu modeli lokāli un eksportēt to, lai to izmantotu ar aparatūras paātrinājumu.
Mana darba vide ir Ubuntu 16.04, 64bit. Jūs varat izmantot virtuālo mašīnu, lai palaistu Ubuntu attēlu, jo mēs neizmantosim GPU apmācībai. Ar dažām izmaiņām apmācības skriptu var palaist arī operētājsistēmā Windows, taču modeļa pārveidošanai jums būs jāizmanto Linux sistēma. Tātad, vēlamā vide šīs apmācības izpildei ir Ubuntu 16.04, kas darbojas sākotnēji vai virtuālajā mašīnā.
Sāksim ar Miniconda instalēšanu, kas ir Python vides pārvaldnieks. Mēs izveidosim izolētu vidi, tāpēc nejauši neko nemainīsim jūsu sistēmas Python vidē.
Lejupielādējiet instalētāju šeit
Kad instalēšana ir pabeigta, izveidojiet jaunu vidi:
conda izveidot -n ml python = 3.7
Aktivizēsim jauno vidi
conda aktivizēt ml
Pirms jūsu bash apvalka parādīsies prefikss ar vides nosaukumu, norādot, ka pašlaik strādājat šajā vidē.
3. darbība: instalējiet AXeleRate un palaidiet testus
Instalējiet aXeleRate savā lokālajā datorā ar
pip instalēt git+https://github.com/AIWintermuteAI/aXeleRate
Lai lejupielādētu piemērus, palaidiet:
git klons
Ātros testus varat veikt, izmantojot tests_training.py mapē aXeleRate. Tā veiks apmācību un secinājumus katram modeļa tipam, saglabās un pārveidos apmācītos modeļus. Tā kā tā ir tikai apmācība 5 laikmetiem un datu kopa ir ļoti maza, jūs nevarēsit iegūt noderīgus modeļus, taču šis skripts ir paredzēts tikai, lai pārbaudītu, vai nav kļūdu.
4. solis: pārmāciet modeli, pārveidojiet Keras modeli par.kmodel
Šajā rotaļlietu piemērā mēs apmācīsim modeli atpazīt Ziemassvētku vecīti un Arduino Uno. Acīmredzot jūs varat izvēlēties citas klases. Lejupielādējiet datu kopu no šejienes. Konfigurācijas mapē izveidojiet faila classifier.json kopiju, pēc tam attiecīgi mainiet to, līdzīgi kā konfigurācijas failu ekrānuzņēmumā - pārliecinieties, vai ceļš uz apmācības un validācijas mapēm ir pareizs!
Palaidiet šādu komandu no mapes aXeleRate:
python axelerate/train.py - c configs/santa_uno.json
Sāksies apmācība. Ja validācijas precizitāte (mūsu validācijas rādītājs) 20 laikmetos neuzlabojas, apmācība tiks priekšlaicīgi pārtraukta. Katru reizi, kad uzlabojas validācijas precizitāte, modelis tiek saglabāts projekta mapē. Kad apmācība ir beigusies, aXeleRate automātiski pārveido labāko modeli noteiktos formātos - no šī brīža jūs varat izvēlēties "tflite", "k210" vai "edgetpu".
5. darbība: palaidiet modeli ar Sipeed Maix bitu
Ir divi veidi, kā palaist Sipeed Maix aparatūrā esošo modeli: micropython programmaparatūra un Arduino IDE. Mikropitona aparatūru ir vieglāk izmantot, taču tā aizņem ievērojamu daļu pieejamās atmiņas, tāpēc modelim paliek mazāk vietas. Arduino IDE būtībā ir C kods, kas ir daudz efektīvāks un ar mazāku atmiņas nospiedumu. Mans modelis ir tikai 1,9 MB, tāpēc abas iespējas tam ir piemērotas. Izmantojot Micropython, varat izmantot modeļus, kuru lielums ir līdz 2,9 Mb, lai iegūtu plašāku informāciju, jums jāapsver iespēja izmantot Arduino IDE.
Lejupielādējiet OpenMV IDE no šejienes un minimālo mikropitona programmaparatūru no šejienes.
Sadedziniet programmaparatūru, izmantojot rīku kflash_gui. Varat arī izvēlēties ierakstīt apmācīto modeli, lai tas arī mirgo, kā parādīts ekrānuzņēmumā. Vai arī nokopējiet to uz SD karti (tādā gadījumā nokopējiet.kmodel uz SD kartes sakni un ievietojiet SD karti Sipeed Maix Bit)
Atveriet OpenMV IDE un nospiediet savienojuma pogu. No mapes example_scripts atveriet skriptu santa_uno.py un nospiediet pogu Sākt. Jums vajadzētu redzēt tiešraides straumi no kameras, un, atverot seriālo termināli, jūs iegūsit labāko attēla atpazīšanas rezultātu ar ticamības punktu!
Lai izmantotu ar Arduino IDE, vispirms ir jāievēro procedūra Sipeed dēļu pievienošanai Arduino IDE, kas ir dokumentēta šeit. Jūsu Arduino IDE versijai jābūt vismaz 1.8.12. Pēc dēļu pievienošanas atveriet skici mobilenet_v1_transfer_learning.ino un augšupielādējiet to vietnē Sipeed Maix Bit. Mainiet modeļa nosaukumu SD kartē uz “modelis” (vai izveidojiet kopiju ar šo nosaukumu). Jūs varat mainīt etiķešu nosaukumus nosaukumos.cpp. Tas parādīs tiešo kameras straumi ekrānā Sipeed Maix kopā ar augšējo attēla atpazīšanas rezultātu.
6. darbība. Secinājumi
Šeit ir vēl daži materiāli, ko lasīt par CNN un pārneses mācīšanās tēmu:
Mācību pārnešana, izmantojot mobilo tīklu un Keras Lielisks pārsūtīšanas mācīšanās skaidrojums, šajā apmācībā tiek izmantota modificēta šī raksta koda versija.
Kaķi un suņi un konvolucionālie neironu tīkli Izskaidro CNN pamatus un vizualizē dažus filtrus. Ar kaķiem!
Trenējieties, konvertējiet, palaidiet MobileNet pakalpojumos Sipeed MaixPy un MaixDuino! Sipeed komandas apmācība par to, kā apmācīt Mobilenet 1000 klases no nulles (bez pārejas mācībām). Jūs varat lejupielādēt viņu iepriekš apmācīto modeli un izmēģināt!
Ceru, ka varat izmantot savas zināšanas, lai izveidotu lieliskus projektus ar mašīnas redzējumu! Jūs varat iegādāties Sipeed dēļus šeit, tie ir vieni no lētākajiem ML pieejamajiem variantiem iegultās sistēmās.
Ieteicams:
Objektu noteikšana ar Sipeed MaiX dēļiem (Kendryte K210): 6 soļi
Objektu noteikšana ar Sipeed MaiX dēļiem (Kendryte K210): Turpinot manu iepriekšējo rakstu par attēlu atpazīšanu ar Sipeed MaiX Boards, es nolēmu uzrakstīt vēl vienu pamācību, koncentrējoties uz objektu noteikšanu. Nesen parādījās interesanta aparatūra ar Kendryte K210 mikroshēmu, ieskaitot S
Mākslīgais intelekts un attēlu atpazīšana, izmantojot HuskyLens: 6 soļi (ar attēliem)
Mākslīgais intelekts un attēlu atpazīšana, izmantojot HuskyLens: Hei, kas notiek, puiši! Akarsh šeit no CETech. Šajā projektā mēs apskatīsim HuskyLens no DFRobot. Tas ir ar AI darbināms kameras modulis, kas spēj veikt vairākas mākslīgā intelekta darbības, piemēram, sejas atpazīšanu
Kā iestatīt Arduino IDE darbam ar Tinusaur dēļiem: 3 soļi
Kā iestatīt Arduino IDE darbam ar Tinusaur plāksnēm. Šis ir īss ceļvedis, kā iestatīt Arduino IDE darbam ar Tinusaur plāksnēm. Tas būtībā ir panākt, lai tas darbotos ar Atmel ATtiny85/45/25 mikrokontrolleri . Vienīgā atšķirība ir tā, ka tā dēļu sarakstā parādīsies kā Tinusau
Attēlu atpazīšana ar TensorFlow uz Raspberry Pi: 6 soļi
Attēlu atpazīšana, izmantojot TensorFlow Raspberry Pi: Google TensorFlow ir atvērtā pirmkoda programmatūras bibliotēka ciparu skaitļošanai, izmantojot datu plūsmas diagrammas. Google to izmanto dažādās mašīnmācīšanās un dziļās mācīšanās tehnoloģiju jomās. TensorFlow sākotnēji izstrādāja Google Brai
Ievads balss atpazīšanā, izmantojot Elechouse V3 un Arduino: 4 soļi (ar attēliem)
Ievads balss atpazīšanā, izmantojot Elechouse V3 un Arduino. Mēs joprojām atceramies lielo satraukumu, kas mums radās, runājot ar pirmo Siri iespējoto iphone. Kopš tā laika balss komandu ierīces ir izaugušas līdz ļoti augstam līmenim