Სარჩევი:
- ნაბიჯი 1: მოთხოვნები
- ნაბიჯი 2: მონაცემთა მომზადება
- ნაბიჯი 3: Pi კამერის პროგნოზების განხორციელება
- ნაბიჯი 4: Arduino Robot
- ნაბიჯი 5: ტესტირება
- ნაბიჯი 6: ყველა დამატებითი ფაილი
ვიდეო: ჟოლო Pi 4 საგზაო ნიშნის ამოცნობის რობოტი: 6 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:17
ეს ინსტრუქცია ემყარება ჩემს უნივერსიტეტის პროექტს. მიზანი იყო სისტემის შექმნა, სადაც ნერვული ქსელი აანალიზებს სურათს და შემდეგ აღიარების საფუძველზე ეუბნება არდუინოს რობოტს როსზე გადაადგილება.
მაგალითად, თუ მოტრიალების მარჯვენა ნიშანი აღიარებულია, მაშინ რობოტი მოუხვევს მარჯვნივ, თუ მოუხვევს მარცხენა ნიშანი, მაშინ რობოტი მოუხდება მარცხნივ, თუ არცერთი არ არის აღიარებული, მაშინ რობოტი განაგრძობს წინსვლას. მონაცემთა ნაკრები, რომელიც გამოყენებული იქნება, არის ოფიციალური საგზაო ნიშნის ამოცნობა INI– დან (2019) (Institut Fur Neuroinformatik), ამ მონაცემთა ნაკრებს აქვს 43 კლასი, თუმცა საჭიროა მხოლოდ ორი; მონაცემთა ნაკრებში 00033 და 00034 საქაღალდე არის მარცხენა და მარჯვენა მოსახვევის ნიშნები.
ნაბიჯი 1: მოთხოვნები
ამ პროექტის მოთხოვნები შემდეგია:
არდუინოს რობოტი. (ძირითადად arduino uno, ძრავის მძღოლი და ძრავები) (არ არის საჭირო თუ არ იყენებთ რობოტს)
ჟოლო პი 4.
პი კამერა.
საჭირო პროგრამული უზრუნველყოფა:
პითონი 3.
OpenCV 4.
Tensorflow.
arduino IDE (არ არის საჭირო, თუ არ იყენებთ რობოტს)
როსი (არ არის საჭირო, თუ რობოტს არ იყენებთ)
როგორიც არ უნდა იყოს თქვენი საყვარელი პითონის იდეა (ჟოლოს პიზე, მე ვიყენებ ტონს).
OpenCV და Tensorflow დასაყენებლად მიჰყევით ადრიანის მითითებებს. ბმული:
მე გირჩევთ ნახოთ რაც შეიძლება მეტი მისი გაკვეთილი, ისინი მართლაც საინტერესოა და სასარგებლოა როგორც დამწყებთათვის, ასევე შუალედებისთვის.
ნაბიჯი 2: მონაცემთა მომზადება
მატარებლის სკრიპტი შექმნილია მონაცემთა ბაზაში წვდომისათვის, რომელიც აერთიანებს დაახლოებით 50 000 სურათს 43 კლასიდან. სკრიპტი დაწერილია პითონში, სხვადასხვა ბიბლიოთეკების გამოყენებით: os - ეს არის პითონის სკრიპტის დასაკავშირებლად იმ სწორ დირექტორიასთან, სადაც მონაცემთა ნაკრები მდებარეობს. Matplotlib - ეს არის სასწავლო მოდელის მონაცემების ჩვენება. Tensorflow და keras - ეს არის ბიბლიოთეკები, რომლებიც გამოიყენება ხელოვნური ნერვული ქსელის მოდელის შესაქმნელად, ისინი გამოიყენება მოდელის შესაქმნელად. Numpy - ეს ბიბლიოთეკა არის სურათების მასივად გადაქცევისთვის, რომელიც შემდგომში შეიძლება მოდელის საშუალებით იქნას მიღებული პროგნოზის მისაღებად.
თანდართული სკრიპტი არის მონაცემთა ნაკრებიდან მოდელის დამზადების პითონის კოდი. ეს შედგება კონვოლუციური 2D (5, 5) შეყვანისა და რელუს გააქტიურებით შემდეგ გაერთიანებით, მას შემდეგ რაც ეს კეთდება შეყვანა გადის სხვა კონვოლუციაში (3, 3) შეყვანის იგივე გააქტიურებითა და გაერთიანებით. ეს ხდება ბოლოჯერ გაბრტყელებამდე და შემდეგ სიმკვრივე გამოიყენება კლასების რაოდენობაზე, ამ შემთხვევაში 43.
შემდეგი ნაბიჯი იყო მოდელის შედგენა. ეს არის ნაწილი, რომელიც ადგენს ოპტიმიზატორს, sgd იყო ყველაზე მორგებული, ვინაიდან ეს იყო მსგავსი დავალებაში გამოყენებული ოპტიმიზატორისა. Sgd ნიშნავს სტოქასტური გრადიენტის წარმოშობას. ასევე შემდგენლის შიგნით საჭიროა ზარალის დადგენა, იშვიათი_კატეგორიული_კროსენტროპიული ზარალის არჩევა საუკეთესოა, რადგან კატეგორიები არის მთელი რიცხვები და მოდელი გამოაქვეყნებს თითოეულ კლასს პროგნოზს, როგორც მცურავი 0 -დან 1.1 -მდე 100% სიზუსტით.
შემდგენლის დასრულების შემდეგ, გენერატორი უნდა იქნას გამოყენებული მოდელისთვის სურათის შეყვანის დამუშავების დასაწყებად. გენერატორი შედგება რამოდენიმე ნაწილისგან: training_set - ეს არის ტრენინგისთვის გამოყენებული მონაცემთა ნაკრები, ნაბიჯები_ per_epoch - ეს არის რიცხვითი ნაბიჯები თითო ეპოქაში, რომლებიც საჭიროა, ეპოქები - ეს არის რამდენჯერ გაიმეორებს პროგრამა მონაცემთა სრულ ნაკრებებს, validation_data - ეს არის ბმული გადამოწმებისათვის გამოყენებული მონაცემთა ნაკრებისთვის, validation_steps - ვალიდაციისათვის გამოყენებული ნაბიჯების რაოდენობა, ვალიდაცია ხდება ყოველი ეპოქის ბოლოს.
საერთოდ, მთლიანი მონაცემთა ნაკრების სრული გაწმენდა უნდა დასრულდეს ყოველ ეპოქაში. ასე რომ, მაგალითად, 1024 სურათის მონაცემთა ნაკრები მოითხოვს: სურათების ზომა = 32, ნაბიჯები ეპოქაში = 32, ეპოქები = 1. თითოეული საფეხური მოიცავს მთლიანი სურათების ზომას, ასე რომ 32 -იანი სურათის ზომა ნაბიჯები იქნება 32. მეორეს ხელით, უმჯობესია გქონდეთ უფრო დიდი პარტიის ზომა, ვიდრე კლასების რაოდენობა, ეს იმიტომ ხდება, რომ თუ სურათების ზომა უფრო მცირეა, თითოეული ნაბიჯი არ შეიძლება შეიცავდეს გამოსახულებას თითოეული კლასიდან.
მას შემდეგ რაც მოდელმა დაასრულა სწავლება, matplotlib– ის გამოყენებით პროგრამა გააკეთებს შედეგების გრაფიკს, ეს გვიჩვენებს სწავლების ისტორიას თავიდან ბოლომდე. გრაფიკი შედგება სიზუსტისგან, დადასტურების სიზუსტისგან, ზარალისგან და ვალიდაციის დაკარგვისგან, ეს არის გაყოფილი თითო ეპოქაში, რათა ნახოთ თუ როგორ მიმდინარეობდა სწავლება. დასკვნითი ეტაპი არის მოდელის შენახვა.h5 ფაილის სახით, რომელზე წვდომაც შემდგომში შესაძლებელია პროგნოზირების პროცესისთვის. მოდელის შენახვა ნიშნავს იმას, რომ ყოველ ჯერზე პროგნოზირების პროგრამა გაშვებულია, სასწავლო პროგრამას აღარ სჭირდება გაშვება. სასწავლო პროგრამას შეიძლება დასჭირდეს 10 წუთი ერთ ეპოქაზე ჟოლოს პიზე.
თან ერთვის სასწავლო სკრიპტი:
ნაბიჯი 3: Pi კამერის პროგნოზების განხორციელება
შემდეგი პროგრამა არის პროგნოზირების და გამომცემლის სკრიპტი.
პირველი ეტაპი არის მოდელის ჩატვირთვა model.load () გამოყენებით. მეორე ეტაპი არის pi კამერის ჩარჩოების გამეორება opencv გამოყენებით და შემდეგ ჩარჩოს ზომის შეცვლა იმავე ზომის, როგორც სასწავლო ეტაპზე გამოყენებული შეყვანის ზომები, 32 x 32 პიქსელი. მას შემდეგ რაც ეს მოხდება ახალი ზომის შეცვლა ხდება მოდელის გამოყენებით მოდელით. პირველი ელემენტი არის კლასი პირველი და რიცხვი არის პროგნოზი იმის შესახებ, თუ რამდენად დარწმუნებულია გამოსახულება ამ კლასიდან. Მაგალითად.
შენიშვნა: თუ თქვენ არ იყენებთ რობოტის მხარეს. უბრალოდ წაშალეთ ხაზები:
"შემოტანა rospy"
def სპიკერი (მიმართულება):
შეტყობინება = სიმებიანი ()
pub = rospy. Publisher ('robot', String, queue_size = 10)
rospy.init_node ('მოსაუბრე', ანონიმური = ჭეშმარიტი)
შეტყობინება = მიმართულება
rospy.loginfo (შეტყობინება)
pub.publish (შეტყობინება)"
"მოსაუბრე (მიმართულება)"
ერთვის Pi კამერის სკრიპტი.
ნაბიჯი 4: Arduino Robot
ბოლო ნაბიჯი არის რობოტის პროგრამის სკრიპტი.
ეს არის დაწერილი C ++ და არის.ino ფაილი arduino uno– სთვის. პროგრამა მოითხოვს ros ბიბლიოთეკას, რომელიც შეგიძლიათ იხილოთ ბიბლიოთეკების მენეჯერში იდეის ფარგლებში. მას შემდეგ, რაც ეს იმპორტირდება, არის ფაილების მაგალითი, მე ავირჩიე გაფართოება led blink ფაილზე, რადგან ეს გააკეთებდა მსგავს მიზანს, რაც მჭირდებოდა. პროგრამა აგრძელებს მარყუჟს სანამ ძალა არ გათიშულია, პირველ რიგში ის უსმენს რობოტის თემას, როდესაც ის იჭერს ბრძანებას ამ თემიდან მას ექნება if განცხადება რომ ნახოთ რას ამბობს ბრძანება. თუ ბრძანება დარჩა, მაშინ სკრიპტი მუშაობს მარცხენა მოსახვევის მეთოდით, თუ ბრძანება სწორია, ის ატრიალებს მარჯვნივ შემობრუნების მეთოდს და სხვაგვარად გაუშვებს წინსვლის მეთოდს. ეს სამი მეთოდი ძალიან ჰგავს ერთმანეთს, ისინი ციფრულ ქინძისთავებს ეუბნებიან იყოს LOW (ადგილზე) ან 100 (PWM) ეს არის იმისთვის, რომ რობოტი არ იყოს ძალიან სწრაფი, როდესაც ეუბნება ძრავის მძღოლს მხოლოდ ცოტაოდენი ძაბვა გამოვიდა. ამ შედეგების თანმიმდევრობა არის ის, რაც რობოტს აქცევს მარცხნივ და მარჯვნივ ან წინ მიდის, ეს განპირობებულია ძრავებზე ძაბვის ორიენტაციით.
ერთვის arduino– ს.ino სკრიპტი.
ნაბიჯი 5: ტესტირება
სურათები თან ერთვის პროექტს თავიდან ბოლომდე. პირველი სურათი გვიჩვენებს სწავლების პროცესს. ამის დასრულების შემდეგ ნაჩვენებია ნაბეჭდი მოდელიდან. მესამე სურათი გვიჩვენებს წინასწარმეტყველებას სასწავლო სკრიპტიდან. ეს არის სასწავლო სკრიპტის ბოლო ეტაპი. თუ გადახედავთ სასწავლო სკრიპტის საქაღალდეში, გაკეთებულია გრაფიკი და მოდელი. გრაფიკი აქ უნდა გამოიყურებოდეს მე -4 სურათზე, ეს გვიჩვენებს ტრენინგის ისტორიას თავიდან ბოლომდე.
საბოლოო სურათი არის pi კამერის სკრიპტის გაშვებისას, ეს არის პი კამერის პირდაპირი ნაკადი. პროგნოზი კეთდება თითოეულ ჩარჩოზე და პროგნოზი იბეჭდება ტერმინალში. ჩარჩო გვიჩვენებს რასაც კამერა ხედავს.
თანდართულია ჩემი უნივერსიტეტის ანგარიში ამ პროექტისათვის. გთხოვთ წაიკითხოთ უფრო დეტალურად პროექტის შესახებ.
ნაბიჯი 6: ყველა დამატებითი ფაილი
ზოგიერთი მათგანი იყო ტესტირების ფაილი, რომელიც მე შევქმენი გზაზე.
გირჩევთ:
დაბალანსებული რობოტი / 3 ბორბლიანი რობოტი / STEM რობოტი: 8 ნაბიჯი
დაბალანსებული რობოტი / 3 ბორბლიანი რობოტი / STEM რობოტი: ჩვენ შევქმენით კომბინირებული ბალანსირების და 3 ბორბლიანი რობოტი სკოლებში საგანმანათლებლო გამოყენებისთვის და სკოლის შემდგომ საგანმანათლებლო პროგრამებისთვის. რობოტი დაფუძნებულია Arduino Uno– ზე, საბაჟო ფარზე (კონსტრუქციის ყველა დეტალი მოცემულია), Li Ion ბატარეის პაკეტზე (ყველა კონსტრუქცია
[არდუინოს რობოტი] როგორ გავაკეთოთ მოძრავი გადაღების რობოტი - ცერა თითის რობოტი - სერვო ძრავა - წყაროს კოდი: 26 ნაბიჯი (სურათებით)
[არდუინოს რობოტი] როგორ გავაკეთოთ მოძრავი გადაღების რობოტი | ცერა თითის რობოტი | სერვო მოტორი | წყაროს კოდი: Thumbs Robot. გამოყენებული იქნა MG90S სერვო ძრავის პოტენომეტრი. ეს არის ძალიან სახალისო და მარტივი! კოდი ძალიან მარტივია. ეს მხოლოდ 30 სტრიქონია. როგორც ჩანს მოძრაობის გადაღება. გთხოვთ დატოვოთ ნებისმიერი შეკითხვა ან გამოხმაურება! [ინსტრუქცია] წყაროს კოდი https: //github.c
მეგზური რობოტი ხმის ამოცნობის ფუნქციით: 7 ნაბიჯი (სურათებით)
მეგზური რობოტი ხმის ამოცნობის მახასიათებლით: მეგზური რობოტი არის მობილური რობოტი, რომელიც ჩვენ შევქმენით ჩვენს კოლეჯის კამპუსში არსებული სხვადასხვა განყოფილებების ვიზიტორების დასახმარებლად. ჩვენ შევძელით რამდენიმე წინასწარ განსაზღვრული განცხადების თქმა და წინ და უკან შემავალი ხმის მიხედვით. ჩვენს კოლეჯში ჩვენ გვაქვს
ჟოლო ჟოლო Pi (12 თავი) (სურათებით)
შესავალი ჟოლოს (უთავო) ჟოლოში: ბოლოს და ბოლოს! გამოიყენეთ თქვენი Raspberry Pi ისე, რომ არ დახარჯოთ ის, რაც სამუდამოდ აკავშირებს გარე პერიფერიულ მოწყობილობებს და გაუმკლავდებით საკაბელო სისულელეს: დააკონფიგურირეთ თქვენი Pi, რომ იყოს უთავო! (არა საშინელი) მაგრამ ეს განსაკუთრებით გამოსადეგია მათთვის, ვინც ასწავლის
VRBOT (ხმის ამოცნობის რობოტი): 10 ნაბიჯი (სურათებით)
VRBOT (ხმის ამოცნობის რობოტი): ამ ინსტრუქციაში ჩვენ შევქმნით რობოტს (უფრო მეტად RC მანქანას), რომელსაც აკონტროლებს ხმა, ანუ ხმის ამოცნობა. სანამ სხვა დეტალების გადმოცემას დავიწყებ, უნდა იცოდე, რომ ეს არის ხმის ამოცნობა და არა მეტყველების ამოცნობა, რაც ნიშნავს