ทำ AI เซนเซอร์เบลอคนแบบเนียนๆ รันออฟไลน์ด้วย Raspberry Pi 5

AI Instance Segmentation Person Blur on Edge
ผลลัพธ์ของโปรเจกต์: AI ตรวจจับรูปร่างคนและทำการเบลอ (Blur) ทิ้งทันที โดยที่ฉากหลังยังชัดแจ๋ว!

Wassup ชาว Maker สาย AI คอมพิวเตอร์วิทัศน์ (Computer Vision)! 📸 ปกติเวลาเราใช้ AI ตรวจจับคนหรือวัตถุ ส่วนใหญ่เราจะคุ้นเคยกับ Object Detection ที่มันจะตีกรอบสี่เหลี่ยม (Bounding Box) ครอบตัวเราไว้ใช่ไหมครับ? แต่วันนี้เราจะพาไปก้าวข้ามขีดจำกัดด้วยเทคนิค Instance Segmentation ซึ่งมันจะไม่ใช่แค่ตีกรอบสี่เหลี่ยม แต่มันจะ "วาดเส้นตัดขอบตามรูปร่างเป๊ะๆ แบบพิกเซลต่อพิกเซล!"

เมื่อมันรู้ขอบเขตของตัวคนชัดเจนแล้ว เราก็สามารถเอาไปประยุกต์ทำโปรเจกต์ "Person Blur" (เบลอภาพคนเพื่อความเป็นส่วนตัว) ได้แบบเนียนกริบ ฉากหลังไม่โดนเบลอตามไปด้วย แถมไฮไลท์คือเราจะรันโมเดล AI หนักๆ แบบนี้ แบบออฟไลน์ (On-device) โดยใช้แค่กล้องเว็บแคมและบอร์ด Raspberry Pi 5 เท่านั้น ไม่ต้องง้อคลาวด์ ไม่ต้องกลัวภาพหลุด!

เคล็ดลับความตึง: Model Cascading & BYOM 🧠

การจะเอางานระดับ Instance Segmentation มารันบนบอร์ดเล็กๆ ให้ลื่นไหลไม่ใช่เรื่องง่ายครับ เค้าเลยใช้เทคนิคที่เรียกว่า Model Cascading (การต่อคิวโมเดล) แบ่งงานให้ AI 2 ตัวช่วยกันทำ:

  • Stage 1 (สอดแนม): รันโมเดล Object Detection ตัวเล็กๆ (เช่น YOLOX) ที่กินสเปคน้อยมาก เพื่อกวาดสายตาหา "คน" ในภาพก่อน
  • Stage 2 (ลงดาบ): เมื่อด่านแรกเจอคน มันจะส่งพิกัดไปให้โมเดลตัวใหญ่ (YOLO11-seg) จัดการวาดหน้ากาก (Mask) ตัดขอบเฉพาะจุดนั้นให้เป๊ะๆ วิธีนี้ทำให้บอร์ดไม่ต้องเหนื่อยรันโมเดลตัวใหญ่พร่ำเพรื่อครับ

แต่เดี๋ยวก่อน! ปกติแพลตฟอร์มอย่าง Edge Impulse Studio เค้าไม่มีบล็อกสำหรับรัน Segmentation มาให้นะ เราเลยต้องใช้ท่ายากที่เรียกว่า BYOM Freeform (Bring Your Own Model) คือการอัปโหลดโมเดล ONNX ของเราเข้าไปดื้อๆ แล้วเขียนโค้ด Python (Post-processor) มารับค่า Tensor ดิบๆ ไปประมวลผลต่อเอาเองครับ โคตรเถื่อน!

💡 ป้ายยาไอเทมเด็ด: งานประมวลผลระดับนี้ ถ้าบอร์ดไม่แรงจริงบอกเลยว่าเฟรมเรตตกกระจาย! ใครกำลังมองหาบอร์ดที่รันโมเดล AI หนักๆ ได้ แอดมินแนะนำให้สอย Raspberry Pi 5 ตัวแรงของแท้ หรือสายอุตสาหกรรมจะลองเล่นบอร์ด Qualcomm Thundercomm ก็มีขายนะ ทักมาจัดของที่ Globalbyte Shop ได้เลย เรามีอแดปเตอร์และกล้อง USB พร้อมลุย!

อยากลองรันบ้าง ต้องเริ่มยังไง? 🛠️

ถ้าคุณมี Raspberry Pi 5 ที่ลง Ubuntu หรือ OS พร้อมรัน Python 3.10+ ไว้แล้ว ให้ทำตามสเต็ปนี้ได้เลย:

1. ลงไลบรารีที่จำเป็น (Edge Impulse Linux & OpenCV)

Terminal (Bash)
pip install "edge_impulse_linux>=1.2.2" opencv-python numpy

2. โคลนโปรเจกต์จาก GitHub มาลงเครื่อง

Terminal (Bash)
git clone https://github.com/SamuelAlexander/instance-seg-byom-freeform-person-blur
cd instance-seg-byom-freeform-person-blur
chmod +x models/*.eim

3. รันโค้ดเบลอคนแบบ Live ผ่านกล้องเว็บแคม!

Terminal (Bash)
QT_QPA_PLATFORM=xcb python cascade/person_blur.py \
  --stage1 ./models/stage1-yolox-aarch64.eim \
  --stage2 ./models/stage2-yolo11nseg-aarch64.eim \
  --metadata ./model_metadata.json \
  --skip 5 --blur-passes 2

(พารามิเตอร์ --skip 5 คือการสั่งให้โมเดลใหญ่ทำงานแค่ 1 ครั้งต่อ 5 เฟรมภาพ เพื่อประหยัด CPU ทำให้ภาพลื่นขึ้นนั่นเอง!)

⚠️ คำเตือนเรื่องความหัวหมุน (Complexity Warning)

บทความนี้เป็นเพียงน้ำจิ้มครับ! เพราะกระบวนการ Post-processing ของโมเดล VLM (การแปลงค่า RGB, การทรานสโพส NHWC เป็น NCHW, และการคูณเมทริกซ์) มันมีรายละเอียดยิบย่อยและคณิตศาสตร์ที่ซับซ้อนมาก ถ้าใครอยากรันโมเดลของตัวเอง แอดมินเชียร์สุดใจให้เข้าไปเสพ คู่มือและโค้ดฉบับเต็มของต้นฉบับเลยครับ!

🔗 แหล่งอ้างอิงและคู่มือแบบเจาะลึก (ตามไปเสพกันให้สมองบวม!):

*Disclaimer (ข้อจำกัดความรับผิดชอบ): เนื้อหาบทความนี้สรุปและดัดแปลงบริบทฮาร์ดแวร์บางส่วนเพื่อให้เข้ากับ Ecosystem ของ Raspberry Pi 5 ข้อมูลทางเทคนิคเรื่องการจัดการ Tensor และโมเดล ONNX มีความซับซ้อน ผู้ที่ต้องการสร้างตามควรศึกษาคู่มือต้นฉบับอย่างละเอียด และทำความเข้าใจพื้นฐาน Python และ OpenCV ก่อนลงมือรันโปรแกรมครับ!

 

แท็ก


Blog posts

เข้าสู่ระบบ

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

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