Სარჩევი:
- ნაბიჯი 1: CNN და სწავლების გადაცემა: ზოგიერთი თეორია
- ნაბიჯი 2: მოამზადეთ თქვენი გარემო
- ნაბიჯი 3: დააინსტალირეთ AXeleRate და გაუშვით ტესტები
- ნაბიჯი 4: გადაამზადეთ მოდელი, გადააკეთეთ Keras მოდელი.kmodel- ზე
- ნაბიჯი 5: გაუშვით მოდელი Sipeed Maix Bit– ზე
- ნაბიჯი 6: დასკვნები
ვიდეო: სურათის ამოცნობა K210 დაფებით და Arduino IDE/Micropython: 6 ნაბიჯი (სურათებით)
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:16
მე უკვე დავწერე ერთი სტატია იმის შესახებ, თუ როგორ უნდა გაუშვათ OpenMV დემოები Sipeed Maix Bit– ზე და ასევე გავაკეთე ამ ობიექტთან ერთად ობიექტის გამოვლენის დემო ვიდეო. ხალხის მიერ დასმული მრავალი კითხვა არის ერთი - როგორ შემიძლია ამოვიცნო ობიექტი, რომლისთვისაც ნერვული ქსელი არ არის მომზადებული? სხვა სიტყვებით, თუ როგორ უნდა შექმნათ თქვენი საკუთარი სურათის კლასიფიკატორი და გაუშვათ იგი აპარატურის აჩქარებით.
ეს გასაგები კითხვაა, რადგან თქვენი პროექტისათვის თქვენ ალბათ არ გჭირდებათ ზოგიერთი ზოგადი ობიექტის ამოცნობა, როგორიცაა კატები და ძაღლები და თვითმფრინავები. გსურთ აღიაროთ რაიმე კონკრეტული, მაგალითად, ძაღლის ჯიში იმ ავტომატური შინაური ცხოველის კარისთვის, ან მცენარის სახეობა დასალაგებლად, ან ნებისმიერი სხვა გამავალი პროგრამა, რომელზეც შეგიძლიათ იფიქროთ!
მიმიხვდი! ამ სტატიაში მე გასწავლით თუ როგორ უნდა შექმნათ თქვენი პერსონალური გამოსახულების კლასიფიკატორი კერასში გადაცემის სწავლით, გადააკეთოთ გაწვრთნილი მოდელი.kmodel ფორმატში და გაუშვით Sipeed დაფაზე (შეიძლება იყოს ნებისმიერი დაფა, Bit/Dock ან Go) მიკროპითონის ან Arduino IDE. და მხოლოდ თქვენი ფანტაზია იქნება ზღვარი იმ ამოცანებზე, რომელთა შესრულებაც შეგიძლიათ ამ ცოდნით.
UPDATE MAY 2020: იმის დანახვა, თუ როგორ არის ჩემი სტატია და ვიდეო გამოსახულების ამოცნობის შესახებ K210 დაფებით, ჯერ კიდევ ძალიან პოპულარულია და YouTube- სა და Google- ის საუკეთესო შედეგებს შორის, მე გადავწყვიტე სტატიის განახლება, რათა შევიტანო ინფორმაცია AXeleRate, Keras დაფუძნებული AI ჩარჩოს შესახებ ზღვარი განვავითარე.
aXeleRate, არსებითად, დაფუძნებულია სკრიპტების კოლექციაზე, რომელიც მე გამოვიყენე გამოსახულების ამოცნობის/ობიექტების გამოვლენის მოდელების სწავლებისთვის - გაერთიანებულია ერთ ჩარჩოში და ოპტიმიზირებულია Google Colab– ზე მუშაობისთვის. უფრო მოსახერხებელია გამოსაყენებლად და უფრო თანამედროვე.
სტატიის ძველი ვერსიისთვის, თქვენ კვლავ შეგიძლიათ ნახოთ იგი steemit.com– ზე.
ნაბიჯი 1: CNN და სწავლების გადაცემა: ზოგიერთი თეორია
კონვოლუციური ნერვული ქსელები ან CNN არის ღრმა ნერვული ქსელების კლასი, რომელიც ყველაზე ხშირად გამოიყენება ვიზუალური გამოსახულების გასაანალიზებლად. ინტერნეტში ბევრი ლიტერატურაა ამ თემაზე და სტატიის ბოლო ნაწილში რამდენიმე ბმულს მოგცემთ. მოკლედ, თქვენ შეგიძლიათ წარმოიდგინოთ CNN როგორც ფილტრების სერია, რომელიც გამოიყენება გამოსახულებაზე, თითოეული ფილტრი ეძებს გამოსახულების კონკრეტულ მახასიათებელს - ქვედა კონვოლუციური ფენების მახასიათებლები, როგორც წესი, არის ხაზები და მარტივი ფორმები, ხოლო უფრო მაღალ ფენებზე - მახასიათებლები შეიძლება იყოს უფრო კონკრეტული, მაგ სხეულის ნაწილები, კონკრეტული ტექსტურები, ცხოველების თუ მცენარეების ნაწილები და ა.შ. ულვაში, ორი თვალი და შავი ცხვირი? კატა უნდა იყოს! მწვანე ფოთლები, ხის ტოტი? ჰგავს ხეს!
ვიმედოვნებ, რომ ახლავე მიიღეთ იდეა CNN– ის მუშაობის პრინციპზე. როგორც წესი, ღრმა ნერვულ ქსელს სჭირდება ათასობით სურათი და ვარჯიშის დრო (დამოკიდებულია ტექნიკაზე, რომელსაც იყენებთ ტრენინგისთვის), რათა შეიქმნას ფილტრები, რომლებიც სასარგებლოა თქვენთვის სასურველი ობიექტების ტიპების ამოცნობისთვის. მაგრამ არსებობს მალსახმობი.
მოდელს, რომელიც გაწვრთნილია მრავალი განსხვავებული ობიექტის (კატები, ძაღლები, საყოფაცხოვრებო ტექნიკა, ტრანსპორტი და სხვა) ამოცნობისთვის უკვე აქვს ბევრი სასარგებლო ფილტრი "შემუშავებული", ამიტომ ჩვენ არ გვჭირდება ის ძირითადი ფორმებისა და ნაწილების ამოცნობის შესასწავლად. ობიექტების კვლავ. ჩვენ შეგვიძლია უბრალოდ გადავარჯიშოთ ქსელის ბოლო რამდენიმე ფენა, რომ ამოიცნოს ჩვენთვის მნიშვნელოვანი ობიექტების კონკრეტული კლასები. ამას ეწოდება "სწავლის გადაცემა". თქვენ გჭირდებათ გაცილებით ნაკლები ტრენინგის მონაცემები და გამოთვალეთ დრო გადაცემის სწავლით, რადგან თქვენ ვარჯიშობთ მხოლოდ ქსელის ბოლო რამდენიმე ფენას, რომელიც შეიძლება შედგებოდეს რამდენიმე ასეული ნეირონისგან.
მშვენივრად ჟღერს, არა? ვნახოთ როგორ განვახორციელოთ იგი.
ნაბიჯი 2: მოამზადეთ თქვენი გარემო
AXeleRate– ის გამოყენების ორი გზა არსებობს: ადგილობრივად გაშვება Ubuntu აპარატზე ან Google Colab– ში. Google Colab– ში მუშაობისთვის გადახედეთ ამ მაგალითს:
გამოსახულების კლასიფიკაცია Colab Notebook
თქვენი მოდელის ადგილობრივად სწავლება და მისი ექსპორტი, რომელიც გამოიყენება აპარატურის აჩქარებით, ასევე ბევრად უფრო ადვილია.
ჩემი სამუშაო გარემო არის უბუნტუ 16.04, 64 ბიტიანი. თქვენ შეგიძლიათ გამოიყენოთ ვირტუალური მანქანა Ubuntu გამოსახულების გასაშვებად, რადგან ჩვენ არ გამოვიყენებთ GPU სასწავლო პროცესში. გარკვეული ცვლილებებით თქვენ ასევე შეგიძლიათ გაუშვათ სასწავლო სკრიპტი Windows- ზე, მაგრამ მოდელის კონვერტაციისთვის დაგჭირდებათ Linux სისტემის გამოყენება. ამრიგად, თქვენთვის სასურველი გარემო ამ გაკვეთილის შესასრულებლად არის Ubuntu 16.04, რომელიც მუშაობს მშობლიურ ან ვირტუალურ აპარატში.
დავიწყოთ მინიკონდას დაყენებით, რომელიც არის პითონის გარემოს მენეჯერი. ჩვენ შევქმნით იზოლირებულ გარემოს, ასე რომ ჩვენ შემთხვევით არაფერს შევცვლით თქვენი სისტემის პითონის გარემოში.
ჩამოტვირთეთ ინსტალერი აქ
ინსტალაციის დასრულების შემდეგ შექმენით ახალი გარემო:
conda შექმნა -n მლ პითონი = 3.7
გავააქტიუროთ ახალი გარემო
conda გააქტიურება მლ
თქვენი ბაშის გარსის წინარეფიქსი გამოჩნდება გარემოს სახელით, რაც მიუთითებს იმაზე, რომ თქვენ ახლა მუშაობთ ამ გარემოში.
ნაბიჯი 3: დააინსტალირეთ AXeleRate და გაუშვით ტესტები
დააინსტალირეთ aXeleRate თქვენს ადგილობრივ აპარატზე
pip დააინსტალირეთ git+https://github.com/AIWintermuteAI/aXeleRate
მაგალითების ჩამოსატვირთად გაუშვით:
git კლონი
თქვენ შეგიძლიათ აწარმოოთ სწრაფი ტესტები test_training.py– ით aXeleRate საქაღალდეში. ის განახორციელებს ტრენინგს და დასკვნას თითოეული მოდელის ტიპისთვის, შეინახავს და გარდაქმნის გაწვრთნილ მოდელებს. ვინაიდან ის მხოლოდ 5 ეპოქაში ვარჯიშობს და მონაცემთა ნაკრები ძალიან მცირეა, თქვენ ვერ შეძლებთ მიიღოთ სასარგებლო მოდელები, მაგრამ ეს სკრიპტი მხოლოდ შეცდომების არარსებობის შესამოწმებლად არის განკუთვნილი.
ნაბიჯი 4: გადაამზადეთ მოდელი, გადააკეთეთ Keras მოდელი.kmodel- ზე
ამ სათამაშოების მაგალითზე ჩვენ მოვამზადებთ მოდელს, რომ ამოიცნოს თოვლის ბაბუა და არდუინო უნო. ცხადია, თქვენ შეგიძლიათ აირჩიოთ სხვა კლასები. გადმოწერეთ მონაცემთა ნაკრები აქედან. შექმენით classifier.json ფაილის ასლი კონფიგურაციის საქაღალდეში, შემდეგ შეცვალეთ იგი შესაბამისად, ეკრანის სურათში კონფიგურაციის ფაილის მსგავსი - დარწმუნდით, რომ ტრენინგისა და დადასტურების საქაღალდეების გზა სწორია!
გაუშვით შემდეგი ბრძანება aXeleRate საქაღალდედან:
პითონი axelerate/train.py - c configs/santa_uno.json
დაიწყება ტრენინგი. თუ დადასტურების სიზუსტე (ჩვენი დადასტურების მეტრიკა) არ გაუმჯობესდება 20 ეპოქაში, ტრენინგი ნაადრევად შეჩერდება. ყოველ ჯერზე, როდესაც დადასტურების სიზუსტე უმჯობესდება, მოდელი ინახება პროექტის საქაღალდეში. ტრენინგის დასრულების შემდეგ, aXeleRate ავტომატურად გარდაქმნის საუკეთესო მოდელს განსაზღვრულ ფორმატებში - თქვენ შეგიძლიათ აირჩიოთ "tflite", "k210" ან "edgetpu".
ნაბიჯი 5: გაუშვით მოდელი Sipeed Maix Bit– ზე
მოდელის გაშვების ორი გზა არსებობს Sipeed Maix აპარატურაზე: მიკროპითონის firmware და Arduino IDE. მიკროპითონის აპარატურა უფრო ადვილია გამოსაყენებლად, მაგრამ ის იკავებს არსებული მეხსიერების მნიშვნელოვან ნაწილს, ამიტომ მოდელისთვის ნაკლები სივრცეა დარჩენილი. Arduino IDE არის ძირითადად C კოდი, რომელიც გაცილებით ეფექტურია და აქვს მცირე მეხსიერების კვალი. ჩემი მოდელი არის მხოლოდ 1.9 Mb, ამიტომ ორივე ვარიანტი მუშაობს მასზე. თქვენ შეგიძლიათ გამოიყენოთ 2.9 მბ მოდელი Micropython– ით, უფრო დიდი ზომისთვის თქვენ უნდა გაითვალისწინოთ Arduino IDE– ს გამოყენება.
ჩამოტვირთეთ OpenMV IDE აქედან და მინიმალური მიკროპითონის firmware აქედან.
ჩაწერეთ firmware kflash_gui ინსტრუმენტით. თქვენ ასევე შეგიძლიათ ჩაწეროთ გაწვრთნილი მოდელი, რომელიც ასევე ანათებს, როგორც ეს ნაჩვენებია სკრინშოტში. ან დააკოპირეთ ის SD ბარათზე (ამ შემთხვევაში. დააკოპირეთ.kmodel SD ბარათის ძირში და ჩადეთ SD ბარათი Sipeed Maix Bit– ში)
გახსენით OpenMV IDE და დააჭირეთ ღილაკს დაკავშირება. გახსენით santa_uno.py სკრიპტი example_scripts საქაღალდედან და დააჭირეთ ღილაკს დაწყება. თქვენ უნდა ნახოთ პირდაპირი სტრიმინგი კამერიდან და სერიული ტერმინალის გახსნისას თქვენ გახდებით გამოსახულების ამოცნობის უმაღლესი შედეგი ნდობის ქულით!
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- ისა და კერასის გამოყენებით სწავლების გადაცემის დიდი ახსნა, ეს სამეურვეო იყენებს ამ მუხლის კოდის შეცვლილ ვერსიას.
კატები და ძაღლები და კონვოლუციური ნერვული ქსელები განმარტავს საფუძვლებს CNN– ების უკან და ვიზუალიზაციას უკეთებს ზოგიერთ ფილტრს. კატებთან ერთად!
ივარჯიშეთ, გადაიყვანეთ, გაუშვით MobileNet Sipeed MaixPy– ზე და MaixDuino– ზე! სამეურვეო პროგრამა Sipeed– ისგან, თუ როგორ უნდა მოამზადოთ Mobilenet 1000 კლასი ნულიდან (არ არის გადაცემის სწავლა). შეგიძლიათ ჩამოტვირთოთ მათი წინასწარ მომზადებული მოდელი და სცადოთ!
ვიმედოვნებ, რომ თქვენ შეძლებთ გამოიყენოთ არსებული ცოდნა მანქანების ხედვის გასაოცარი პროექტების შესაქმნელად! თქვენ შეგიძლიათ შეიძინოთ Sipeed დაფები აქ, ისინი ერთ – ერთი ყველაზე იაფი ვარიანტია ML– სთვის, რომელიც ხელმისაწვდომია ჩაშენებულ სისტემებზე.
გირჩევთ:
ობიექტის გამოვლენა Sipeed MaiX დაფებით (Kendryte K210): 6 ნაბიჯი
ობიექტის გამოვლენა Sipeed MaiX დაფებით (Kendryte K210): როგორც ჩემი წინა სტატიის გაგრძელება Sipeed MaiX დაფებით გამოსახულების ამოცნობის შესახებ, გადავწყვიტე დავწერო სხვა გაკვეთილი, რომელიც ფოკუსირებული იქნებოდა ობიექტების გამოვლენაზე. ცოტა ხნის წინ გამოჩნდა რამდენიმე საინტერესო ტექნიკა Kendryte K210 ჩიპით, მათ შორის S
Opencv სახის ამოცნობა, სწავლება და ამოცნობა: 3 ნაბიჯი
Opencv სახის ამოცნობა, სწავლება და ამოცნობა: OpenCV არის ღია კოდის კომპიუტერული ხედვის ბიბლიოთეკა, რომელიც ძალიან პოპულარულია გამოსახულების დამუშავების ძირითადი ამოცანების შესასრულებლად, როგორიცაა დაბინდვა, სურათის შერწყმა, სურათის გაძლიერება, ასევე ვიდეოს ხარისხი, ბარიერი და ა.შ. სურათის დამუშავების გარდა, ეს პროვოცირებს
სახის ამოცნობა და ამოცნობა - Arduino Face ID OpenCV პითონისა და Arduino– ს გამოყენებით .: 6 ნაბიჯი
სახის ამოცნობა და ამოცნობა | Arduino Face ID OpenCV პითონისა და არდუინოს გამოყენებით: სახის ამოცნობა AKA face ID არის ერთ -ერთი ყველაზე მნიშვნელოვანი ფუნქცია მობილურ ტელეფონებზე დღეს. ასე რომ, მე მქონდა შეკითხვა " შემიძლია ვიპოვო სახის ID ჩემი Arduino პროექტისთვის " და პასუხი არის დიახ … ჩემი მოგზაურობა დაიწყო შემდეგნაირად: ნაბიჯი 1: ჩვენთან წვდომა
სურათის ამოცნობა TensorFlow ჟოლოს პიზე: 6 ნაბიჯი
სურათის ამოცნობა TensorFlow– ით ჟოლოს პიზე: Google TensorFlow არის ღია კოდის პროგრამული ბიბლიოთეკა რიცხვითი გამოთვლებისთვის, მონაცემთა ნაკადის გრაფიკების გამოყენებით. მას Google იყენებს მანქანათმცოდნეობისა და ღრმა სწავლების ტექნოლოგიების სხვადასხვა სფეროში. TensorFlow თავდაპირველად შეიქმნა Google Brai– ს მიერ
სახის ამოცნობა+ამოცნობა: 8 ნაბიჯი (სურათებით)
სახის გამოვლენა+ამოცნობა: ეს არის მარტივი ამოცანა სახის გამოვლენისა და ამოცნობის შესახებ OpenCV კამერით. შენიშვნა: მე გავაკეთე ეს პროექტი სენსორული კონკურსისთვის და გამოვიყენე კამერა, როგორც სენსორი თვალყურის დევნისა და აღიარების სახეებისთვის. ასე რომ, ჩვენი მიზანი ამ სესიაზე, 1. დააინსტალირეთ ანაკონდა