สารบัญ:

กล้อง AI สำหรับ Raspberry Pi/Arduino: 7 ขั้นตอน
กล้อง AI สำหรับ Raspberry Pi/Arduino: 7 ขั้นตอน

วีดีโอ: กล้อง AI สำหรับ Raspberry Pi/Arduino: 7 ขั้นตอน

วีดีโอ: กล้อง AI สำหรับ Raspberry Pi/Arduino: 7 ขั้นตอน
วีดีโอ: Raspberry Pi 101 EP.5: ใช้งานกล้องกับ Raspberry Pi ง่ายๆแค่ 7 นาที 2024, พฤศจิกายน
Anonim
Image
Image

หากคุณติดตามข่าวเมื่อไม่นานนี้ มีการระเบิดของสตาร์ทอัพที่กำลังพัฒนาชิปสำหรับการอนุมานและการฝึกอบรมอัลกอริธึม ML (แมชชีนเลิร์นนิง) อย่างไรก็ตาม ชิปเหล่านั้นส่วนใหญ่ยังอยู่ระหว่างการพัฒนา และไม่ใช่สิ่งที่ผู้ผลิตทั่วไปของคุณสามารถรับมือได้ ข้อยกเว้นที่สำคัญเพียงอย่างเดียวคือ Intel Movidius Neural Compute Stick ซึ่งมีให้ซื้อและมาพร้อมกับ SDK ที่ดี มันมีข้อเสียที่สำคัญบางประการ นั่นคือราคา (ประมาณ 100 USD) และความจริงที่ว่ามันมาในรูปแบบ USB stick ดีมากถ้าคุณต้องการใช้กับแล็ปท็อปหรือ Raspberry PI แต่ถ้าคุณต้องการทำโครงการจดจำภาพด้วย Arduino หรือ Raspberry Pi Zero?

ขั้นตอนที่ 1: Sipeed MAix: AI ที่ Edge

Sipeed MAix: AI ที่ขอบ
Sipeed MAix: AI ที่ขอบ

ไม่นานมานี้ฉันได้ใช้บอร์ดพัฒนา 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

กำลังอัปโหลดไฟล์.bin
กำลังอัปโหลดไฟล์.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
กำลังเชื่อมต่อกับ Arduino
กำลังเชื่อมต่อกับ Arduino
กำลังเชื่อมต่อกับ Arduino
กำลังเชื่อมต่อกับ Arduino
กำลังเชื่อมต่อกับ Arduino

ฉันใช้ Arduino Mega กับ Seeed Studio Mega Shield นี่คือเหตุผลที่ฉันบัดกรีตัวเชื่อมต่อ Grove เข้ากับบอร์ด Sipeed M1 อย่างไรก็ตาม คุณสามารถใช้สายจัมเปอร์และเชื่อมต่อ Sipeed M1 โดยตรงกับ Arduino Mega ตามแผนภาพการเดินสายนี้

หลังจากนั้นอัปโหลดภาพร่างของ camera.ino และเปิดจอภาพแบบอนุกรม เมื่อคุณชี้กล้องไปที่วัตถุต่าง ๆ (รายการของคลาส 20 อยู่ในภาพร่าง) มันควรจะส่งออกชื่อของคลาสในมอนิเตอร์แบบอนุกรม!

ยินดีด้วย! ตอนนี้คุณมีโมดูลตรวจจับภาพที่ใช้งานได้สำหรับ Arduino ของคุณแล้ว!

ขั้นตอนที่ 6: การเชื่อมต่อกับ Raspberry Pi

การเชื่อมต่อกับ Raspberry Pi
การเชื่อมต่อกับ Raspberry Pi
การเชื่อมต่อกับ Raspberry Pi
การเชื่อมต่อกับ Raspberry Pi

ฉันใช้หมวก Grove Pi+ สำหรับ Raspberry Pi 2B แต่อีกครั้ง เช่นเดียวกับ Arduino คุณสามารถเชื่อมต่อ Sipeed M1 กับอินเทอร์เฟซ UART ของ Raspberry Pi ได้โดยตรงตามแผนภาพการเดินสายนี้

หลังจากนั้นเปิด camera_speak.py และหันกล้องไปที่วัตถุต่างๆ เทอร์มินัลจะแสดงข้อความต่อไปนี้ว่า "ฉันคิดว่าเป็น" และหากคุณเชื่อมต่อลำโพง เครื่องจะพูดวลีนี้ออกมาดัง ๆ สวยเย็นไม่ได้หรือไม่

ขั้นตอนที่ 7: บทสรุป

นี่เป็นช่วงเวลาที่น่าตื่นเต้นมากที่เราอาศัยอยู่ โดย AI และการเรียนรู้ของเครื่องจะแทรกซึมเข้าไปในทุกส่วนในชีวิตของเรา ฉันรอคอยที่จะพัฒนาในพื้นที่นี้ ฉันกำลังติดต่อกับทีม Sipeed และฉันรู้ว่าพวกเขากำลังพัฒนา micropython wrapper สำหรับฟังก์ชันที่จำเป็นทั้งหมด รวมถึงการเร่งความเร็วของ CNN

เมื่อพร้อม ฉันมักจะเผยแพร่คำแนะนำเพิ่มเติมเกี่ยวกับวิธีใช้โมเดล CNN ของคุณเองกับ micropython ลองนึกถึงแอปพลิเคชันที่น่าตื่นเต้นทั้งหมดที่คุณมีสำหรับบอร์ดที่สามารถเรียกใช้เครือข่ายประสาทเทียมในการประมวลผลภาพของคุณเองได้ในราคานี้และด้วยรอยเท้านี้!

แนะนำ: