Orodha ya maudhui:

Utambuzi wa Picha na Bodi za K210 na Arduino IDE / Micropython: Hatua 6 (na Picha)
Utambuzi wa Picha na Bodi za K210 na Arduino IDE / Micropython: Hatua 6 (na Picha)

Video: Utambuzi wa Picha na Bodi za K210 na Arduino IDE / Micropython: Hatua 6 (na Picha)

Video: Utambuzi wa Picha na Bodi za K210 na Arduino IDE / Micropython: Hatua 6 (na Picha)
Video: Utambuzi wa Picha au Video Zilizounganishwa 2024, Novemba
Anonim
Image
Image

Tayari niliandika nakala moja juu ya jinsi ya kuendesha densi za OpenMV kwenye Sipeed Maix Bit na pia nilifanya video ya onyesho la kugundua kitu na bodi hii. Moja ya maswali mengi ambayo watu wameuliza ni - ninawezaje kutambua kitu ambacho mtandao wa neva haujafundishwa? Kwa maneno mengine jinsi ya kutengeneza kiainishaji chako cha picha na kuiendesha na kuongeza kasi ya vifaa.

Hili ni swali linaloeleweka, kwani kwa mradi wako labda hauitaji kutambua vitu vya asili, kama paka na mbwa na ndege. Unataka kutambua kitu maalum, kwa mfano, kuzaliana kwa mbwa kwa mlango huo wa wanyama wa moja kwa moja, au spishi ya mmea wa kuchagua, au matumizi mengine yoyote ya kufikiria ambayo unaweza kufikiria!

Nimekupata! Katika kifungu hiki nitakufundisha jinsi ya kuunda kitambulisho chako cha picha ya kawaida na ujifunzaji wa kuhamisha huko Keras, ubadilishe mfano uliofunzwa kuwa muundo wa.kmodel na uitumie kwenye bodi iliyotengwa (inaweza kuwa bodi yoyote, Bit / Dock au Go) ukitumia Micropython au Arduino IDE. Na mawazo yako tu ndiyo yatakuwa kikomo cha majukumu unayoweza kufanya na maarifa haya.

UPDATE MAY 2020: Kuona jinsi nakala yangu na video kwenye Utambuzi wa Picha na bodi za K210 bado ni maarufu sana na kati ya matokeo bora kwenye YouTube na Google, niliamua kusasisha nakala hiyo ili ijumuishe habari kuhusu aXeleRate, mfumo wa Keras wa AI kwenye Makali mimi kuendeleza.

Ni rahisi kutumia na zaidi hadi sasa.

Kwa toleo la zamani la nakala hiyo, bado unaweza kuiona kwenye steemit.com.

Hatua ya 1: CNN na Kuhamisha Kujifunza: Nadharia zingine

CNN na Kuhamisha Kujifunza: Nadharia zingine
CNN na Kuhamisha Kujifunza: Nadharia zingine

Mitandao ya Neural ya kubadilika au CNN ni darasa la mitandao ya kina ya neva, ambayo hutumika sana kuchambua picha za kuona. Kuna fasihi nyingi kwenye wavuti kwenye mada na nitapeana viungo katika sehemu ya mwisho ya nakala hiyo. Kwa kifupi, unaweza kufikiria CNN kama safu ya vichungi, vilivyowekwa kwenye picha, kila kichungi kinatafuta huduma maalum kwenye picha - kwenye tabaka za chini za kusuluhisha sifa kawaida huwa laini na maumbo rahisi na kwenye tabaka za juu sifa inaweza kuwa maalum zaidi, kwa mfano sehemu za mwili, maumbile maalum, sehemu za wanyama au mimea, nk Uwepo wa seti fulani ya huduma inaweza kutupa kidokezo kwa kile kitu kwenye picha kinaweza kuwa. Ndevu, macho mawili na pua nyeusi? Lazima uwe paka! Majani ya kijani kibichi, mti wa mti? Inaonekana kama mti!

Natumai utapata wazo kuhusu kanuni ya kufanya kazi ya CNN sasa. Kwa kawaida mtandao wa kina wa neva unahitaji maelfu ya picha na masaa ya muda wa mafunzo (inategemea vifaa unayotumia kwa mafunzo) ili "kukuza" vichungi ambavyo ni muhimu kwa kutambua aina ya vitu unavyotaka. Lakini kuna njia ya mkato.

Mtindo aliyefundishwa kutambua vitu anuwai anuwai (paka, mbwa, vifaa vya nyumbani, usafirishaji, nk) tayari ana vichungi vingi muhimu "vilivyotengenezwa", kwa hivyo hatuitaji kujifunza kujifunza maumbo na sehemu za msingi ya vitu tena. Tunaweza kufundisha tu safu chache za mwisho za mtandao kutambua darasa maalum la vitu, ambazo ni muhimu kwetu. Hii inaitwa "kuhamisha ujifunzaji". Unahitaji data ndogo ya mafunzo na hesabu wakati na ujifunzaji wa uhamishaji, kwani unasomesha tu tabaka chache za mwisho za mtandao, zilizojumuisha labda neurons mia chache.

Sauti ya kushangaza, sawa? Wacha tuone jinsi ya kutekeleza.

Hatua ya 2: Andaa Mazingira Yako

Andaa Mazingira Yako
Andaa Mazingira Yako

Njia mbili za kutumia aXeleRate: kukimbia ndani ya mashine ya Ubuntu au Google Colab. Kwa kukimbia katika Google Colab, angalia mfano huu:

Uainishaji wa picha Daftari la Colab

Kufundisha mtindo wako ndani na kuiuza ili itumike na kuongeza kasi ya vifaa pia ni rahisi sana sasa.

Mazingira yangu ya kazi ni Ubuntu 16.04, 64bit. Unaweza kutumia mashine ya Virtual kuendesha picha ya Ubuntu kwani hatutatumia GPU kwa mafunzo. Kwa marekebisho kadhaa unaweza pia kuendesha hati ya mafunzo kwenye Windows, lakini kwa ubadilishaji wa mfano utahitaji kutumia mfumo wa Linux. Kwa hivyo, mazingira bora kwako kutekeleza mafunzo haya ni Ubuntu 16.04, inayoendesha kiasili au kwenye mashine halisi.

Wacha tuanze kwa kusanikisha Miniconda, ambayo ni msimamizi wa mazingira wa Python. Tutaunda mazingira yaliyotengwa, kwa hivyo hatutabadilisha chochote kwa bahati mbaya katika mazingira yako ya chatu ya mfumo.

Pakua kisakinishi hapa

Baada ya usakinishaji kukamilika, tengeneza mazingira mapya:

kuunda conda -n ml chatu = 3.7

Wacha tuamilishe mazingira mapya

conda kuamsha ml

Kiambishi awali kabla ya ganda lako la bash litaonekana na jina la mazingira, ikionyesha kwamba unafanya kazi sasa katika mazingira hayo.

Hatua ya 3: Sakinisha AXeleRate na Endesha Uchunguzi

Sakinisha AXeleRate na Endesha Uchunguzi
Sakinisha AXeleRate na Endesha Uchunguzi

Sakinisha aXeleRate kwenye mashine yako ya ndani na

bomba funga git +

Ili kupakua mifano endesha:

clone ya git

Unaweza kukimbia majaribio ya haraka na tests_training.py kwenye folda yaXeleRate. Itatumia mafunzo na maanani kwa kila aina ya mfano, kuokoa na kubadilisha mifano iliyofunzwa. Kwa kuwa ni mafunzo tu kwa nyakati 5 na hifadhidata ni ndogo sana, hautaweza kupata modeli muhimu, lakini hati hii inakusudiwa tu kuangalia kutokuwepo kwa makosa.

Hatua ya 4: Treni tena Mfano, Badilisha Mfano wa Kera kuwa.kmodel

Fundisha tena Mfano, Badilisha Mfano wa Kera kuwa.kmodel
Fundisha tena Mfano, Badilisha Mfano wa Kera kuwa.kmodel

Kwa mfano huu wa kuchezea tutakuwa tukifundisha mfano wa kumtambua Santa Claus na Arduino Uno. Ni wazi unaweza kuchagua madarasa mengine. Pakua daftari kutoka hapa. Unda nakala ya faili ya classifier.json kwenye folda ya usanidi, kisha ibadilishe ipasavyo, sawa na faili ya usanidi kwenye skrini - hakikisha njia ya mafunzo na uthibitishaji wa folda ni sahihi!

Tumia amri ifuatayo kutoka kwa folda yaXeleRate:

chatu axelerate / train.py - c usanidi / santa_uno.json

Mafunzo yataanza. Ikiwa usahihi wa uthibitishaji (kipimo chetu cha uthibitishaji) haiboresha kwa nyakati 20, mafunzo yatasimama mapema. Kila wakati usahihi wa uthibitishaji unaboresha, mfano huhifadhiwa kwenye folda ya mradi. Baada ya mafunzo kumalizika, aXeleRate hubadilisha kiatomati bora zaidi kuwa fomati maalum - unaweza kuchagua, "tflite", "k210" au "edgetpu" kuanzia sasa.

Hatua ya 5: Run Model kwenye Siped Maix Bit

Endesha Mfano kwenye Biti ya Maix iliyofutwa
Endesha Mfano kwenye Biti ya Maix iliyofutwa
Endesha Mfano kwenye Biti ya Maix iliyofutwa
Endesha Mfano kwenye Biti ya Maix iliyofutwa
Endesha Mfano kwenye Biti ya Maix iliyofutwa
Endesha Mfano kwenye Biti ya Maix iliyofutwa

Kuna njia mbili za kuendesha mfano uliyonayo sasa kwenye vifaa vya Sipeed Maix: micropython firmware na Arduino IDE. Vifaa vya Micropython ni rahisi kutumia, lakini inachukua sehemu kubwa ya kumbukumbu inayopatikana, kwa hivyo kuna nafasi ndogo iliyoachwa kwa mfano. Arduino IDE kimsingi ni nambari C, ambayo ni bora zaidi na ina alama ndogo ya kumbukumbu. Mfano wangu ni 1.9Mb tu, kwa hivyo chaguzi zote mbili zinaifanyia kazi. Unaweza kutumia mifano kubwa kama 2.9 Mb na Micropython, kwa chochote kikubwa unahitaji kuzingatia kutumia Arduino IDE.

Pakua OpenMV IDE kutoka hapa na firmware ndogo ya micropython kutoka hapa.

Choma firmware na zana ya kflash_gui. Unaweza pia kuchagua kuchoma mtindo uliofunzwa ili kuangaza pia, kama inavyoonyeshwa kwenye skrini. Au nakili kwa kadi ya SD (kwa hali hiyo nakili.kmodel kwenye mzizi wa kadi ya SD na ingiza kadi ya SD kwenye Bit ya Maix iliyotiwa)

Fungua OpenMV IDE na bonyeza kitufe cha unganisho. Fungua santa_uno.py hati kutoka folda ya mfano_script na bonyeza kitufe cha Anza. Unapaswa kuona mkondo wa moja kwa moja kutoka kwa kamera na ikiwa utafungua Serial Terminal utapata matokeo ya juu ya utambuzi wa picha na alama ya kujiamini!

Kwa kutumia na Arduino IDE, kwanza unahitaji kufuata utaratibu wa kuongeza bodi zilizopigwa kwa Arduino IDE, ambayo imeandikwa hapa. Toleo lako la Arduino IDE linahitaji kuwa angalau 1.8.12. Baada ya kuongeza bodi, fungua mchoro wa mobilenet_v1_transfer_learning.ino na uipakie kwenye Sipeed Maix Bit. Badilisha jina la mfano kwenye kadi ya SD kuwa "mfano" (au fanya nakala na jina hili). Unaweza kubadilisha majina ya lebo kwa names.cpp. Itaonyesha mkondo wa kamera ya moja kwa moja kwenye skrini ya Maix iliyofutwa pamoja na matokeo ya juu ya utambuzi wa picha.

Hatua ya 6: Hitimisho

Hapa kuna vifaa vingine vya kusoma kwenye mada ya CNN na kuhamisha ujifunzaji:

Hamisha Kujifunza kwa kutumia Mobilenet na Keras Ufafanuzi mzuri wa Uhamisho wa Kujifunza, mafunzo haya hutumia toleo lililobadilishwa la nambari kutoka kwa nakala hiyo.

Paka na mbwa na mitandao ya neva ya kusuluhisha Inaelezea misingi nyuma ya CNN na kuibua vichungi vingine. Na paka!

Treni, Badilisha, Run RunNet kwenye MaixPy iliyofutwa na MaixDuino! Mafunzo kutoka kwa timu iliyofutwa juu ya jinsi ya kufundisha madarasa ya Mobilenet 1000 kutoka mwanzoni (hakuna ujifunzaji wa uhamisho). Unaweza kupakua mfano wao wa mafunzo mapema na ujaribu!

Natumahi unaweza kutumia maarifa unayo sasa kujenga miradi ya kushangaza na maono ya mashine! Unaweza kununua bodi zilizopigwa hapa, ni kati ya chaguzi za bei rahisi zinazopatikana kwa ML kwenye mifumo iliyoingia.

Ilipendekeza: