Სარჩევი:

AI კამერა Raspberry Pi/Arduino– სთვის: 7 ნაბიჯი
AI კამერა Raspberry Pi/Arduino– სთვის: 7 ნაბიჯი

ვიდეო: AI კამერა Raspberry Pi/Arduino– სთვის: 7 ნაბიჯი

ვიდეო: AI კამერა Raspberry Pi/Arduino– სთვის: 7 ნაბიჯი
ვიდეო: How to use 4 channel Relay to control AC load with Arduino code 2024, ნოემბერი
Anonim
Image
Image

თუ თქვენ ბოლო დროს ადევნებთ თვალყურს ახალ ამბებს, იყო აფეთქება დამწყებებისთვის, რომლებიც ავითარებდნენ ჩიპებს ML (მანქანური სწავლების) ალგორითმების დასკვნის და სწავლების დასაჩქარებლად. თუმცა, ამ ჩიპების უმეტესობა ჯერ კიდევ დამუშავების პროცესშია და არა ის, რაც თქვენს საშუალო მწარმოებელს შეუძლია ხელში აიყვანოს. ჯერჯერობით ერთადერთი მნიშვნელოვანი გამონაკლისი იყო Intel Movidius Neural Compute Stick, რომელიც ხელმისაწვდომია შესყიდვისთვის და გააჩნია კარგი SDK. მას აქვს რამდენიმე მნიშვნელოვანი მინუსი - კერძოდ ფასი (დაახლოებით 100 აშშ დოლარი) და ის ფაქტი, რომ იგი მოდის USB სტიკტის ფორმატში. მშვენიერია თუ გსურთ მისი გამოყენება ლეპტოპთან ან ჟოლოს PI– ით, მაგრამ რა მოხდება, თუ გსურთ სურათების ამოცნობის პროექტების გაკეთება Arduino– სთან ერთად? თუ ჟოლო პი ნულოვანი?

ნაბიჯი 1: Sipeed MAix: AI ზღვარზე

Sipeed MAix: AI ზღვარზე
Sipeed MAix: AI ზღვარზე

არც ისე დიდი ხნის წინ მე მივიღე ხელი Sipeed M1w K210 განვითარების დაფაზე, რომელსაც აქვს ორმაგი ბირთვიანი RISC-V 64 ბიტიანი პროცესორი და გამოირჩევა ბორტ KPU (ნერვული ქსელის პროცესორი), სპეციალურად შექმნილია CNN– ის დაჩქარების მიზნით გამოსახულების დამუშავებისთვის. უფრო დეტალურად შეგიძლიათ წაიკითხოთ აქ.

ამ დაფის ფასმა გულწრფელად გამაოგნა, ეს არის მხოლოდ 19 აშშ დოლარი სრულფასოვანი AI-on-the-edge განვითარების დაფისთვის Wi-Fi მხარდაჭერით! თუმცა არის გაფრთხილება (რა თქმა უნდა არის): დაფის მიკროპითონის ფირმა ჯერ კიდევ დამუშავების პროცესშია და საერთო ჯამში ის ჯერჯერობით არც ისე მოსახერხებელია. მისი ყველა ფუნქციის წვდომის ერთადერთი გზა არის ჩაწეროთ თქვენი საკუთარი ჩაშენებული C კოდი ან შეცვალოთ ზოგიერთი არსებული დემო.

ეს გაკვეთილი განმარტავს, თუ როგორ გამოიყენოთ Mobilenet 20 კლასის გამოვლენის მოდელი ობიექტების აღმოსაჩენად და გამოგზავნილი ობიექტის კოდის გაგზავნისთვის UART– ით, საიდანაც მისი მიღება შესაძლებელია Arduino/Raspberry Pi– ს მიერ.

ახლა, ეს სამეურვეო ვარაუდობს, რომ თქვენ იცნობთ Linux- ს და C კოდის შედგენის საფუძვლებს. თუ ამ ფრაზის მოსმენამ ცოტა თავბრუსხვევა შეგიქმნათ:) მაშინ უბრალოდ გადადით მე –4 ნაბიჯზე, სადაც ატვირთავთ ჩემს წინასწარ აშენებულ ორობებს Sipeed M1– ში და გამოტოვებთ შედგენას.

ნაბიჯი 2: მოამზადეთ თქვენი გარემო

მოამზადეთ თქვენი გარემო
მოამზადეთ თქვენი გარემო

მე გამოვიყენე Ubuntu 16.04 C კოდის შედგენისა და ატვირთვისთვის. შესაძლებელია ამის გაკეთება Windows- ში, მაგრამ მე თვითონ არ მიცდია.

ჩამოტვირთეთ RISC-V GNU Compiler Toolchain, დააინსტალირეთ ყველა საჭირო დამოკიდებულება.

git clone-რეკურსიული

sudo apt-get ინსტალაცია autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev

გადმოწერეთ გადმოწერილი ინსტრუმენტთა ქსელი /opt დირექტორია. ამის შემდეგ გაუშვით შემდეგი ბრძანებები

./configure --prefix =/opt/kendryte-toolchain-with-cmodel = medany

გააკეთოს

დაამატეთ/აირჩიე/kendryte-toolchain/bin თქვენს PATH– ში ახლა.

თქვენ უკვე მზად ხართ შეადგინოთ კოდი!

ნაბიჯი 3: შეადგინეთ კოდი

შეადგინეთ კოდი
შეადგინეთ კოდი

ჩამოტვირთეთ კოდი ჩემი github საცავიდან.

ჩამოტვირთეთ Kendryte K210 დამოუკიდებელი SDK

დააკოპირეთ /kpu საქაღალდე ჩემი github საცავიდან /src საქაღალდეში SDK– ში.

შეასრულეთ შემდეგი ბრძანებები SDK საქაღალდეში (არა /src საქაღალდე!)

mkdir build && cd build

cmake.. -DPROJ = პროექტის_სახელი -DTOOLCHAIN =/opt/kendryte -toolchain/bin && make

სადაც project_name არის თქვენი პროექტის სახელი (თქვენზეა დამოკიდებული) და -DTOOLCHAIN = უნდა მიუთითებდეს თქვენი risc -v ინსტრუმენტთა ქსელის ადგილმდებარეობას (თქვენ გადმოწერეთ ეს lst ნაბიჯი, გახსოვთ?)

დიდი! ახლა იმედია ნახავთ შედგენას შეცდომების გარეშე დასრულებული და თქვენ გაქვთ.bin ფაილი, რომლის ატვირთვაც შეგიძლიათ.

ნაბიჯი 4:.bin ფაილის ატვირთვა

. Bin ფაილის ატვირთვა
. Bin ფაილის ატვირთვა

ახლა დააკავშირეთ თქვენი Sipeed M1 კომპიუტერთან და /build საქაღალდედან გაუშვით შემდეგი ბრძანება

sudo python3 isp_auto.py -d /dev /ttyUSB0 -b 200000 kpu.bin

სადაც kpu.bin არის თქვენი.bin ფაილის სახელი

ატვირთვას ჩვეულებრივ 2-3 წუთი სჭირდება, მას შემდეგ რაც დაასრულებთ თქვენ იხილავთ დაფას, რომელიც მუშაობს 20 კლასის ამოცნობაზე. ჩვენთვის ბოლო ნაბიჯი არის მისი დაკავშირება Arduino მეგასთან ან ჟოლოს პითან.

!!! თუ თქვენ უბრალოდ წამოხვედით მე –2 საფეხურიდან !

გაუშვით შემდეგი ბრძანება საქაღალდედან, სადაც კლონირებული გაქვთ ჩემი github საცავი

sudo python3 isp_auto.py -d /dev /ttyUSB0 -b 200000 kpu_bin.bin

ატვირთვას ჩვეულებრივ 2-3 წუთი სჭირდება, მას შემდეგ რაც დაასრულებთ თქვენ იხილავთ დაფას, რომელიც მუშაობს 20 კლასის ამოცნობაზე. ჩვენთვის ბოლო ნაბიჯი არის მისი დაკავშირება Arduino მეგასთან ან ჟოლოს პითან.

ნაბიჯი 5: დაკავშირება არდუინოსთან

არდუინოსთან დაკავშირება
არდუინოსთან დაკავშირება
არდუინოსთან დაკავშირება
არდუინოსთან დაკავშირება
არდუინოსთან დაკავშირება
არდუინოსთან დაკავშირება

მე გამოვიყენე Arduino Mega ერთად Seeed Studio Mega Shield– ით, ამიტომაც გავამყარე Grove– ის კონექტორი Sipeed M1 დაფაზე. თუმცა თქვენ შეგიძლიათ უბრალოდ გამოიყენოთ ჯამპერის მავთულები და დააკავშიროთ Sipeed M1 პირდაპირ Arduino Mega– ს, ამ გაყვანილობის დიაგრამის შემდეგ.

ამის შემდეგ ატვირთეთ camera.ino ესკიზი და გახსენით სერიული მონიტორი. როდესაც კამერას მიანიშნებთ სხვადასხვა ობიექტზე (20 კლასის სია არის ესკიზში) მან უნდა მიუთითოს კლასის სახელი სერიულ მონიტორზე!

გილოცავთ! თქვენ უკვე გაქვთ გამოსახულების ამოცნობის მოდული თქვენი Arduino– სთვის!

ნაბიჯი 6: ჟოლოს პითან დაკავშირება

ჟოლოს პითან დაკავშირება
ჟოლოს პითან დაკავშირება
ჟოლოს პითან დაკავშირება
ჟოლოს პითან დაკავშირება

მე გამოვიყენე Grove Pi+ ქუდი Raspberry Pi 2B– სთვის, მაგრამ ისევ და ისევ, როგორც Arduino– სთან ერთად, თქვენ შეგიძლიათ პირდაპირ დაუკავშიროთ Sipeed M1 Raspberry Pi– ს UART ინტერფეისს ამ გაყვანილობის დიაგრამის შემდეგ.

კამერის_სპეკ.პის გაშვების და კამერის სხვადასხვა ობიექტებისკენ მიმართვის შემდეგ, ტერმინალი გამოაქვეყნებს შემდეგ ტექსტს "მე ვფიქრობ, რომ ეს არის" და ასევე თუ თქვენ გაქვთ დინამიკები დაკავშირებული, ის ამ ფრაზას ხმამაღლა იტყვის. საკმაოდ მაგარია, არა?

ნაბიჯი 7: დასკვნა

ეს არის ძალიან მნიშვნელოვანი დრო, როდესაც ჩვენ ვცხოვრობთ, როდესაც ინტელექტი და მანქანათმცოდნეობა აღწევს ჩვენი ცხოვრების ყველა სფეროს. მე ველოდები განვითარებას ამ სფეროში. მე ვაგრძელებ კონტაქტს Sipeed– ის გუნდთან და ვიცი, რომ ისინი აქტიურად ქმნიან მიკროპითონის გარსს ყველა საჭირო ფუნქციისთვის, მათ შორის CNN– ის დაჩქარებისთვის.

როდესაც ის მზად იქნება, მე გამოვაქვეყნებ უფრო მეტ ინსტრუქციას, თუ როგორ გამოიყენოთ თქვენი საკუთარი CNN მოდელები მიკროპითონთან ერთად. დაფიქრდით ყველა იმ საინტერესო პროგრამაზე, რომელიც შეიძლება გქონდეთ დაფაზე, რომელსაც შეუძლია აწარმოოს საკუთარი გამოსახულების დამუშავების ნერვული ქსელები ამ ფასად და ამ ნაკვალევით!

გირჩევთ: