Mündəricat:
- Addım 1: CNN və Transfer Öyrənmə: Bəzi Nəzəriyyə
- Addım 2: Ətrafınızı hazırlayın
- Addım 3: AXeleRate quraşdırın və Testləri Çalışdırın
- Addım 4: Modeli yenidən öyrənin, Keras Modelini.kmodelə çevirin
- Addım 5: Modeli Sipeed Maix Bit üzərində işlədin
- Addım 6: Nəticələr
Video: K210 lövhələri və Arduino IDE/Micropython ilə görüntü tanıma: 6 addım (şəkillərlə birlikdə)
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:44
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ə
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
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
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
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
İ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ə:
Sipeed MaiX lövhələri ilə obyekt aşkarlanması (Kendryte K210): 6 addım
Sipeed MaiX Lövhələri ilə Obyekt Tanıma (Kendryte K210): Sipeed MaiX Lövhələri ilə görüntü tanıma ilə bağlı əvvəlki məqaləmin davamı olaraq, obyekt aşkarlamasına diqqət yetirərək başqa bir dərs yazmağa qərar verdim. Bu yaxınlarda Kendryte K210 çipi ilə birlikdə S
HuskyLens istifadə edərək Süni Zəka və Görüntü Tanıma: 6 Addım (Şəkillərlə birlikdə)
HuskyLens istifadə edərək Süni Zəka və Görüntü Tanıma: Hey, nə var, uşaqlar! Akarsh burada CETech -dən. Bu layihədə DFRobot -dan HuskyLens -ə nəzər salacağıq. Süni intellektlə, məsələn, Üz Tanıma kimi bir çox əməliyyatları yerinə yetirə bilən AI ilə işləyən kamera moduludur
Tinusaur lövhələri ilə işləmək üçün Arduino IDE -ni necə qurmaq olar: 3 addım
Tinusaur lövhələri ilə işləmək üçün Arduino IDE -ni necə qurmaq olar: Bu, Arduino IDE -ni Tinusaur lövhələri ilə işləmək üçün necə qurulacağına dair qısa bir bələdçidir. Əsasən Atmel ATtiny85/45/25 mikrokontrolörləri ilə işləməsini təmin etməkdir. . Tək fərq, lövhələr siyahısında Tinusau kimi görünməsidir
Raspberry Pi -də TensorFlow ilə Görüntü Tanıma: 6 addım
Raspberry Pi-də TensorFlow ilə Görüntü Tanıma: Google TensorFlow, məlumat axını qrafiklərindən istifadə edərək Sayısal Hesablama üçün Açıq Mənbə proqram kitabxanasıdır. Google tərəfindən Maşın Öyrənmə və Dərin Öyrənmə Texnologiyalarının müxtəlif sahələrində istifadə olunur. TensorFlow əvvəlcə Google Brai tərəfindən hazırlanmışdır
Üz Tanıma+Tanıma: 8 Addım (Şəkillərlə birlikdə)
Üz Algılama+tanıma: Bu, bir kameradan OpenCV ilə üz tanıma və tanıma işlərinin sadə bir nümunəsidir. DİQQƏT: BU PROJƏNİ SENSOR MÜSABİQƏSİ ÜÇÜN YAPDIM VƏ YÜZLƏRİ İZLƏMƏK VƏ TANIŞI YÜZÜNÜN KAMERASINDAN İSTİFADƏ ETDİM