โปรเจกต์นี้ใช้ Raspberry Pi-3/4 หรือ Aaeon Up x86 single board computers (SBCs) ในการตรวจจับตัวเลขที่เขียนด้วยมือจากวิดีโอสดที่ถ่ายโดยกล้อง USB และส่งตัวเลขที่รู้จักไปยัง Arduino Uno เพื่อแสดงผลบนจอแสดงผล 7 segment (Seven Segment Display) งานนี้เราจะใช้ซอฟต์แวร์ CASP ในการโปรแกรม SBC และ Arduino Uno ด้วยตรรกะของแต่ละตัว
โปรเจกต์นี้จะโชว์ให้เห็นว่าเราจะบูรณาการบอร์ด Arduino กับ SBCs เพื่อทำอะไรเจ๋งๆ ได้ยังไง และยังโชว์ความสามารถของ CASP ในการสร้างโมเดลและโปรแกรมแต่ละเป้าหมายให้บรรลุวัตถุประสงค์ร่วมกันได้อีกด้วย
ภาพรวมโปรเจกต์
"Digit-Neural" คือการนำ Edge-AI Inference Forensics และ Multi-Target Logic Orchestration มาทำกันจริงจัง โดยใช้ Raspberry Pi เป็นโหนดทำนาย (inference node) สุดแกร่ง และ Arduino Uno เป็นตัวควบคุมอุปกรณ์รอบข้าง (peripheral controller) ที่แม่นยำ โปรเจกต์นี้เชื่อมช่องว่างระหว่างฮิวริสติกส์คอมพิวเตอร์วิทัศน์ที่ซับซ้อนกับฮาร์ดแวร์ฝังตัวเข้าด้วยกัน ระบบนี้ใช้โครงข่ายประสาทเทียมแบบ Feed-Forward 2 ชั้น (FFNN) ที่ฝึกด้วยชุดข้อมูล MNIST ซึ่งสามารถจดจำตัวเลขที่เขียนด้วยมือจากสตรีมภาพสดได้ สิ่งที่เน้นในการสร้างคือการวินิจฉัยด้วย serial-telemetry แบบไร้รอยต่อ โดยใช้สภาพแวดล้อมการสร้างโมเดล CASP สำหรับการทำงานข้ามแพลตฟอร์ม
ตรรกะพื้นฐานและเจาะลึกเทคนิค
ขั้นตอนที่ 1: การฝึกและทำนายด้วยโครงข่ายประสาทเทียม บนพีซีโฮสต์ (native target) เราพัฒนาโมเดลโครงข่ายประสาทเทียมแบบ Feed-Forward ง่ายๆ 2 ชั้น ชั้นละ 128 นิวรอน และฝึกโมเดลด้วยชุดข้อมูลตัวเลข MNIST เราจะบันทึกโมเดลระหว่างกระบวนการฝึก
- การวินิจฉัยสถาปัตยกรรม FFNN: ระบบใช้โครงข่ายประสาทเทียมที่มีสองชั้นที่ซ่อนอยู่ $(128\text{ นิวรอนต่อชั้น})$ การตรวจสอบทางนิติวิทยาศาสตร์ (Forensics) ในช่วงฝึกจะเกี่ยวข้องกับการปรับแต่งฮาร์มอนิกของน้ำหนัก (weight-harmonics) และเวกเตอร์อคติ (bias-vectors) โดยใช้ชุดข้อมูล MNIST การวินิจฉัยมุ่งเน้นไปที่การบรรลุความแม่นยำในการจำแนกสูง $(>98%)$ บนพีซีโฮสต์ ก่อนที่จะส่งออกเอนจินการทำนายแบบน้ำหนักเบาไปยัง Raspberry Pi ที่ใช้สถาปัตยกรรม ARM
- ฮิวริสติกส์การประมวลผลภาพเบื้องต้น: เฟรมวิดีโอสดจากเว็บแคมจะผ่านกระบวนการตรวจสอบทางนิติวิทยาศาสตร์ของการประมวลผลภาพอย่างเข้มข้น ซึ่งรวมถึงการแปลงเป็นสีเทา (grayscaling) การเบลอแบบเกาส์เซียน $(\sigma)$ เพื่อลดสัญญาณรบกวน และการปรับขนาดภาพอย่างแม่นยำเป็น $28\times28$ พิกเซล เพื่อให้ตรงกับฮาร์มอนิกของชั้นอินพุตของ MNIST
จากนั้นเราจะทดสอบโมเดลที่ฝึกแล้วด้วยภาพสดจากกล้อง USB ที่เชื่อมต่อกับพีซีโฮสต์
ขั้นตอนที่ 2: ตรรกะการแสดงผลบน Arduino บนเป้าหมาย Arduino Uno เราพัฒนาตรรกะเพื่อรับตัวเลขจากพีซีผ่านการสื่อสารแบบอนุกรม (serial communication) และแสดงผลบนจอแสดงผล 7 segment
- สะพานตรรกะข้ามแพลตฟอร์ม: เมื่อตัวเลขถูกจดจำโดย Raspberry Pi $(\text{เช่น ผลลัพธ์ที่ทำนายได้ = "5"})$ ผลลัพธ์การทำนายจะถูกส่งผ่านลิงก์อนุกรมความเร็ว $115,200\text{bps}$ การวินิจฉัยเกี่ยวข้องกับสะพานตรรกะความเร็วสูงบน Arduino Uno ซึ่งจะถอดรหัสสตรีมไบต์ที่เข้ามาและกระตุ้นบิตแมสก์ (bitmask) ที่สอดคล้องกันสำหรับจอ 7 segment
- การประสานงานหลายเป้าหมายด้วย CASP: ไม่เหมือนกับการเขียนโค้ดแบบแยกส่วนแบบเดิม โปรเจกต์นี้ใช้ CASP เพื่อสร้างโมเดลตรรกะการทำนายบน SBC และตรรกะการแสดงผลบน AVR ในสภาพแวดล้อมที่ประสานงานกันเดียว การตรวจสอบทางนิติวิทยาศาสตร์นี้ทำให้มั่นใจว่าเวลาแฝง (latency) จาก "ภาพสู่การมองเห็น" นั้นน้อยที่สุด ผ่านการสร้างโค้ดเครื่อง (machine-code) ที่ปรับให้เหมาะสมสำหรับทั้งสองสถาปัตยกรรม
ขั้นตอนที่ 3: ทดสอบระบบสมบูรณ์ จากนั้นเราจะทดสอบตรรกะที่สมบูรณ์บนพีซีโฮสต์ นั่นคือ เมื่อตรวจจับตัวเลขได้จากวิดีโอสดของกล้อง USB ตัวเลขที่สอดคล้องกันจะต้องแสดงบนจอแสดงผล 7 segment ให้เห็น
ขั้นตอนที่ 4: ดีพลอยโมเดลลง SBC เป้าหมาย ทีนี้เราก็จะย้ายโมเดลจากขั้นตอนที่ 1 ลงไปยัง SBC เป้าหมาย แล้วก็ต่อกล้อง USB กับ Arduino Uno เข้ากับ SBC นั่นแหละ จากนั้นก็รันโมเดลบน SBC เพื่อจดจำตัวเลขเขียนมือ แล้วแสดงผลออกมาบนหน้าจอ 7-Segment ให้เห็นกันจะๆ
วิศวกรรมและการนำไปใช้
- การวินิจฉัยการตอบสนองของ HMI แบบเห็นภาพ:
- การสืบสวนการมัลติเพล็กซ์ 7-Segment: ตรรกะของ Arduino จะจัดการการส่งออกแสง (photonic output) ของจอ 7-Segment การสืบสวนการแมปขา $(A-G)$ ให้แน่นอน ทำให้มั่นใจได้ว่าตัวเลขที่จดจำได้จะถูกแสดงผลด้วยความชัดเจนระดับพี่เทพ
- ความกลมกลืนของความมั่นใจในการอนุมานสด: เอ็นจิ้นอนุมานบน Raspberry Pi สามารถตั้งค่าให้แสดงคะแนนความมั่นใจ (confidence scores) ของการจำแนกได้ การวินิจฉัยความกลมกลืนของความน่าจะเป็น $(P)$ เหล่านี้ ทำให้ระบบสามารถปฏิเสธสิ่งรบกวนทางแสง (optical artifacts) ที่มีความมั่นใจต่ำ ป้องกันไม่ให้จอ 7-Segment แสดงผลผิดพลาดแบบเฟ้กนิวส์
- การวิเคราะห์สมรรถนะทรัพยากรของ SBC:
- การรันการอนุมานแบบเรียลไทม์บน Raspberry Pi ต้องใช้การจัดการหน่วยความจำอย่างระมัดระวัง CASP จะทำการออปติไมซ์น้ำหนักของ FFNN ให้กลายเป็น binary-blob ขนาดกะทัดรัด ทำให้มั่นใจได้ว่า การวินิจฉัยอุณหภูมิ CPU และการกิน RAM จะยังคงอยู่ในขอบเขตการทำงานที่ปลอดภัย แม้จะต้องจับตาดูภาพเป็นเวลานาน
ขั้นตอนการทำ
ขั้นตอนที่ 1. ติดตั้ง CASP และให้แน่ใจว่าบอร์ดซัพพอร์ตแพ็คเกจ (BSP) ของสิ่งต่อไปนี้ถูกติดตั้งแล้ว (ขึ้นอยู่กับเป้าหมายของคุณ) ก่อนจะทำขั้นตอนต่อไป
ก. Raspberry Pi 3B (Remote Build), Raspberry Pi 4B (64bit Remote Build)
ข. Ubuntu 64bit OS (Remote Build), Windows 64bit OS (Remote Build)
ค. Arduino Uno
ขั้นตอนที่ 2: ดาวน์โหลดบทเรียนเกี่ยวกับแมชชีนเลิร์นนิง แล้วทำตามวิดีโอสอนด้านล่างนี้ เพื่อดูวิธีการทำตามตรรกะข้างต้นทั้งหมด
สรุป
Digit-Neural นี่คือตัวแทนของ Distributed Embedded Intelligence ในระดับสุดยอดเลยทีเดียว ด้วยการเชี่ยวชาญ Edge-AI Forensics และ Multi-Target Orchestration ทำให้เกิดระบบวิสัยทัศน์ที่ซับซ้อนแต่แฝงตัวอยู่ในอุปกรณ์เล็กๆ แสดงให้เห็นถึงพลังของการผสานแมชชีนเลิร์นนิงระดับสูง เข้ากับไมโครคอนโทรลเลอร์ที่ทำงานแบบกำหนดได้แน่นอน