Satura rādītājs:

Attēlu atpazīšana ar K210 dēļiem un Arduino IDE/Micropython: 6 soļi (ar attēliem)
Attēlu atpazīšana ar K210 dēļiem un Arduino IDE/Micropython: 6 soļi (ar attēliem)
Anonim
Image
Image

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

CNN un pārneses mācīšanās: dažas teorijas
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

Sagatavojiet savu vidi
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 un palaidiet testus
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

Pārmācīt modeli, pārvērst Keras modeli par.kmodel
Pārmācīt modeli, pārvērst 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

Palaidiet modeli ar Sipeed Maix bitu
Palaidiet modeli ar Sipeed Maix bitu
Palaidiet modeli ar Sipeed Maix bitu
Palaidiet modeli ar Sipeed Maix bitu
Palaidiet modeli ar Sipeed Maix bitu
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: