สารบัญ:
- ขั้นตอนที่ 1: Sipeed MAix: AI ที่ Edge
- ขั้นตอนที่ 2: เตรียมสภาพแวดล้อมของคุณ
- ขั้นตอนที่ 3: รวบรวมรหัส
- ขั้นตอนที่ 4: การอัปโหลดไฟล์.bin
- ขั้นตอนที่ 5: การเชื่อมต่อกับ Arduino
- ขั้นตอนที่ 6: การเชื่อมต่อกับ Raspberry Pi
- ขั้นตอนที่ 7: บทสรุป
วีดีโอ: กล้อง AI สำหรับ Raspberry Pi/Arduino: 7 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:06
หากคุณติดตามข่าวเมื่อไม่นานนี้ มีการระเบิดของสตาร์ทอัพที่กำลังพัฒนาชิปสำหรับการอนุมานและการฝึกอบรมอัลกอริธึม ML (แมชชีนเลิร์นนิง) อย่างไรก็ตาม ชิปเหล่านั้นส่วนใหญ่ยังอยู่ระหว่างการพัฒนา และไม่ใช่สิ่งที่ผู้ผลิตทั่วไปของคุณสามารถรับมือได้ ข้อยกเว้นที่สำคัญเพียงอย่างเดียวคือ Intel Movidius Neural Compute Stick ซึ่งมีให้ซื้อและมาพร้อมกับ SDK ที่ดี มันมีข้อเสียที่สำคัญบางประการ นั่นคือราคา (ประมาณ 100 USD) และความจริงที่ว่ามันมาในรูปแบบ USB stick ดีมากถ้าคุณต้องการใช้กับแล็ปท็อปหรือ Raspberry PI แต่ถ้าคุณต้องการทำโครงการจดจำภาพด้วย Arduino หรือ Raspberry Pi Zero?
ขั้นตอนที่ 1: Sipeed MAix: AI ที่ Edge
ไม่นานมานี้ฉันได้ใช้บอร์ดพัฒนา Sipeed M1w K210 ซึ่งมีซีพียู RISC-V 64 บิตแบบดูอัลคอร์และมี KPU ออนบอร์ด (Neural Network Processor) ที่ออกแบบมาโดยเฉพาะสำหรับการเร่ง CNN สำหรับการประมวลผลภาพ คุณสามารถอ่านรายละเอียดเพิ่มเติมได้ที่นี่
ราคาของบอร์ดนี้ทำให้ฉันตกใจจริงๆ เพียง 19 USD สำหรับบอร์ดพัฒนา AI-on-the-edge ที่เต็มเปี่ยมด้วยการสนับสนุน Wi-Fi! มีข้อแม้ (แน่นอนว่ามี): เฟิร์มแวร์ micropython สำหรับบอร์ดยังอยู่ในระหว่างการพัฒนา และโดยรวมแล้ว ยังไม่เป็นมิตรกับผู้ใช้มากนัก ณ ตอนนี้ วิธีเดียวที่จะเข้าถึงฟังก์ชันทั้งหมดได้ในตอนนี้คือการเขียนโค้ด C แบบฝังของคุณเองหรือแก้ไขการสาธิตที่มีอยู่บางส่วน
บทช่วยสอนนี้อธิบายวิธีใช้โมเดลการตรวจจับคลาส Mobilenet 20 เพื่อตรวจจับวัตถุและส่งรหัสวัตถุที่ตรวจพบผ่าน UART จากตำแหน่งที่ Arduino/Raspberry Pi สามารถรับได้
ตอนนี้ บทช่วยสอนนี้ถือว่าคุณคุ้นเคยกับ Linux และพื้นฐานการคอมไพล์โค้ด C แล้ว หากได้ยินวลีนี้ทำให้คุณเวียนหัวเล็กน้อย:) ให้ข้ามไปยังขั้นตอนที่ 4 ซึ่งคุณอัปโหลดไบนารีที่สร้างไว้ล่วงหน้าไปยัง Sipeed M1 และข้ามการรวบรวม
ขั้นตอนที่ 2: เตรียมสภาพแวดล้อมของคุณ
ฉันใช้ Ubuntu 16.04 สำหรับการรวบรวมและอัปโหลดโค้ด C สามารถทำได้ใน Windows แต่ตัวฉันเองไม่ได้ลองทำ
ดาวน์โหลด RISC-V GNU Compiler Toolchain ติดตั้งการพึ่งพาที่จำเป็นทั้งหมด
โคลน git --recursive
sudo apt-get ติดตั้ง autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev เพ่งพิศวง build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev
คัดลอก toolchain ที่ดาวน์โหลดมาไปยังไดเร็กทอรี /opt หลังจากนั้นให้รันคำสั่งต่อไปนี้
./configure --prefix=/opt/kendryte-toolchain --with-cmodel=medany
ทำ
เพิ่ม /opt/kendryte-toolchain/bin ใน PATH ของคุณทันที
ตอนนี้คุณพร้อมที่จะคอมไพล์โค้ดแล้ว!
ขั้นตอนที่ 3: รวบรวมรหัส
ดาวน์โหลดรหัสจากที่เก็บ GitHub ของฉัน
ดาวน์โหลด Kendryte K210 SDK แบบสแตนด์อโลน
คัดลอกโฟลเดอร์ /kpu จากที่เก็บ github ของฉันไปยังโฟลเดอร์ /src ใน SDK
เรียกใช้คำสั่งต่อไปนี้ในโฟลเดอร์ SDK (ไม่ใช่โฟลเดอร์ /src!)
mkdir build && cd build
cmake.. -DPROJ=project_name -DTOOLCHAIN=/opt/kendryte-toolchain/bin && make
โดยที่ project_name คือชื่อโปรเจ็กต์ของคุณ (ขึ้นอยู่กับคุณ) และ -DTOOLCHAIN= ควรชี้ไปที่ตำแหน่งของ risc-v toolchain ของคุณ (คุณดาวน์โหลดมาในขั้นตอนที่ lst จำไว้)
ยอดเยี่ยม! ตอนนี้หวังว่าคุณจะเห็นการคอมไพล์เสร็จสิ้นโดยไม่มีข้อผิดพลาด และคุณมีไฟล์.bin ที่คุณสามารถอัปโหลดได้
ขั้นตอนที่ 4: การอัปโหลดไฟล์.bin
ตอนนี้เชื่อมต่อ Sipeed M1 ของคุณกับคอมพิวเตอร์และจากโฟลเดอร์ /build ให้รันคำสั่งต่อไปนี้
sudo python3 isp_auto.py -d /dev/ttyUSB0 -b 200000 kpu.bin
โดยที่ kpu.bin คือชื่อไฟล์.bin ของคุณ
การอัปโหลดมักใช้เวลา 2-3 นาที หลังจากเสร็จสิ้น คุณจะเห็นกระดานทำงานการตรวจจับ 20 คลาส ขั้นตอนสุดท้ายสำหรับเราคือการเชื่อมต่อกับ Arduino mega หรือ Raspberry Pi
!!! หากคุณเพิ่งมาจากขั้นตอนที่ 2 !!
เรียกใช้คำสั่งต่อไปนี้จากโฟลเดอร์ที่คุณโคลนที่เก็บ github ของฉัน
sudo python3 isp_auto.py -d /dev/ttyUSB0 -b 200000 kpu_bin.bin
การอัปโหลดมักใช้เวลา 2-3 นาที หลังจากเสร็จสิ้น คุณจะเห็นกระดานทำงานการตรวจจับ 20 คลาส ขั้นตอนสุดท้ายสำหรับเราคือการเชื่อมต่อกับ Arduino mega หรือ Raspberry Pi
ขั้นตอนที่ 5: การเชื่อมต่อกับ Arduino
ฉันใช้ Arduino Mega กับ Seeed Studio Mega Shield นี่คือเหตุผลที่ฉันบัดกรีตัวเชื่อมต่อ Grove เข้ากับบอร์ด Sipeed M1 อย่างไรก็ตาม คุณสามารถใช้สายจัมเปอร์และเชื่อมต่อ Sipeed M1 โดยตรงกับ Arduino Mega ตามแผนภาพการเดินสายนี้
หลังจากนั้นอัปโหลดภาพร่างของ camera.ino และเปิดจอภาพแบบอนุกรม เมื่อคุณชี้กล้องไปที่วัตถุต่าง ๆ (รายการของคลาส 20 อยู่ในภาพร่าง) มันควรจะส่งออกชื่อของคลาสในมอนิเตอร์แบบอนุกรม!
ยินดีด้วย! ตอนนี้คุณมีโมดูลตรวจจับภาพที่ใช้งานได้สำหรับ Arduino ของคุณแล้ว!
ขั้นตอนที่ 6: การเชื่อมต่อกับ Raspberry Pi
ฉันใช้หมวก Grove Pi+ สำหรับ Raspberry Pi 2B แต่อีกครั้ง เช่นเดียวกับ Arduino คุณสามารถเชื่อมต่อ Sipeed M1 กับอินเทอร์เฟซ UART ของ Raspberry Pi ได้โดยตรงตามแผนภาพการเดินสายนี้
หลังจากนั้นเปิด camera_speak.py และหันกล้องไปที่วัตถุต่างๆ เทอร์มินัลจะแสดงข้อความต่อไปนี้ว่า "ฉันคิดว่าเป็น" และหากคุณเชื่อมต่อลำโพง เครื่องจะพูดวลีนี้ออกมาดัง ๆ สวยเย็นไม่ได้หรือไม่
ขั้นตอนที่ 7: บทสรุป
นี่เป็นช่วงเวลาที่น่าตื่นเต้นมากที่เราอาศัยอยู่ โดย AI และการเรียนรู้ของเครื่องจะแทรกซึมเข้าไปในทุกส่วนในชีวิตของเรา ฉันรอคอยที่จะพัฒนาในพื้นที่นี้ ฉันกำลังติดต่อกับทีม Sipeed และฉันรู้ว่าพวกเขากำลังพัฒนา micropython wrapper สำหรับฟังก์ชันที่จำเป็นทั้งหมด รวมถึงการเร่งความเร็วของ CNN
เมื่อพร้อม ฉันมักจะเผยแพร่คำแนะนำเพิ่มเติมเกี่ยวกับวิธีใช้โมเดล CNN ของคุณเองกับ micropython ลองนึกถึงแอปพลิเคชันที่น่าตื่นเต้นทั้งหมดที่คุณมีสำหรับบอร์ดที่สามารถเรียกใช้เครือข่ายประสาทเทียมในการประมวลผลภาพของคุณเองได้ในราคานี้และด้วยรอยเท้านี้!
แนะนำ:
กล้อง Retro Raspberry Pi Tumblr GIF: 10 ขั้นตอน (พร้อมรูปภาพ)
กล้อง Retro Raspberry Pi Tumblr GIF: ฉันต้องการวิธีใช้กล้องวินเทจของฉันในรูปแบบดิจิทัลใหม่ ฉันมีไม่กี่คนที่เล่นในสภาวะต่างๆ แต่ไม่ได้ใช้มานานแล้วเพราะภาพยนตร์เรื่องนี้มีค่าใช้จ่ายสูงในการพัฒนา ปฏิบัติตามคำแนะนำนี้เพื่อดูว่าฉันใส่ Raspberry
กล้อง IP ที่ใช้ Raspberry Pi Zero (การเฝ้าระวังที่บ้าน ตอนที่ 1): 5 ขั้นตอน
กล้อง IP ที่ใช้ Raspberry Pi Zero (Home Surveillance Part 1): นี่เป็นโพสต์แรกในมินิซีรีส์ใหม่ที่เราสร้างระบบเฝ้าระวังภายในบ้านโดยใช้ Raspberry Pis เป็นหลัก ในโพสต์นี้ เราใช้ Raspberry PI zero และสร้างกล้อง IP ที่สตรีมวิดีโอผ่าน RTSP วิดีโอเอาต์พุตมี q ที่สูงกว่ามาก
Flipperkonsole สำหรับ PC Flipper / Pinball Console สำหรับ PC Pinballs: 9 ขั้นตอน
Flipperkonsole สำหรับ PC Flipper / Pinball Console สำหรับ PC Pinballs: ใช้งานได้กับ USB พื้นฐาน เกมสำหรับ PC-Flipperkästen Die Spannungsversorgung erfolgt über das USB Kabel. Implementiert sind die beiden Flipper Buttons และ ein Startbutton Zusätzlich ist ein stossen von unten, von links และ von rechts implem
กล้อง Multispectral Raspberry Pi: 8 ขั้นตอน (พร้อมรูปภาพ)
กล้องมัลติสเปกตรัม Raspberry Pi: กล้องมัลติสเปกตรัมสามารถเป็นเครื่องมือที่มีประโยชน์ในการตรวจจับความเครียดในพืช หรือจำแนกสายพันธุ์ต่างๆ แทนความแตกต่างในลายเซ็นการสะท้อนแสงของพืชโดยทั่วไป หากรวมกับโดรน กล้องสามารถให้ข้อมูลได้อย่างรวดเร็ว
3.3V Mod สำหรับ Ultrasonic Sensors (เตรียม HC-SR04 สำหรับ 3.3V Logic บน ESP32/ESP8266, Particle Photon ฯลฯ): 4 ขั้นตอน
3.3V Mod สำหรับ Ultrasonic Sensors (เตรียม HC-SR04 สำหรับ 3.3V Logic บน ESP32/ESP8266, Particle Photon, ฯลฯ.): TL;DR: บนเซนเซอร์ ตัดร่องรอยไปที่ Echo pin จากนั้นเชื่อมต่อใหม่โดยใช้ a ตัวแบ่งแรงดันไฟฟ้า (Echo trace -> 2.7kΩ -> Echo pin -> 4.7kΩ -> GND) แก้ไข: มีการถกเถียงกันว่า ESP8266 นั้นทนทานต่อ GPIO 5V จริงหรือไม่ใน