สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
นี่เป็นบทความที่สองในซีรีส์เกี่ยวกับ Sipeed AI บนแพลตฟอร์มไมโครคอนโทรลเลอร์ Edge คราวนี้ฉันจะเขียนเกี่ยวกับ MaiX Bit (ลิงก์ไปยัง Seeed Studio Shop) ซึ่งเป็นบอร์ดพัฒนาที่เล็กกว่าและพร้อมใช้เขียงหั่นขนม ข้อมูลจำเพาะของมันคล้ายกับ MaiX Dock มาก บอร์ดที่ฉันใช้สำหรับบทช่วยสอนที่แล้ว เพราะมันใช้ชิปตัวเดียวกัน Kendryte K210
เรากำลังจะใช้เฟิร์มแวร์ micropython เพื่อทดลองใช้การสาธิต OpenMV นี่คือคำอธิบายจากโฮมเพจ OpenMV:
โปรเจ็กต์ OpenMV เกี่ยวกับการสร้างต้นทุนต่ำ ขยายได้ โมดูล Python ขับเคลื่อนด้วยแมชชีนวิชั่น และมีเป้าหมายที่จะกลายเป็น “Arduino ของ Machine Vision”…Python ทำให้การทำงานกับอัลกอริธึมแมชชีนวิชั่นง่ายขึ้นมาก ตัวอย่างเช่น เมธอด find_blobs() ในโค้ดจะค้นหา color blobs และส่งคืนรายการของอ็อบเจ็กต์ที่มีมูลค่า 8 ค่าซึ่งแสดงถึงแต่ละ Blob สีที่พบ ใน Python ที่วนซ้ำรายการวัตถุที่ส่งคืนโดย find_blobs() และการวาดสี่เหลี่ยมรอบ ๆ blob สีแต่ละอันนั้นทำได้ง่ายๆ ด้วยโค้ดเพียงสองบรรทัด
ดังนั้นแม้ว่า MaiX Bit จะมีคุณสมบัติตัวเร่งเครือข่ายประสาทเฉพาะ แต่บางครั้งอาจง่ายกว่าถ้าใช้อัลกอริธึมแบบฮาร์ดโค้ดของ OpenMV เพื่อทำงานหรือใช้ร่วมกัน
กรณีการใช้งานบางอย่างที่อยู่ในใจของฉันคือ:
1) การตรวจจับสายสำหรับบอทตามสาย
2) การตรวจจับสัญญาณไฟจราจรด้วยการตรวจจับวงกลมและสี
3) การใช้การตรวจจับใบหน้าเพื่อค้นหาใบหน้าสำหรับการจดจำใบหน้า (ด้วย DNN)
ที่เก็บ Github สำหรับบทความนี้
ขั้นตอนที่ 1: Flash Micropython Firmware
ก่อนอื่นเราจะต้องแฟลชเฟิร์มแวร์ micropython ไปที่บอร์ดของเรา ไบนารีที่คอมไพล์ล่วงหน้าจะรวมอยู่ในที่เก็บ github สำหรับบทความนี้ ร่วมกับ kflash.py (ยูทิลิตี้แฟลช) หากคุณต้องการคอมไพล์เฟิร์มแวร์จากซอร์สโค้ด เพียงดาวน์โหลดซอร์สโค้ดจาก https://github.com/sipeed/MaixPy ติดตั้ง toolchain และคอมไพล์ซอร์สโค้ดลงในไฟล์ maixpy.bin สามารถดูคำแนะนำการสร้างโดยละเอียดได้ที่นี่
แฟลชไฟล์ไบนารีด้วย
sudo python3 kflash.py kpu.bin
หลังจากแฟลชสำเร็จแล้ว ให้ทำตามขั้นตอนต่อไป
ขั้นตอนที่ 2: เชื่อมต่อกับ MaiX Bit
ตอนนี้ MaiX Bit ของเราน่าจะสามารถเข้าถึงได้ผ่านการเชื่อมต่อแบบอนุกรม USB กับ baudrate 115200 คุณสามารถใช้ซอฟต์แวร์ที่คุณชื่นชอบสำหรับการสื่อสารแบบอนุกรมหรือเพียงแค่คำสั่ง cat และ echo อะไรก็ได้ที่เหมาะกับความต้องการของคุณ ฉันใช้หน้าจอสำหรับการสื่อสารแบบอนุกรมและพบว่าสะดวกมาก
คำสั่งสำหรับสร้างเซสชันการสื่อสารแบบอนุกรมพร้อมหน้าจอคือ
หน้าจอ sudo /dev/ttyUSB0 115200
โดยที่ /dev/ttyUSB0 คือที่อยู่ของอุปกรณ์ของคุณ
คุณอาจต้องกดปุ่มรีเซ็ตบนไมโครคอนโทรลเลอร์เพื่อดูข้อความทักทายและพรอมต์ของตัวแปลหลาม
ขั้นตอนที่ 3: เรียกใช้การสาธิต
ตอนนี้คุณสามารถเข้าถึงโหมดคัดลอกได้โดยกด Ctrl+E และคัดลอกและวางรหัสสาธิต หากต้องการเรียกใช้ให้กด Ctrl+D ในโหมดคัดลอก
หากคุณไม่ต้องการบันทึกวิดีโอ คุณต้องแสดงความคิดเห็นบรรทัดการบันทึกวิดีโอ มิฉะนั้น รหัสจะมีข้อยกเว้นหากไม่มีการ์ด SD เสียบอยู่
นี่คือคำอธิบายสั้นๆ ของแต่ละเดโม:
ค้นหาแวดวง - ใช้ฟังก์ชัน find_circles จาก OpenMV ต้องการการปรับแต่งเพิ่มเติมสำหรับแอปพลิเคชันเฉพาะของคุณ โดยเฉพาะขีดจำกัด (ควบคุมว่าวงกลมใดที่ตรวจพบจากการแปลง hough ส่งกลับเฉพาะวงกลมที่มีขนาดมากกว่าหรือเท่ากับเกณฑ์) และค่า r_min, r_max
ค้นหาสี่เหลี่ยม - ใช้ฟังก์ชัน find_rects จาก OpenMV คุณสามารถเล่นกับค่าเกณฑ์ได้ แต่ค่าที่ฉันมีในการสาธิตนั้นค่อนข้างดีสำหรับการค้นหาสี่เหลี่ยม
ค้นหาใบหน้า ค้นหาดวงตา - ใช้ฟังก์ชัน find_features กับ Haar Cascades เพื่อตรวจจับดวงตาและใบหน้าหน้าผากในภาพ คุณสามารถเล่นกับเกณฑ์และค่ามาตราส่วนเพื่อการแลกเปลี่ยนความแม่นยำความเร็วที่เหมาะสม
ค้นหาเส้นอนันต์ - ใช้ฟังก์ชัน find_lines เพื่อค้นหาเส้นอนันต์ทั้งหมดในรูปภาพโดยใช้การแปลง Hough
ตรวจจับสี - ใช้ฟังก์ชัน get_statistics เพื่อรับอ็อบเจ็กต์เปอร์เซ็นไทล์ จากนั้นจึงแปลงค่ากลางของ LAB tuple เป็นค่า RGB tuple ฉันเขียนตัวอย่างนี้ด้วยตัวเองและใช้งานได้ดี แต่โปรดทราบว่าผลลัพธ์ของการตรวจจับสีจะได้รับผลกระทบจากสภาพแสงแวดล้อม
คุณสามารถค้นหาการสาธิตที่น่าสนใจอีกมากมายในที่เก็บ OpenMV github! ส่วนใหญ่เข้ากันได้กับ micropython ของ MaiX Bit สิ่งเดียวที่คุณต้องจำไว้คือเพิ่ม sensor.run(1) หลังจากตั้งค่า pixformat และขนาดเฟรม
ทดลองใช้โค้ด OpenMV อย่างมีความสุข หากคุณมีคำถามหรือต้องการแบ่งปันผลลัพธ์ที่น่าสนใจ อย่าลังเลที่จะติดต่อฉันทาง Youtube หรือ LinkedIn ขอโทษนะ ฉันจะไปสร้างหุ่นยนต์!