Mündəricat:

K210 lövhələri və Arduino IDE/Micropython ilə görüntü tanıma: 6 addım (şəkillərlə birlikdə)
K210 lövhələri və Arduino IDE/Micropython ilə görüntü tanıma: 6 addım (şəkillərlə birlikdə)

Video: K210 lövhələri və Arduino IDE/Micropython ilə görüntü tanıma: 6 addım (şəkillərlə birlikdə)

Video: K210 lövhələri və Arduino IDE/Micropython ilə görüntü tanıma: 6 addım (şəkillərlə birlikdə)
Video: PyAi k210 - новая платформа машинного зрения на Kendryte k210 2024, Iyun
Anonim
Image
Image

Sipeed Maix Bit -də OpenMV demolarının necə işlədiləcəyi ilə bağlı bir məqalə yazmışam və bu lövhə ilə obyekt aşkarlama demosunun videosunu da çəkmişəm. İnsanların çoxsaylı suallarından biri budur - neyron şəbəkəsinin öyrədilmədiyi bir obyekti necə tanıya bilərəm? Başqa sözlə, öz görüntü təsnifatçınızı necə düzəltmək və onu hardware sürətləndirmə ilə idarə etmək.

Bu başa düşülən bir sualdır, çünki layihəniz üçün, ehtimal ki, pişiklər, itlər və təyyarələr kimi bəzi ümumi obyektləri tanımağa ehtiyac yoxdur. Xüsusi bir şey tanımaq istəyirsən, məsələn, o avtomatik ev heyvanı qapısı üçün bir it cinsi və ya çeşidləmək üçün bir bitki növü və ya düşünə biləcəyiniz hər hansı bir çıxan tətbiq!

Səni başa düşdüm! Bu yazıda sizə Kerasda transfer öyrənmə ilə öz xüsusi şəkil təsnifatçınızı yaratmağı, öyrədilmiş modeli.kmodel formatına çevirməyi və Micropython istifadə edərək Sipeed boardda (hər hansı bir lövhə, Bit/Dock və ya Go ola bilər) işlədəcəyimi öyrədəcəyəm. Arduino IDE. Və bu biliklə edə biləcəyiniz işlərdə yalnız təsəvvürünüz məhdud olacaq.

MAY 2020 GÜNCELLEŞTİRMƏ: K210 lövhələri ilə Şəkil Tanıma mövzusunda məqaləmin və videomun hələ də çox populyar olduğunu və YouTube və Google-da ən yaxşı nəticələr olduğunu görərək məqaləni aXeleRate, AI üçün Keras əsaslı çərçivə haqqında məlumat daxil etmək üçün yeniləmək qərarına gəldim. Kenar inkişaf etdirirəm.

aXeleRate, əslində, görüntü tanıma/obyekt aşkarlama modelləri üçün istifadə etdiyim skriptlər toplusuna əsaslanır - vahid bir çərçivədə birləşdirilmiş və Google Colab -da iş axını üçün optimallaşdırılmışdır. İstifadəsi daha rahatdır və daha aktualdır.

Məqalənin köhnə versiyası üçün hələ də steemit.com saytında görə bilərsiniz.

Addım 1: CNN və Transfer Öyrənmə: Bəzi Nəzəriyyə

CNN və Transfer Öyrənmə: Bəzi Nəzəriyyə
CNN və Transfer Öyrənmə: Bəzi Nəzəriyyə

Convolutional Neural Networks və ya CNN, ən çox görmə qabiliyyətini təhlil etmək üçün tətbiq olunan dərin sinir şəbəkələri sinifidir. İnternetdə bu mövzuda bir çox ədəbiyyat var və məqalənin son hissəsində bəzi bağlantılar verəcəyəm. Qısacası, CNN -i görüntüyə tətbiq olunan bir sıra filtrlər olaraq düşünə bilərsiniz, hər bir filtrdə müəyyən bir xüsusiyyət axtarır - alt bükülmə təbəqələrində xüsusiyyətlər ümumiyyətlə xətlər və sadə formalardır, üst qatlarda isə xüsusiyyətlər daha konkret ola bilər, məsələn bədən hissələri, xüsusi toxumalar, heyvanların və ya bitkilərin hissələri və s. Müəyyən xüsusiyyətlərin olması bizə görüntüdəki obyektin nə ola biləcəyinə dair bir ipucu verə bilər. Bığ, iki göz və qara burun? Pişik olmalıdır! Yaşıl yarpaqlar, ağac gövdəsi? Ağaca bənzəyir!

Ümid edirəm indi CNN -in iş prinsipi haqqında fikir əldə edəcəksiniz. Normalda dərin bir sinir şəbəkəsi, istədiyiniz obyektlərin növlərini tanımaq üçün faydalı olan filtrləri "inkişaf etdirmək" üçün minlərlə görüntüyə və saatlarla məşq etməyə (təlim üçün istifadə etdiyiniz aparatdan asılıdır) ehtiyac duyur. Ancaq qısa yol var.

Bir çox fərqli obyekti (pişiklər, itlər, məişət texnikası, nəqliyyat və s.) Tanımaq üçün öyrədilmiş bir model artıq "inkişaf etdirilmiş" bir çox faydalı filtrə malikdir, buna görə əsas formaları və hissələri tanımağı öyrənməyə ehtiyacımız yoxdur. yenidən obyektlərin. Bizim üçün vacib olan obyektlərin müəyyən siniflərini tanımaq üçün şəbəkənin son bir neçə qatını yenidən məşq edə bilərik. Buna "köçürmə təhsili" deyilir. Yalnız bir neçə yüz neyrondan ibarət olan şəbəkənin son bir neçə təbəqəsini öyrətdiyiniz üçün daha az təlim məlumatlarına və köçürmə öyrənmə ilə vaxt hesablamağa ehtiyacınız var.

Möhtəşəm səslənir, elə deyilmi? Bunu necə həyata keçirəcəyimizi görək.

Addım 2: Ətrafınızı hazırlayın

Ətrafınızı Hazırlayın
Ətrafınızı Hazırlayın

AXeleRate istifadə etməyin iki yolu var: yerli olaraq Ubuntu maşınında və ya Google Colabda işləyin. Google Colab -da işləmək üçün bu nümunəyə baxın:

Şəkil təsnifatı Colab Notebook

Modelinizi yerli olaraq öyrətmək və onu hardware sürətləndirmə ilə istifadə etmək üçün ixrac etmək indi də çox asandır.

İş mühitim Ubuntu 16.04, 64bitdir. Ubuntu görüntüsünü işə salmaq üçün Virtual maşın istifadə edə bilərsiniz, çünki təlim üçün GPU istifadə etməyəcəyik. Bəzi dəyişikliklərlə Windows -da təlim skriptini də işlədə bilərsiniz, ancaq modelin çevrilməsi üçün Linux sistemindən istifadə etməlisiniz. Beləliklə, bu təlimatı yerinə yetirməyiniz üçün üstünlük verilən mühit yerli və ya virtual maşında çalışan Ubuntu 16.04 -dir.

Python üçün mühit meneceri olan Miniconda quraraq başlayaq. İzolyasiya edilmiş bir mühit yaradacağıq, buna görə sistem Python mühitinizdə heç bir şeyi təsadüfən dəyişdirməyəcəyik.

Yükləyicini buradan yükləyin

Quraşdırma başa çatdıqdan sonra yeni bir mühit yaradın:

conda yaratmaq -n ml python = 3.7

Yeni mühiti aktivləşdirək

ml aktivləşdirin

Bash qabığınızdan əvvəl ətraf mühitin adı ilə bir prefiks görünəcək ki, bu da o mühitdə işlədiyinizi göstərir.

Addım 3: AXeleRate quraşdırın və Testləri Çalışdırın

AXeleRate quraşdırın və Testləri Çalışdırın
AXeleRate quraşdırın və Testləri Çalışdırın

Yerli maşınınıza aXeleRate quraşdırın

pip yüklə git+https://github.com/AIWintermuteAI/aXeleRate

Nümunələri yükləmək üçün işləyin:

git klonu

AXeleRate qovluğunda tests_training.py ilə sürətli testlər keçirə bilərsiniz. Hər bir model növü üçün təlim və nəticə çıxaracaq, təlim keçmiş modelləri saxlayacaq və çevirəcəkdir. Yalnız 5 dövr üçün təlim olduğundan və məlumat bazası çox kiçik olduğundan, faydalı modellər əldə edə bilməyəcəksiniz, ancaq bu skript yalnız səhvlərin yoxlanılması üçün nəzərdə tutulmuşdur.

Addım 4: Modeli yenidən öyrənin, Keras Modelini.kmodelə çevirin

Modeli yenidən öyrətmək, Keras Modelini.kmodelə çevirmək
Modeli yenidən öyrətmək, Keras Modelini.kmodelə çevirmək

Bu oyuncaq nümunəsi üçün modeli Santa Claus və Arduino Uno'yu tanımağa öyrədəcəyik. Aydındır ki, digər sinifləri seçə bilərsiniz. Məlumat bazasını buradan yükləyin. Konfiqurasiya qovluğunda classifier.json faylının bir nüsxəsini yaradın, sonra ekran görüntüsündəki konfiqurasiya faylına bənzər şəkildə dəyişdirin - təlim və doğrulama qovluqlarına gedən yolun düzgün olduğundan əmin olun!

AXeleRate qovluğundan aşağıdakı əmri işlədin:

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

Təlim başlayacaq. Doğrulama dəqiqliyi (doğrulama metrikimiz) 20 dövr üçün yaxşılaşmırsa, təlim vaxtından əvvəl dayandırılacaq. Hər dəfə doğrulama dəqiqliyi yaxşılaşdıqda model layihə qovluğunda saxlanılır. Təlim bitdikdən sonra, aXeleRate avtomatik olaraq ən yaxşı modeli müəyyən formatlara çevirir - "tflite", "k210" və ya "edgetpu" seçə bilərsiniz.

Addım 5: Modeli Sipeed Maix Bit üzərində işlədin

Modeli Sipeed Maix Bit üzərində işlədin
Modeli Sipeed Maix Bit üzərində işlədin
Modeli Sipeed Maix Bit üzərində işlədin
Modeli Sipeed Maix Bit üzərində işlədin
Modeli Sipeed Maix Bit üzərində işlədin
Modeli Sipeed Maix Bit üzərində işlədin

İndi əldə etdiyiniz modeli Sipeed Maix aparatında işə salmağın iki yolu var: micropython firmware və Arduino IDE. Micropython aparatının istifadəsi daha asandır, lakin mövcud yaddaşın əhəmiyyətli hissəsini tutur, buna görə də model üçün daha az yer qalıb. Arduino IDE, daha səmərəli və daha kiçik yaddaş sahəsinə malik olan C kodudur. Modelim yalnız 1.9Mb -dir, buna görə hər iki variant da bunun üçün işləyir. Arduino IDE istifadə etməyi düşünməyiniz lazım olan daha böyük bir şey üçün Micropython ilə birlikdə 2,9 Mb ölçüsündə olan modellərdən istifadə edə bilərsiniz.

OpenMV IDE -ni buradan və minimum micropython firmware -ni buradan yükləyin.

Kflash_gui aləti ilə firmware yazın. Ekran görüntüsündə göstərildiyi kimi, həm də yanıb -sönmək üçün təlim keçmiş modeli yandırmağı da seçə bilərsiniz. Və ya SD karta kopyalayın (bu halda.kmodeli bir SD kartın kökünə kopyalayın və SD kartı Sipeed Maix Bit -ə daxil edin)

OpenMV IDE -ni açın və əlaqə düyməsini basın. Example_scripts qovluğundan santa_uno.py skriptini açın və Başlat düyməsini basın. Kameradan canlı bir axın görməli və Serial Terminalını açarsanız, güvən balı ilə ən yaxşı görüntü tanıma nəticəsi olacaqsınız!

Arduino IDE ilə istifadə etmək üçün əvvəlcə burada sənədləşdirilmiş Arduino IDE -yə Sipeed lövhələr əlavə etmək proseduruna əməl etməlisiniz. Arduino IDE versiyanız ən az 1.8.12 olmalıdır. Lövhələri əlavə etdikdən sonra mobilenet_v1_transfer_learning.ino eskizini açın və Sipeed Maix Bit -ə yükləyin. SD kartdakı modelin adını "model" olaraq dəyişdirin (və ya bu adla bir nüsxə çıxarın). Names.cpp -də etiket adlarını dəyişə bilərsiniz. Sipeed Maix ekranında ən yaxşı görüntü tanıma nəticəsi ilə birlikdə canlı kamera axını göstəriləcək.

Addım 6: Nəticələr

CNN -lər və köçürmə təhsili mövzusunda oxumaq üçün daha bir neçə material var:

Mobilenet və Keras istifadə edərək Transfer Öyrənmə Transfer öyrənmənin əla bir izahı olan bu dərslik, həmin məqalədəki kodun dəyişdirilmiş bir versiyasından istifadə edir.

Pişiklər və itlər və konvulsion sinir şəbəkələri CNN -lərin əsaslarını izah edir və bəzi filtrləri görselleştirir. Pişiklərlə!

Sipeed MaixPy və MaixDuino üzərində hazırlayın, çevirin, MobileNet işləyin! Sipeed komandasından Mobilenet 1000 siniflərini sıfırdan necə öyrətməklə bağlı dərs (köçürmə öyrənmə). Əvvəlcədən öyrədilmiş modelini yükləyib sınaya bilərsiniz!

Ümid edirik ki, indi əldə etdiyiniz biliklərdən istifadə edərək maşın görmə qabiliyyəti ilə möhtəşəm layihələr qura bilərsiniz! Sipeed lövhələrini buradan satın ala bilərsiniz, bunlar quraşdırılmış sistemlərdə ML üçün ən ucuz seçimlər arasındadır.

Tövsiyə: