Բովանդակություն:

Պատկերի ճանաչում K210 տախտակներով և Arduino IDE/Micropython- ով ՝ 6 քայլ (նկարներով)
Պատկերի ճանաչում K210 տախտակներով և Arduino IDE/Micropython- ով ՝ 6 քայլ (նկարներով)

Video: Պատկերի ճանաչում K210 տախտակներով և Arduino IDE/Micropython- ով ՝ 6 քայլ (նկարներով)

Video: Պատկերի ճանաչում K210 տախտակներով և Arduino IDE/Micropython- ով ՝ 6 քայլ (նկարներով)
Video: Զարգացնող խաղեր (պատկերի ճանաչում) 2024, Հունիսի
Anonim
Image
Image

Ես արդեն գրել եմ մեկ հոդված, թե ինչպես վարել 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- ը խորը նյարդային ցանցերի դաս է, որն առավել հաճախ կիրառվում է տեսողական պատկերների վերլուծության համար: Ինտերնետում շատ գրականություն կա թեմայի վերաբերյալ, և ես որոշ հղումներ կտամ հոդվածի վերջին մասում: Մի խոսքով, կարելի է 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 և գործարկեք թեստեր
Տեղադրեք AXeleRate և գործարկեք թեստեր

Տեղադրեք aXeleRate- ը ձեր տեղական մեքենայի հետ ՝

pip տեղադրել git+https://github.com/AIWintermuteAI/aXeleRate

Օրինակները ներբեռնելու համար գործարկեք.

git կլոն

Դուք կարող եք արագ թեստեր անցկացնել test_training.py- ով aXeleRate թղթապանակում: Այն կիրականացնի ուսուցում և եզրակացություն յուրաքանչյուր մոդելի տիպի համար, կփրկի և փոխակերպի պատրաստված մոդելներին: Քանի որ այն ուսուցում է միայն 5 դարաշրջանների համար, և տվյալների հավաքածուն շատ փոքր է, դուք չեք կարողանա օգտակար մոդելներ ձեռք բերել, բայց այս սցենարը նախատեսված է միայն սխալների բացակայությունը ստուգելու համար:

Քայլ 4. Վերապատրաստեք մոդելը, փոխակերպեք Keras մոդելը.kmodel- ի

Վերապատրաստեք մոդելը, փոխակերպեք Keras մոդելը.kmodel- ի
Վերապատրաստեք մոդելը, փոխակերպեք 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 Bit- ի վրա
Գործարկեք մոդելը Sipeed Maix Bit- ի վրա
Գործարկեք մոդելը Sipeed Maix Bit- ի վրա
Գործարկեք մոդելը Sipeed Maix Bit- ի վրա
Գործարկեք մոդելը Sipeed Maix Bit- ի վրա
Գործարկեք մոդելը 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- ի համար մատչելի ամենաէժան տարբերակներից են:

Խորհուրդ ենք տալիս: