DrowSAFE: สร้างระบบ AI ตรวจจับคนขับหลับในด้วย Raspberry Pi 5 แบบไม่ง้อเน็ต! 🚗💤

DrowSAFE Hardware Setup
อุปกรณ์ทั้งหมดประกอบเข้าด้วยกัน ติดตั้งในรถได้ทันที

สวัสดีชาว Maker และสาย Tech ทุกคนครับ! รู้ไหมว่าหนึ่งในสาเหตุอุบัติเหตุทางถนนที่อันตรายและถูกรายงานต่ำกว่าความเป็นจริงมากที่สุดก็คือ "การหลับใน" (Drowsy driving) แน่นอนว่าถ้าคุณขับรถหรูอย่าง Mercedes, BMW หรือ Tesla มันก็อาจจะมีระบบตรวจสอบคนขับแถมมาให้ แต่ระบบพวกนั้นราคาก็แพงหูฉี่และถูกล็อกไว้ให้ใช้เฉพาะกับรถรุ่นนั้นๆ

ส่วนระบบ Standalone ที่ใช้ในบริษัทขนส่งก็ดันต้องเชื่อมต่อ Cloud และมีค่าบริการรายเดือนอีก นี่จึงเป็นจุดเริ่มต้นของโปรเจกต์ DrowSAFE ระบบ AI ตรวจจับความง่วงแบบ Open-source ที่คุณสามารถประกอบเองได้ ติดตั้งในรถคันไหนก็ได้ และที่สำคัญคือมันทำงานแบบ Offline 100% ไม่ต้องต่อเน็ต ไม่เสียค่ารายเดือน แถมข้อมูลใบหน้าเราไม่ถูกส่งออกไปไหนด้วย!

ทำงานยังไง? หลักการวิทยาศาสตร์เบื้องหลัง AI

DrowSAFE Detection Pipeline
Pipeline การทำงานของระบบที่ไหลลื่นระดับ 30 fps บน CPU เพียวๆ

ความพีคของระบบนี้คือ มันรันประมวลผลวิดีโอแบบสดๆ ได้ถึง 30 เฟรมต่อวินาที (fps) บน Quad-core CPU ของ Raspberry Pi 5 โดยไม่ต้องพึ่งการ์ดจอ (GPU) หรือชิป AI ใดๆ เลยครับ!

ระบบจะใช้โมเดล MediaPipe Face Mesh จาก Google ในการจับจุดบนใบหน้าถึง 468 จุดต่อเฟรม แล้วเอามาคำนวณผ่าน 4 สัญญาณหลักทางวิทยาศาสตร์ ดังนี้ครับ:

EAR and MAR calculation
หลักการคำนวณ EAR และ MAR เพื่อดูการลืมตาและอ้าปาก
  • EAR (Eye Aspect Ratio): วัดอัตราส่วนการลืมตา ปกติเวลาลืมตาค่าจะอยู่ที่ 0.28-0.35 ถ้ากะพริบตาค่าจะตกลงวูบเดียว แต่ถ้าค่าตกต่ำนานๆ แสดงว่า "หลับตา" (ง่วงชัวร์!)
  • MAR (Mouth Aspect Ratio): ใช้หลักการเดียวกันแต่วัดที่ปาก ถ้ารูปปากกว้างเกินค่าที่ตั้งไว้ติดต่อกัน 15 เฟรม ระบบจะฟันธงว่าเรา "หาว"
  • PERCLOS (Percentage of Eye Closure): นี่คือมาตรฐานทองคำที่อเมริกา (NHTSA) ใช้เลยครับ มันคือการคำนวณว่าใน 60 วินาทีที่ผ่านมา เราหลับตาไปกี่เปอร์เซ็นต์ ถ้าเกิน 15% คือประสิทธิภาพการตื่นตัวลดลงแล้ว
  • Head Pose: ประเมินองศาของศีรษะ (ใช้ OpenCV เข้ามาช่วย) ถ้ามีอาการ "สัปหงก" คอพับมาข้างหน้า จะถูกบวกคะแนนความเหนื่อยล้าทันที

ทำไมต้อง Edge AI? & ฮาร์ดแวร์ที่ต้องใช้

ระบบตรวจจับคนขับทั่วไปมักจะต้องโยนวิดีโอไปประมวลผลบนเซิร์ฟเวอร์ (Cloud) แต่ DrowSAFE เลือกใช้ Edge AI ซึ่งมีข้อดีคือ:

  1. ไม่ต้องมีเน็ต (No internet required): ขับรถเข้าอุโมงค์ หรือขึ้นเขาสัญญาณขาดหาย ระบบก็ยังทำงานปกติ
  2. ไร้ความหน่วง (Zero latency): ไม่ต้องรอส่งข้อมูลไปกลับ แจ้งเตือนได้ทันทีที่หลับตา
  3. ความเป็นส่วนตัว 100%: วิดีโอใบหน้าของเราจะถูกประมวลผลและจบแค่ในตัวเครื่อง ไม่มีการแอบอัปโหลดไปไหน

💡 Maker's Tip: โปรเจกต์นี้จะขาดขุมพลังหลักไปไม่ได้เลยนั่นคือ Raspberry Pi 5 ที่สามารถรัน AI ได้อย่างลื่นไหลโดยไม่ต้องง้อสเปกแรงๆ ครับ

หากเพื่อนๆ คนไหนสนใจประกอบโปรเจกต์นี้ แวะมาเลือกช้อป Raspberry Pi 5, Camera Module V2, และ Raspberry Pi Touch Display (7 นิ้ว) ของแท้พร้อมส่งได้ที่ Globalbyte เลยครับ! ของดีของครบ พร้อมประกอบใช้งานทันที

ระบบแจ้งเตือนแบบมี Hysteresis

เพื่อป้องกันไม่ให้หน้าจอแจ้งเตือนเด้งไปมาแบบมั่วๆ เวลามี Noise ระบบจะใช้ Hysteresis (หน่วงการกลับสถานะ) เข้ามาช่วย คือคะแนนความเหนื่อยล้าต้องลดลงแบบชัดเจนจริงๆ ถึงจะยอมปลดการแจ้งเตือนลงครับ

Alert State Machine
ผังการทำงานของ State Machine (Alert Levels)

หน้าตา Dashboard เวลาใช้งานจริง

หน้าจอสัมผัสขนาด 7 นิ้วจะแสดงผลแบ่งเป็น 2 ฝั่ง ซ้ายคือภาพจากกล้องพร้อมโครงตาข่ายบนใบหน้า (Face Mesh) ส่วนขวาคือคะแนนความเหนื่อยล้าและกราฟ

Dashboard Normal State
หน้าจอการทำงานปกติ (Alert Level: NORMAL)
Dashboard Warning State
เมื่อมีการหาวหรือหัวตก คะแนนจะเด้งไปที่ระดับสีส้ม (WARNING)
Dashboard Critical State
เมื่อตรวจพบการหลับตา ค่า EAR จะร่วงหนัก ทำให้ระบบเด้งแจ้งเตือนระดับสีแดงพร้อมเสียงไซเรน (CRITICAL) ทันที!

วิธีประกอบและติดตั้ง (Hardware & Setup)

ขั้นที่ 1: แฟลช OS
ดาวน์โหลด Raspberry Pi OS (Legacy, 64-bit) ย้ำว่าต้องเป็นเวอร์ชัน Legacy (Debian 12 Bookworm) นะครับ เพราะปัจจุบัน MediaPipe ยังไม่รองรับ Python 3.13 บน OS ตัวใหม่

ขั้นที่ 2: ต่อจอและกล้อง
เชื่อมต่อจอ Touch Display เข้ากับบอร์ดผ่านสายแพร DSI และต่อกล้องเข้ากับพอร์ต CAM (ใช้สายแปลงแบบ Standard-to-Mini ให้เข้ากับพอร์ตของ Pi 5)

ขั้นที่ 3: ต่อลำโพง Buzzer
เชื่อมต่อ Active piezo buzzer เข้ากับขา GPIO 18 เอาไว้สำหรับร้องเตือนดังๆ เวลาจับได้ว่าคนขับหลับในครับ

การโคลนโปรเจกต์และติดตั้ง

Terminal (Raspberry Pi)
# Clone project
git clone https://github.com/Bedair/DrowSAFE.git
cd DrowSAFE

# Run setup script
bash scripts/setup_drowsafe.sh

ระบบจะทำการติดตั้งไลบรารีทั้งหมด (OpenCV, MediaPipe, ONNX, Pygame ฯลฯ) ให้อัตโนมัติ

การทดสอบแบบจำลอง (Simulation Mode)

ก่อนเอากล้องไปติดในรถ ลองเทสหน้าจอแบบยังไม่ต้องใช้กล้องดูก่อนได้ครับ

Terminal
python src/main.py --simulate

การ Calibrate (ตั้งค่าให้เข้ากับหน้าเรา)

เพราะใบหน้าของทุกคนไม่เหมือนกัน บางคนตาตี่ บางคนตาโต เราจึงต้องรันคำสั่งวัดค่ามาตรฐานใบหน้าเราก่อนใช้งานจริง

Terminal
bash scripts/calibrate.sh

หลังจากได้ค่าตอนลืมตาปกติแล้ว ให้เราเข้าไปตั้งค่าตัวแปร EAR_THRESHOLD ไว้ที่ประมาณ 65% ของค่าปกติในไฟล์ config/config.py ครับ แค่นี้ AI ก็จะรู้ใจใบหน้าเราแล้ว!

บทสรุป

โปรเจกต์ DrowSAFE พิสูจน์ให้เห็นแล้วว่าเราสามารถนำเทคโนโลยี Edge AI มาประยุกต์ใช้เพื่อความปลอดภัยในชีวิตประจำวันได้จริง แถมยังสร้างเองได้ในงบที่เอื้อมถึง ใครที่เป็นสายขับรถทางไกล หรือชอบทำโปรเจกต์คอมพิวเตอร์วิทัศน์ (Computer Vision) บอกเลยว่าห้ามพลาดครับ!

อ้างอิงและเรียบเรียงข้อมูลจาก: Globalbyteshop Blog

แหล่งที่มาบทความต้นฉบับ: Hackster.io - DrowSAFE: Real-Time Driver Drowsiness Detection System (by Mohamed Ali Bedair)

ดาวน์โหลด Source Code ของโปรเจกต์: GitHub - DrowSAFE

*คำเตือน: เนื้อหานี้เป็นการสรุปและเรียบเรียงแนวคิดจากโปรเจกต์ต้นฉบับภาษาอังกฤษ โปรเจกต์ DrowSAFE เป็นระบบที่ถูกสร้างขึ้นเพื่อการศึกษาและพัฒนา (Educational purposes) ไม่สามารถนำมาใช้ทดแทนสติสัมปชัญญะและความรับผิดชอบของผู้ขับขี่รถยนต์ได้จริงบนท้องถนน ข้อมูลการติดตั้ง OS (Raspbian) และไลบรารี MediaPipe อาจมีการเปลี่ยนแปลง ผู้ปฏิบัติควรตรวจสอบความเข้ากันได้ของระบบจาก GitHub Repository ต้นฉบับ ก่อนดำเนินการ

 

แท็ก


Blog posts

เข้าสู่ระบบ

ลืมรหัสผ่านใช่ไหม?

ยังไม่มีบัญชีใช่ไหม?
สร้างบัญชี