Mundarija:

K210 platalari va Arduino IDE/Micropython yordamida tasvirni aniqlash: 6 qadam (rasmlar bilan)
K210 platalari va Arduino IDE/Micropython yordamida tasvirni aniqlash: 6 qadam (rasmlar bilan)
Anonim
Image
Image

Men allaqachon Sipeed Maix Bit -da OpenMV demosini qanday ishga tushirish haqida bitta maqola yozganman va shu taxta yordamida ob'ektlarni aniqlash demosining videosini ham qilganman. Odamlar so'ragan ko'plab savollardan biri - neyron tarmog'i o'rgatilmagan ob'ektni qanday tan olaman? Boshqacha qilib aytganda, o'zingiz qanday tasvir tasniflagichini yasashingiz va uni apparat tezlashtirish yordamida ishga tushirishingiz mumkin.

Bu tushunarli savol, chunki sizning loyihangiz uchun mushuklar, itlar va samolyotlar kabi ba'zi umumiy ob'ektlarni tanib olishning hojati yo'q. Siz aniq bir narsani tan olishni xohlaysiz, masalan, uy hayvonlari uchun avtomatik eshik uchun it zotini, yoki saralash uchun o'simlik turini yoki siz o'ylaydigan boshqa chiquvchi ilovalarni!

Sizni tushundim! Ushbu maqolada men sizga Keras -da o'tkazishni o'rganish orqali o'zingizning shaxsiy rasm tasniflagichingizni qanday yaratishni, o'rgatilgan modelni.kmodel formatiga o'tkazishni va Micropython yoki Sipeed doskasida (har qanday taxta, Bit/Dock yoki Go bo'lishi mumkin) ishga tushirishni o'rgataman. Arduino IDE. Va faqat sizning tasavvuringiz bu bilim bilan bajaradigan vazifalar chegarasi bo'ladi.

2020-MAYNI YANGILASh: K210 platalari yordamida tasvirni tanib olish haqidagi maqolam va videom hali ham juda mashhurligini ko'rib, YouTube va Google-dagi eng yaxshi natijalar qatorida, men maqolani aXeleRate, Keras asosidagi sun'iy intellekt asoslari haqidagi ma'lumotlarni kiritish uchun yangilashga qaror qildim. Men rivojlanaman.

aXeleRate, asosan, tasvirni aniqlash/ob'ektlarni aniqlash modellarini o'rgatish uchun ishlatgan skriptlar to'plamiga asoslangan - yagona ramkaga birlashtirilgan va Google Colab -da ish oqimi uchun optimallashtirilgan. Foydalanish qulayroq va yangilangan.

Maqolaning eski versiyasi uchun siz uni steemit.com saytida ko'rishingiz mumkin.

1 -qadam: CNN va transferni o'rganish: ba'zi nazariyalar

CNN va transferni o'rganish: ba'zi nazariyalar
CNN va transferni o'rganish: ba'zi nazariyalar

Konvolyutsion neyron tarmoqlari yoki CNN - bu chuqur neyron tarmoqlari sinfidir, ular odatda vizual tasvirlarni tahlil qilish uchun ishlatiladi. Internetda mavzu bo'yicha juda ko'p adabiyotlar bor va men maqolaning oxirgi qismida ba'zi havolalarni beraman. Muxtasar qilib aytganda, siz CNN -ni tasvirga qo'llaniladigan bir qator filtrlar deb hisoblashingiz mumkin, har bir filtr tasvirning o'ziga xos xususiyatini qidiradi - pastki konvolyutsion qatlamlarda odatda chiziqlar va oddiy shakllar, yuqori qatlamlarda esa xususiyatlar bo'ladi. aniqroq bo'lishi mumkin, masalan tana qismlari, o'ziga xos to'qimalar, hayvonlar yoki o'simliklarning qismlari va boshqalar. Belgilangan xususiyatlarning mavjudligi tasvirdagi ob'ekt nima bo'lishi mumkinligini tushunishga yordam beradi. Mo'ylovli, ikki ko'zli va qora burunli? Mushuk bo'lishi kerak! Yashil barglar, daraxt tanasi? Daraxtga o'xshaydi!

Umid qilamanki, siz hozir CNNning ishlash printsipi haqida tasavvurga egasiz. Odatda chuqur neyron tarmog'iga kerakli ob'ektlarning turlarini aniqlash uchun foydali bo'lgan filtrlarni "ishlab chiqish" uchun minglab tasvirlar va mashg'ulot soatlari kerak bo'ladi (mashg'ulot uchun foydalanadigan uskunalarga bog'liq). Ammo yorliq bor.

Ko'p turli xil umumiy ob'ektlarni (mushuklar, itlar, maishiy texnika, transport va boshqalar) tanib olishga o'rgatilgan modelda "ishlab chiqilgan" juda ko'p foydali filtrlar mavjud, shuning uchun ularning asosiy shakllari va qismlarini tanib olishni o'rganishning hojati yo'q. yana ob'ektlar haqida. Biz tarmoqning oxirgi bir necha qatlamlarini biz uchun muhim bo'lgan ob'ektlarning aniq sinflarini tanib olish uchun qayta o'qitishimiz mumkin. Bu "transfer ta'limi" deb nomlanadi. Sizga o'qitish ma'lumotlari va o'tkazish vaqtini hisoblash uchun ancha kam ma'lumot kerak bo'ladi, chunki siz faqat bir necha yuz neyronlardan tashkil topgan tarmoqning oxirgi qatlamlarini o'rgatyapsiz.

Ajoyib eshitiladi, to'g'rimi? Keling, uni qanday amalga oshirishni ko'rib chiqaylik.

2 -qadam: Atrof -muhitni tayyorlang

Atrof -muhitingizni tayyorlang
Atrof -muhitingizni tayyorlang

AXeleRate -dan foydalanishning ikkita usuli: Ubuntu -da yoki Google Colab -da mahalliy darajada ishlash. Google Colab -da ishlash uchun quyidagi misolni ko'rib chiqing:

Rasm tasnifi Colab Notebook

O'z modelingizni mahalliy darajada o'rgatish va uni apparat tezlashtirishda ishlatish uchun eksport qilish ham hozir ancha osonlashdi.

Mening ish muhitim Ubuntu 16.04, 64bit. Ubuntu tasvirini ishga tushirish uchun siz virtual mashinadan foydalanishingiz mumkin, chunki biz o'qish uchun GPUdan foydalanmaymiz. Ba'zi o'zgartirishlar bilan siz Windows -da o'quv skriptini ishga tushirishingiz mumkin, lekin modelni o'zgartirish uchun siz Linux tizimidan foydalanishingiz kerak bo'ladi. Shunday qilib, ushbu qo'llanmani bajarishingiz uchun afzalroq muhit - bu Ubuntu 16.04, u mahalliy yoki virtual mashinada ishlaydi.

Python uchun muhit menejeri Miniconda -ni o'rnatishdan boshlaylik. Biz izolyatsiya qilingan muhitni yaratamiz, shuning uchun tasodifan Python tizimingizdagi biror narsani o'zgartirmaymiz.

O'rnatuvchini bu yerdan yuklab oling

O'rnatish tugagandan so'ng, yangi muhit yarating:

yaratish -n ml python = 3.7

Keling, yangi muhitni faollashtiraylik

ml faollashtiring

Bosh qobig'ining oldidagi atrof -muhit nomi bilan prefiks paydo bo'ladi, bu siz hozir o'sha muhitda ishlayotganingizni ko'rsatadi.

3 -qadam: AXeleRate -ni o'rnating va testlarni ishga tushiring

AXeleRate -ni o'rnating va testlarni ishga tushiring
AXeleRate -ni o'rnating va testlarni ishga tushiring

AXeleRate -ni mahalliy mashinangizga o'rnating

pip o'rnatish git+https://github.com/AIWintermuteAI/aXeleRate

Misollarni yuklab olish uchun ishga tushiring:

git klon

AXeleRate papkasida test_training.py yordamida tezkor testlarni o'tkazishingiz mumkin. U har bir model turi uchun o'qitish va xulosa chiqaradi, o'qitilgan modellarni saqlaydi va o'zgartiradi. Bu faqat 5 davr uchun mashg'ulotlar va ma'lumotlar to'plami juda kichik bo'lgani uchun, siz foydali modellarni ololmaysiz, lekin bu skript faqat xatolar yo'qligini tekshirish uchun mo'ljallangan.

4-qadam: Modelni qayta o'qitish, Keras modelini.kmodelga aylantirish

Modelni qayta o'qitish, Keras modelini.kmodelga aylantirish
Modelni qayta o'qitish, Keras modelini.kmodelga aylantirish

Bu o'yinchoq misolida biz modelga Santa Klaus va Arduino Unoni tan olishni o'rgatamiz. Shubhasiz, siz boshqa sinflarni tanlashingiz mumkin. Ma'lumotlar to'plamini bu erdan yuklab oling. Conf-g.webp

AXeleRate papkasidan quyidagi buyruqni bajaring:

python axelerate/train.py - c configs/santa_uno.json

Trening boshlanadi. Agar tasdiqlash aniqligi (bizning tekshirish o'lchovi) 20 davr davomida yaxshilanmasa, mashg'ulot muddatidan oldin to'xtaydi. Har safar tekshirish aniqligi yaxshilanganida, model loyiha papkasida saqlanadi. Trening tugagandan so'ng, aXeleRate avtomatik ravishda eng yaxshi modelni belgilangan formatlarga o'tkazadi - siz hozircha "tflite", "k210" yoki "edgetpu" ni tanlashingiz mumkin.

5 -qadam: Modelni Sipeed Maix Bit -da ishga tushiring

Modelni Sipeed Maix bitda ishga tushiring
Modelni Sipeed Maix bitda ishga tushiring
Modelni Sipeed Maix bitda ishga tushiring
Modelni Sipeed Maix bitda ishga tushiring
Modelni Sipeed Maix bitda ishga tushiring
Modelni Sipeed Maix bitda ishga tushiring

Siz hozirda Sipeed Maix apparatida mavjud bo'lgan modelni ishlatishning ikkita usuli bor: micropython firmware va Arduino IDE. Micropython apparatidan foydalanish osonroq, lekin u mavjud xotiraning katta qismini egallaydi, shuning uchun modelga kam joy qoladi. Arduino IDE asosan C kodi bo'lib, u ancha samaraliroq va xotira izi kichikroq. Mening modelim atigi 1,9 Mb, shuning uchun ikkala variant ham u uchun ishlaydi. Siz Micropython bilan 2,9 Mb hajmli modellardan foydalanishingiz mumkin, bundan kattaroq narsa uchun Arduino IDE -dan foydalanishni o'ylab ko'rishingiz kerak.

OpenMV IDE -ni bu erdan va minimal mikropiton dasturiy ta'minotini bu erdan yuklab oling.

Kflash_gui vositasi bilan dasturiy ta'minotni yoqing. Shuningdek, skrinshotda ko'rsatilgandek, o'rgatilgan modelni ham yonib -o'chib yonishini tanlashingiz mumkin. Yoki uni SD -kartaga nusxalash (bu holda.kmodelni SD -kartaning ildiziga ko'chiring va SD -kartani Sipeed Maix Bit -ga joylashtiring)

OpenMV IDE -ni oching va ulanish tugmasini bosing. Example_scripts papkasidan santa_uno.py skriptini oching va Boshlash tugmasini bosing. Siz kameradan to'g'ridan -to'g'ri translyatsiyani ko'rishingiz kerak va agar siz Serial Terminalini ochsangiz, siz ishonch balli bilan tasvirni tanib olish bo'yicha eng yuqori natijaga erishasiz!

Arduino IDE -dan foydalanish uchun avval siz Arduino IDE -ga Sipeed platalarini qo'shish tartibiga rioya qilishingiz kerak, bu erda hujjatlashtirilgan. Sizning Arduino IDE versiyasi kamida 1.8.12 bo'lishi kerak. Taxtalarni qo'shgandan so'ng, mobilenet_v1_transfer_learning.ino eskizini oching va uni Sipeed Maix Bit -ga yuklang. SD -kartadagi model nomini "model" ga o'zgartiring (yoki shu nom bilan nusxa oling). Name.cpp da yorliq nomlarini o'zgartirishingiz mumkin. U Sipeed Maix ekranida kameraning jonli translyatsiyasini va yuqori tasvirni aniqlash natijasini ko'rsatadi.

6 -qadam: Xulosa

Bu erda CNN va transferni o'rganish mavzusida o'qish uchun yana bir qancha materiallar:

Mobilenet va Keras -dan foydalangan holda transferni o'rganish Transferni o'rganishning ajoyib ta'rifi, bu darslik ushbu maqoladagi kodning o'zgartirilgan versiyasidan foydalanadi.

Mushuklar va itlar va konvolyutsion neyron tarmoqlar CNN kanallari asoslarini tushuntiradi va ba'zi filtrlarni ingl. Mushuklar bilan!

Sipeed MaixPy va MaixDuino -da MobileNet -ni o'rgating, aylantiring, ishga tushiring! Sipeed jamoasining Mobilenet 1000 sinflarini noldan qanday o'rgatish bo'yicha ko'rsatma (transferni o'rgatish mumkin emas). Siz ularning oldindan tayyorlangan modelini yuklab olishingiz va sinab ko'rishingiz mumkin!

Umid qilamizki, siz hozir olgan bilimlaringizdan foydalanib, mashinani ko'rish qobiliyatiga ega bo'lgan ajoyib loyihalarni qura olasiz! Siz bu erda Sipeed plitalarini sotib olishingiz mumkin, ular o'rnatilgan tizimlarda ML uchun eng arzon variantlardan biri.

Tavsiya: