FRA500 : Human-Robotics Interface Class Project [ Put Your Hand Sign! ]

**ผู้จัดทำ:**

1. นายธเนศพล หีบแก้ว (65340500027)

2. นายชยากร ชื่นประเสริฐ (66340500012)

1. ที่มาและแนวคิดของโปรเจค (Project Background and Concept)

โปรเจคนี้เริ่มต้นจากการที่เราอยากลองทำเกมที่ใช้เงามือเป็นคอนเซปหลัก โดยตั้งชื่อว่า **”Put Your Hand Sign!”** แนวคิดคือ การทำมือให้เกิดเงาแบบต่างๆ ตามโจทย์ที่ปรากฏบนหน้าจอ โดยมีเป้าหมายเพื่อให้ระบบ Computer Vision ตรวจจับและตรวจความถูกต้องของเงาได้รวดเร็ว จนสามารถนำมาแข่งกันได้ว่าใครทำตามโจทย์ได้เร็วกว่ากัน

รูป ตัวอย่างการเล่น
รูป System Diagram
รูป System Architecture

2. รูปแบบการเล่นและกติกา (Gameplay and Rules)

ตัวเกมถูกออกแบบมาให้เป็นการแข่งขันระหว่างผู้เล่น 2 ฝ่ายแบบ Real-time โดยมีกติกาที่เข้าใจง่ายและเน้นความรวดเร็ว:

เป้าหมายหลัก: ผู้เล่นทั้งสองฝ่าย (Player 1 และ Player 2) จะเห็นโจทย์ท่าทางเงามือเดียวกันบนหน้าจอ (เช่น “Bird” หรือ “Dog” เป็นต้น)

การแข่งขัน: ผู้เล่นจะต้องยื่นมือเข้าหน้ากล้องเพื่อทำเงามือเลียนแบบโจทย์ให้ถูกต้องและ “เร็วกว่า” อีกฝ่าย

การตัดสินและคะแนน: ระบบประมวลผลผ่าน AI แบบ Real-time หากใครทำท่าทางได้ถูกต้องตรงกับโจทย์เป็นคนแรก จะถือเป็นผู้ชนะในรอบนั้นและได้ 1 คะแนน จากนั้นระบบจะเปลี่ยนโจทย์เป็นท่าต่อไปทันที

3. ขั้นตอนการดำเนินงานอย่างละเอียด (Methodology)

3.1 การเก็บข้อมูลและการเตรียมชุดข้อมูล (Data Collection & Pre-processing)

อุปสรรคที่ใหญ่ที่สุดของการทำเงามือคือ “สภาพแสง” ที่ไม่คงที่ เราจึงใช้เทคนิคการประมวลผลภาพผ่าน OpenCV ตั้งแต่ขั้นตอนการเก็บ Dataset เพื่อควบคุมปัจจัยรบกวน

รูป เปรียบเทียบภาพมือปกติ กับภาพที่ผ่านกระบวนการ Binary Thresholding

การทำ Binary Thresholding: เราแปลงภาพจากกล้องให้เป็นสีขาว-ดำทันที ช่วยตัดสัญญาณรบกวนจากสีผิว พื้นหลัง และเงาสะท้อนที่ไม่จำเป็นออกไป ทำให้ AI โฟกัสเฉพาะ “โครงร่าง” (Contour) ของเงามือเท่านั้น

Dataset Classes: เราทำการรวบรวมข้อมูลถ่ายภาพทั้งหมด 10 Classes โดยแบ่งเป็นสัตว์ 7 ชนิด (เช่น นก สุนัข ช้าง) และท่าค้อน-กรรไกร-กระดาษ 3 ท่า

การจัดการและ Label ข้อมูลด้วย Roboflow: หลังจากได้ภาพจำนวนหนึ่ง เรานำภาพทั้งหมดอัปโหลดเข้าสู่แพลตฟอร์ม **Roboflow** ในหน้าต่างนี้ เราได้ทำการตีกรอบ (Bounding Box) ล้อมรอบบริเวณเงามือในแต่ละภาพอย่างละเอียด และกำหนดชื่อคลาส การตีกรอบที่แม่นยำมีความสำคัญมากเพราะจะส่งผลโดยตรงต่อความสามารถของโมเดล เมื่อ Label เสร็จสิ้น Roboflow จะช่วยจัดการแบ่งชุดข้อมูล (Train, Validation, Test) และ Export ออกมา

รูป การทำ Labeling ข้อมูลเงามือ หรือ Bounding Box บนเว็บ Roboflow

3.2 การฝึกสอนโมเดล (Model Training)

เราเลือกใช้โมเดล **YOLO26** ซึ่งเป็นสถาปัตยกรรมที่โดดเด่นเรื่องความเร็วในการประมวลผลแบบ Real-time โดยใช้ทรัพยากรของ **Google Colab** ในการฝึกสอนโมเดล

กระบวนการ Training บน Google Colab: เรานำเข้า Dataset ที่เตรียมไว้จาก Roboflow เข้าสู่สภาพแวดล้อมของ Colab การรันบน Colab ทำให้เราสามารถเข้าถึง GPU ประสิทธิภาพสูง ช่วยลดระยะเวลาในการ Train โมเดลได้อย่างมหาศาล

รูปการ Training บน Google Colab

การติดตามผลและการประเมิน:** ระหว่างการเทรน เราติดตามกราฟค่าความคลาดเคลื่อน (Loss) และค่าความแม่นยำ (Accuracy) เพื่อดูว่าโมเดลเรียนรู้และแยกแยะโครงร่างเงามือแต่ละคลาสได้ดีเพียงใด เมื่อความแม่นยำอยู่ในระดับที่น่าพอใจ จึงทำการ Export ไฟล์น้ำหนักโมเดล (Weights) ออกมาใช้งาน

รูป กราฟแสดงค่า Loss/Accuracy

3.3 การพัฒนาส่วนแสดงผลและการสื่อสาร (Web Interface & Communication)

เราใช้ Node.js ร่วมกับ Socket.io เป็นตัวกลางในการสื่อสารระหว่างส่วนประมวลผล AI (Python) และส่วนแสดงผลหน้าเว็บ (Browser)

ระบบการสื่อสาร Real-time: ฝั่ง Client (Python) จะจับภาพจากกล้องและส่งผลลัพธ์การทำนายพร้อมค่าความมั่นใจ (Confidence Score) ส่งมาที่ Server ทันที Server จะทำการตัดสินผู้ชนะและกระจายผลลัพธ์ผ่าน WebSocket (Socket.io) ไปยังหน้าจอของผู้เล่นทั้งสองคนและหน้าจอผู้ชม (Spectator) ทำให้ทุกหน้าจออัปเดตพร้อมกันโดยไม่ต้องกดรีเฟรช

รูป หน้า Website สำหรับผู้ชม
รูป หน้าจอสำหรับจัดการระบบ (Debug Console)

ฐานข้อมูล: ข้อมูลประวัติการแข่งขันและคะแนนจะถูกบันทึกไว้อย่างเป็นระเบียบ ทั้งในระบบ Local (SQLite) และ Cloud (Supabase) เพื่อรองรับการแสดงผล Leaderboard

รูป Database ER Diagram

4. ผลการทดสอบและการวัดผล (Evaluation)

จากการทดสอบระบบในสภาพแวดล้อมจริง เราวัดผลจากความแม่นยำและการตอบสนองของระบบ:

Accuracy: โมเดลมีความแม่นยำสูง สามารถแยกแยะความแตกต่างของเงามือในแต่ละคลาสได้ดีแม้เงามือจะมีการขยับเล็กน้อย

Inference Speed: ความเร็วในการประมวลผลสูงมาก (ระดับมิลลิวินาที) และการส่งข้อมูลผ่าน WebSocket ทำได้รวดเร็วเพียงพอสำหรับการเล่นเกมแนวแข่งขันกันทำความเร็ว

รูปแสดงผลความแม่นยำ
รูป Confusion Matrix ของโมเดล

5. สรุปผลและปัญหาที่พบ (Conclusion and Limitations)

อุปสรรคสำคัญที่เจอคือความแตกต่างของโครงสร้างมือของแต่ละคน รวมถึงระยะห่างจากกล้องถึงมือ ซึ่งส่งผลต่อขนาดของเงาบนหน้าจอ วิธีแก้ปัญหาในการเล่นจริงคือการแนะนำตำแหน่งการวางมือที่เหมาะสมให้อยู่ในกรอบที่กำหนดก่อนเริ่มเกม

โปรเจคนี้ทำให้เราเห็นว่าการนำ Computer Vision มาประยุกต์ใช้กับคอนเซปง่ายๆ อย่างเงามือ สามารถสร้างการปฏิสัมพันธ์ที่สนุกและน่าสนใจได้ และยังได้เรียนรู้การจัดการระบบ AI และ Web Server ให้ทำงานร่วมกันได้อย่างสมบูรณ์ในรูปแบบ HRI ที่ใช้งานได้จริง

6. ข้อมูลอ้างอิง (References)

Source Code (GitHub): [Put-Your-Hand-Sign-](https://github.com/Pluem2003/Put-Your-Hand-Sign-)

เทคโนโลยีที่ใช้: YOLO26, Node.js, Socket.io, OpenCV, Roboflow, Google Colab, Supabase

ชุดข้อมูลฝึกสอนโมเดล (Roboflow Dataset): [Hand Shadow Dataset โดย Pluem](https://app.roboflow.com/pluem-0bxuc/hand-shadow)

Dataset อ้างอิงเบื้องต้น: [HaSPeR on Hugging Face](https://huggingface.co/datasets/Starscream-11813/HaSPeR) (สำหรับการศึกษาแนวทางเพิ่มเติม)