Բովանդակություն:
- Քայլ 1. CNN և փոխանցում ուսուցում. Որոշ տեսություններ
- Քայլ 2: Պատրաստեք ձեր միջավայրը
- Քայլ 3: Տեղադրեք AXeleRate և գործարկեք թեստեր
- Քայլ 4. Վերապատրաստեք մոդելը, փոխակերպեք Keras մոդելը.kmodel- ի
- Քայլ 5. Գործարկեք մոդելը Sipeed Maix Bit- ի վրա
- Քայլ 6: Եզրակացություններ
Video: Պատկերի ճանաչում K210 տախտակներով և Arduino IDE/Micropython- ով ՝ 6 քայլ (նկարներով)
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:46
Ես արդեն գրել եմ մեկ հոդված, թե ինչպես վարել OpenMV ցուցադրական տվյալները Sipeed Maix Bit- ում և նաև պատրաստել եմ այս տախտակի միջոցով օբյեկտների հայտնաբերման ցուցադրական տեսանյութ: Մարդկանց տված բազմաթիվ հարցերից մեկն այն է. Այլ կերպ ասած, թե ինչպես կատարել ձեր սեփական պատկերի դասակարգիչը և այն գործարկել ապարատային արագացմամբ:
Սա հասկանալի հարց է, քանի որ ձեր նախագծի համար հավանաբար կարիք չկա ճանաչել որոշ ընդհանուր առարկաներ, ինչպիսիք են կատուներն ու շները և ինքնաթիռները: Wantանկանում եք ճանաչել ինչ -որ կոնկրետ բան, օրինակ ՝ շան ցեղատեսակը այդ ընտանի կենդանիների դռան համար, կամ տեսակավորման բույսերի տեսակները, կամ ցանկացած այլ ելքային ծրագիր, որի մասին կարող եք մտածել:
Ես քեզ հասկացա: Այս հոդվածում ես ձեզ կսովորեցնեմ, թե ինչպես ստեղծել ձեր սեփական պատկերների դասակարգիչը փոխանցման ուսուցման միջոցով Կերասում, վերապատրաստված մոդելը վերածել.kmodel ձևաչափի և այն գործարկել Sipeed տախտակի վրա (կարող է լինել ցանկացած տախտակ, Bit/Dock կամ Go) ՝ օգտագործելով Micropython կամ Arduino IDE: Եվ միայն ձեր երևակայությունը կլինի սահմանափակ առաջադրանքներ, որոնք կարող եք կատարել այս գիտելիքով:
ԹԱՐՄԱՆԵԼ ՄԱՅԻՍ 2020. Տեսնելով, թե ինչպես են իմ հոդվածն ու տեսանյութը Image Recognition- ի K210 տախտակներով դեռ շատ տարածված և YouTube- ի և Google- ի լավագույն արդյունքների շարքում, ես որոշեցի թարմացնել հոդվածը `ներառելով AXeleRate- ի, Keras- ի վրա հիմնված AI շրջանակի մասին տեղեկատվությունը Geարգանում եմ:
aXeleRate- ը, ըստ էության, հիմնված է այն սցենարների հավաքածուի վրա, որոնք ես օգտագործել եմ պատկերի ճանաչման/օբյեկտի հայտնաբերման մոդելների վերապատրաստման համար `համակցված մեկ շրջանակի մեջ և օպտիմիզացված Google Colab- ի աշխատանքային հոսքի համար: Ավելի հարմար է օգտագործել և ավելի արդիական:
Հոդվածի հին տարբերակի համար այն դեռ կարող եք տեսնել steemit.com կայքում:
Քայլ 1. CNN և փոխանցում ուսուցում. Որոշ տեսություններ
Կոնվոլյուցիոն նյարդային ցանցերը կամ CNN- ը խորը նյարդային ցանցերի դաս է, որն առավել հաճախ կիրառվում է տեսողական պատկերների վերլուծության համար: Ինտերնետում շատ գրականություն կա թեմայի վերաբերյալ, և ես որոշ հղումներ կտամ հոդվածի վերջին մասում: Մի խոսքով, կարելի է CNN- ը պատկերացնել որպես ֆիլտրերի շարք, որոնք կիրառվում են պատկերի վրա, և յուրաքանչյուր ֆիլտր փնտրում է պատկերի որոշակի հատկություն. կարող է լինել ավելի կոնկրետ, օրինակ մարմնի մասեր, հատուկ հյուսվածքներ, կենդանիների կամ բույսերի մասեր և այլն: Որոշ առանձնահատկությունների առկայությունը կարող է մեզ հուշել, թե ինչպիսին կարող է լինել պատկերում պատկերված առարկան: Բեղ, երկու աչք և սև քիթ: Պետք է կատու լինել: Կանաչ տերևներ, ծառի բա՞ն: Կարծես ծառ լինի!
Հուսով եմ, որ հիմա պատկերացում կազմեցիք CNN- ի աշխատանքի սկզբունքի մասին: Սովորաբար խորը նյարդային ցանցին անհրաժեշտ են հազարավոր պատկերներ և ուսուցման ժամեր (կախված սարքավորումներից, որոնք օգտագործում եք ուսուցման համար) `մշակելու համար անհրաժեշտ զտիչներ, որոնք օգտակար են ձեր ուզած օբյեկտների տեսակները ճանաչելու համար: Բայց կա դյուրանցում.
Մոդելը, որը սովորել է ճանաչել բազմաթիվ տարբեր ընդհանուր առարկաներ (կատուներ, շներ, կենցաղային տեխնիկա, տրանսպորտ և այլն) արդեն ունի այդ օգտակար զտիչներից շատերը «մշակված», ուստի դրա կարիքը չունենք ՝ հիմնական ձևերն ու մասերը ճանաչելու սովորելու համար: օբյեկտներից նորից: Մենք պարզապես կարող ենք վերապատրաստել ցանցի վերջին մի քանի շերտերը `ճանաչելու մեզ համար կարևոր օբյեկտների որոշակի դասեր: Սա կոչվում է «փոխանցման ուսուցում»: Ձեզ անհրաժեշտ է զգալիորեն ավելի քիչ ուսուցման տվյալներ և ժամանակը հաշվարկել փոխանցման ուսուցման միջոցով, քանի որ դուք մարզում եք միայն ցանցի վերջին մի քանի շերտերը ՝ կազմված գուցե մի քանի հարյուր նեյրոններից:
Հիանալի է հնչում, այնպես չէ՞: Տեսնենք, թե ինչպես այն իրականացնել:
Քայլ 2: Պատրաստեք ձեր միջավայրը
AXeleRate- ի օգտագործման երկու եղանակ կա. Գործարկել տեղական Ubuntu մեքենայի վրա կամ Google Colab- ում: Google Colab- ում աշխատելու համար դիտեք այս օրինակը.
Պատկերների դասակարգում Colab Notebook
Այժմ շատ ավելի հեշտ է ձեր մոդելի ուսուցումը տեղական տարածքում և այն արտահանելը, որը կօգտագործվի ապարատային արագացումով:
Իմ աշխատանքային միջավայրը Ubuntu 16.04, 64bit է: Դուք կարող եք օգտագործել Վիրտուալ մեքենա ՝ Ubuntu պատկերը գործարկելու համար, քանի որ մենք GPU չենք օգտագործելու ուսուցման համար: Որոշ փոփոխություններով դուք կարող եք գործարկել նաև ուսուցման սցենարը Windows- ում, սակայն մոդելի փոխակերպման համար անհրաժեշտ կլինի օգտագործել Linux համակարգ: Այսպիսով, այս ձեռնարկը կատարելու համար ձեզ համար նախընտրելի միջավայրը Ubuntu 16.04 -ն է, որն աշխատում է բնիկ կամ վիրտուալ մեքենայի վրա:
Սկսենք ՝ տեղադրելով Miniconda- ն, որը Python- ի միջավայրի կառավարիչն է: Մենք կստեղծենք մեկուսացված միջավայր, այնպես որ մենք պատահաբար ոչինչ չենք փոխի ձեր համակարգի Python միջավայրում:
Ներբեռնեք տեղադրողը այստեղ
Տեղադրման ավարտից հետո ստեղծեք նոր միջավայր.
conda create -n մլ պիթոն = 3.7
Եկեք ակտիվացնենք նոր միջավայրը
conda ակտիվացնել մլ
Ձեր bash shell- ից առաջ մի նախածանց կհայտնվի միջավայրի անունով ՝ նշելով, որ դուք այժմ աշխատում եք այդ միջավայրում:
Քայլ 3: Տեղադրեք AXeleRate և գործարկեք թեստեր
Տեղադրեք aXeleRate- ը ձեր տեղական մեքենայի հետ ՝
pip տեղադրել git+https://github.com/AIWintermuteAI/aXeleRate
Օրինակները ներբեռնելու համար գործարկեք.
git կլոն
Դուք կարող եք արագ թեստեր անցկացնել test_training.py- ով aXeleRate թղթապանակում: Այն կիրականացնի ուսուցում և եզրակացություն յուրաքանչյուր մոդելի տիպի համար, կփրկի և փոխակերպի պատրաստված մոդելներին: Քանի որ այն ուսուցում է միայն 5 դարաշրջանների համար, և տվյալների հավաքածուն շատ փոքր է, դուք չեք կարողանա օգտակար մոդելներ ձեռք բերել, բայց այս սցենարը նախատեսված է միայն սխալների բացակայությունը ստուգելու համար:
Քայլ 4. Վերապատրաստեք մոդելը, փոխակերպեք Keras մոդելը.kmodel- ի
Խաղալիքի այս օրինակի համար մենք մոդելին կսովորեցնենք ճանաչել Ձմեռ պապին և Արդուինո Ունոյին: Ակնհայտ է, որ դուք կարող եք ընտրել այլ դասարաններ: Ներբեռնեք տվյալների հավաքածուն այստեղից: Ստեղծեք classifier.json ֆայլի պատճենը կազմաձևման թղթապանակում, այնուհետև փոխեք այն համապատասխանաբար, ինչպես սքրինշոթում կազմաձևվող ֆայլը. Համոզվեք, որ ուսուցման և վավերացման պանակների ուղին ճիշտ է:
Գործարկեք հետևյալ հրամանը aXeleRate թղթապանակից.
python axelerate/train.py - c configs/santa_uno.json
Վերապատրաստումը կսկսվի: Եթե վավերացման ճշգրտությունը (մեր վավերացման չափանիշը) չի բարելավվում 20 դարաշրջանների համար, ուսուցումը վաղաժամ կդադարի: Ամեն անգամ, երբ վավերացման ճշգրտությունը բարելավվում է, մոդելը պահվում է ծրագրի թղթապանակում: Ուսուցման ավարտից հետո aXeleRate- ը ինքնաբերաբար լավագույն մոդելը փոխակերպում է նշված ձևաչափերի. Այժմ կարող եք ընտրել ՝ «tflite», «k210» կամ «edgetpu»:
Քայլ 5. Գործարկեք մոդելը Sipeed Maix Bit- ի վրա
Մոդելը գործարկելու երկու եղանակ կա Sipeed Maix ապարատով ՝ միկրոֆիթոնային որոնվածը և Arduino IDE- ն: Micropython սարքավորումն ավելի հեշտ է օգտագործել, սակայն այն զբաղեցնում է առկա հիշողության զգալի մասը, ուստի մոդելի համար ավելի քիչ տարածք է մնում: Arduino IDE- ն հիմնականում C կոդ է, որը շատ ավելի արդյունավետ է և ունի ավելի փոքր հիշողության հետք: Իմ մոդելը ընդամենը 1.9 Մբ է, այնպես որ երկու տարբերակներն էլ դրա համար աշխատում են: Micropython- ով կարող եք օգտագործել 2.9 Մբ չափի մոդելներ, ավելի մեծ բանի համար, որը պետք է հաշվի առնել Arduino IDE- ի օգտագործմամբ:
Ներբեռնեք OpenMV IDE- ն այստեղից և նվազագույն micropython որոնվածը այստեղից:
Այրեք որոնվածը kflash_gui գործիքով: Կարող եք նաև ընտրել, որ պատրաստված մոդելը նույնպես այրվի, ինչպես ցույց է տրված սքրինշոթում: Կամ պատճենեք այն SD քարտի վրա (այդ դեպքում.kmodel- ը պատճենեք SD քարտի արմատին և տեղադրեք SD քարտը Sipeed Maix Bit- ի մեջ)
Բացեք OpenMV IDE- ը և սեղմեք միացման կոճակը: Բացեք santa_uno.py սցենարը example_scripts թղթապանակից և սեղմեք Start կոճակը: Դուք պետք է տեսախցիկից ուղիղ հեռարձակում տեսնեք, և եթե սերիական տերմինալը բացեք, վստահության գնահատականով կունենաք պատկերի ճանաչման լավագույն արդյունքը:
Arduino IDE- ով օգտագործելու համար նախ պետք է հետևել Arduino IDE- ին Sipeed տախտակներ ավելացնելու ընթացակարգին, որը փաստաթղթավորված է այստեղ: Ձեր Arduino IDE տարբերակը պետք է լինի առնվազն 1.8.12: Տախտակները ավելացնելուց հետո բացեք mobilenet_v1_transfer_learning.ino էսքիզը և վերբեռնեք Sipeed Maix Bit- ում: Փոխեք մոդելի անունը SD քարտի վրա «մոդել» (կամ պատճենեք այս անունով): Դուք կարող եք փոխել պիտակի անունները names.cpp- ում: Այն ցույց կտա ուղիղ տեսախցիկի հոսքը Sipeed Maix էկրանին ՝ պատկերի ճանաչման լավագույն արդյունքի հետ միասին:
Քայլ 6: Եզրակացություններ
Ահա ևս մի քանի նյութ ՝ CNN- ների թեմայով կարդալու և ուսումը փոխանցելու համար.
Փոխանցել ուսումը Mobilenet- ի և Keras- ի միջոցով: Փոխանցման ուսուցման հիանալի բացատրություն, այս ձեռնարկը օգտագործում է այդ հոդվածի ծածկագրի փոփոխված տարբերակը:
Կատուներ և շներ և կոնվոլյուցիոն նյարդային ցանցեր Բացատրում է CNN- ի հիմունքները և պատկերացնում որոշ զտիչներ: Կատուների հետ!
Սովորեցրեք, փոխակերպեք, գործարկեք MobileNet- ը Sipeed MaixPy- ում և MaixDuino- ում: Sipeed թիմի ձեռնարկը, թե ինչպես կարելի է վերապատրաստել Mobilenet 1000 դասերը զրոյից (առանց փոխանցման ուսուցման): Դուք կարող եք ներբեռնել նրանց նախապես պատրաստված մոդելը և փորձել այն:
Հուսով եմ, որ դուք կարող եք օգտագործել ձեր ունեցած գիտելիքները մեքենայական տեսլականով որոշ հիանալի նախագծեր կառուցելու համար: Այստեղ կարող եք ձեռք բերել Sipeed տախտակներ, դրանք ներդրված համակարգերում ML- ի համար մատչելի ամենաէժան տարբերակներից են:
Խորհուրդ ենք տալիս:
Օբյեկտի հայտնաբերում Sipeed MaiX տախտակներով (Kendryte K210) ՝ 6 քայլ
Օբյեկտների հայտնաբերում Sipeed MaiX տախտակներով (Kendryte K210). Որպես Sipeed MaiX տախտակներով պատկերի ճանաչման մասին իմ նախորդ հոդվածի շարունակություն, ես որոշեցի գրել մեկ այլ ձեռնարկ ՝ կենտրոնանալով օբյեկտների հայտնաբերման վրա: Վերջերս ինչ -որ հետաքրքիր սարքավորում հայտնվեց Kendryte K210 չիպով, ներառյալ S
Արհեստական բանականություն և պատկերի ճանաչում HuskyLens- ի միջոցով. 6 քայլ (նկարներով)
Արհեստական բանականություն և պատկերի ճանաչում HuskyLens- ի միջոցով. Աքարշ այստեղ CETech- ից: Այս նախագծում մենք մտադիր ենք դիտել HuskyLens- ը DFRobot- ից: Դա արհեստական ինտելեկտով աշխատող տեսախցիկի մոդուլ է, որն ունակ է արհեստական ինտելեկտի մի քանի գործողություններ կատարել, ինչպիսիք են ՝ Face Recognitio
Պատկերի մշակում Raspberry Pi- ով. OpenCV- ի և պատկերի գույնի տարանջատման տեղադրում. 4 քայլ
Պատկերի մշակում Raspberry Pi- ի միջոցով. OpenCV- ի և պատկերի գույնի տարանջատման տեղադրում. Այս գրառումը առաջինն է պատկերի մշակման մի քանի ձեռնարկներից, որոնք պետք է հետևեն: Մենք ավելի սերտորեն նայում ենք պատկերը կազմող պիքսելներին, սովորում ենք, թե ինչպես տեղադրել OpenCV- ն Raspberry Pi- ի վրա, ինչպես նաև գրում ենք թեստային սցենարներ ՝ նկարը պատկերելու և
Պատկերի ճանաչում TensorFlow- ով Raspberry Pi- ում ՝ 6 քայլ
Պատկերի ճանաչում TensorFlow- ի միջոցով Raspberry Pi- ում. Google TensorFlow- ը թվային հաշվարկման բաց կոդով ծրագրային գրադարան է `օգտագործելով տվյալների հոսքի գրաֆիկներ: Այն օգտագործվում է Google- ի կողմից մեքենայական ուսուցման և խորը ուսուցման տեխնոլոգիաների իր տարբեր ոլորտներում: TensorFlow- ն ի սկզբանե մշակվել է Google Brai
AVR Mini Board լրացուցիչ տախտակներով `7 քայլ
AVR Mini Board Լրացուցիչ տախտակներով. Որոշ չափով նման է PIC 12f675 մինի նախատախտակին, բայց ընդլայնված և լրացուցիչ տախտակներով: Օգտագործելով attiny2313