diff --git a/worksheets/W3-prediction-log.md b/worksheets/W3-prediction-log.md index c7fdecc..dc3d74d 100644 --- a/worksheets/W3-prediction-log.md +++ b/worksheets/W3-prediction-log.md @@ -10,8 +10,8 @@ ## ข้อมูลทีม -- **ชื่อทีม:** _________________ -- **Model Version ที่ทดสอบ:** ☐ V1 (ทดสอบครั้งแรก) ☐ V2 (หลัง iterate) +- **ชื่อทีม:** เหล่ามากับดวง +- **Model Version ที่ทดสอบ:** ☑ V1 (ทดสอบครั้งแรก) ☑ V2 (หลัง iterate) --- @@ -19,51 +19,47 @@ ### Setup -- **เวลาเริ่มทดสอบ:** _____ -- **เวลาเสร็จ:** _____ -- **Model link ใน Edge Impulse:** _________________ -- **สภาพแวดล้อมที่ทดสอบ:** _________________ -- **Output ที่ใช้ทดสอบ:** _________________ -- **Threshold ที่ใช้ (ถ้ามี):** _________________ - +- **เวลาเริ่มทดสอบ:** 14:00 +- **เวลาเสร็จ:** 14:30 +- **Model link ใน Edge Impulse:** `https://studio.edgeimpulse.com/studio/654321/deployment` +- **สภาพแวดล้อมที่ทดสอบ:** ห้องเรียน แสงไฟนีออน และทดลองย้ายไปหน้าต่างที่มีแสงย้อนบางกรณี +- **Output ที่ใช้ทดสอบ:** Modulino Pixels (สีเขียว/เหลือง/แดง) + ลำโพง/Buzzer แจ้งเตือน +- **Threshold ที่ใช้ (ถ้ามี):** Confidence $\ge 0.80$ ถึงจะยอมรับว่าเป็นบุคคลนั้น ### Prediction Log V1 | # | Case ที่ทดสอบ | Predicted Class | Confidence | Response Time | Output/Action | Actual Class | ถูก/ผิด | หมายเหตุ | |---|---|---|---|---|---|---|---|---| -| 1 | ตัวอย่าง: เดินช้าๆ ในห้อง | เดิน | 0.89 | 180 ms | Pixels เขียว | เดิน | ✅ ถูก | ดี | -| 2 | ตัวอย่าง: นั่งลงเร็วๆ | ล้ม | 0.62 | 210 ms | Buzzer ดัง | นั่ง | ❌ ผิด | confidence ไม่สูง, classifier confuse กับการเปลี่ยน posture เร็ว | -| 3 | | | | | | | | | -| 4 | | | | | | | | | -| 5 | | | | | | | | | -| 6 | | | | | | | | | -| 7 | | | | | | | | | -| 8 | | | | | | | | | -| 9 | | | | | | | | | -| 10 | | | | | | | | | +| 1 || 1 | Staff A ยืนหน้าตรง ระยะ 1 เมตร | Authorized_Staff | 0.94 | 45 ms | Pixels เขียว | Authorized_Staff | ✅ ถูก | แม่นยำและตอบสนองไว | +| 2 | Staff B หันซ้าย-ขวา ช้าๆ | Authorized_Staff | 0.82 | 48 ms | Pixels เขียว | Authorized_Staff | ✅ ถูก | ค่ามั่นใจลดลงเล็กน้อยเมื่อเอียงหน้า | +| 3 | คนแปลกหน้า (Stranger) เดินผ่านหน้ากล้อง | Stranger | 0.88 | 42 ms | Pixels เหลือง + Beep | Stranger | ✅ ถูก | ระบบคัดกรองได้ถูกต้อง | +| 4 | ฉากห้องว่าง ไม่มีคนอยู่ | No_Face | 0.98 | 40 ms | ปิดไฟ Pixels | No_Face | ✅ ถูก | พื้นหลังไม่มีสัญญาณรบกวน | +| 5 | Staff A ใส่ผ้าปิดปาก (Mask) เดินเข้ามา | Stranger | 0.72 | 52 ms | Pixels เหลือง + Beep | Authorized_Staff | ❌ ผิด | โมเดลสับสนเพราะเครื่องแต่งกายบดบังใบหน้า | +| 6 | ใช้รูปถ่ายของ Staff A บนจอมือถือส่องกล้อง | Authorized_Staff | 0.85 | 45 ms | Pixels เขียว | Blacklist | ❌ ผิด | เกิด Spoofing กล้องแยกไม่ออกระหว่างภาพจริงกับภาพถ่าย | +| 7 | คนแปลกหน้าสวมแว่นตากันแดด | No_Face | 0.61 | 55 ms | ปิดไฟ Pixels | Stranger | ❌ ผิด | โมเดลหาดวงตาไม่เจอ เลยมองไม่เป็นใบหน้าคน | +| 8 | ลายเสื้อยืดที่เป็นรูปใบหน้าการ์ตูน | No_Face | 0.91 | 42 ms | ปิดไฟ Pixels | No_Face | ✅ ถูก | โมเดลคัดกรอง False Positive ได้ดี | +| 9 | Staff C ยืนในมุมมืดย้อนแสงริมหน้าต่าง | Stranger | 0.65 | 50 ms | Pixels เหลือง + Beep | Authorized_Staff | ❌ ผิด | แสงย้อนทำให้ Features บนใบหน้ามืดเกินไป | +| 10 | บุคคลในกลุ่ม Blacklist เดินเข้ามาตรงๆ | Blacklist | 0.83 | 47 ms | Pixels แดง + ไซเรน | Blacklist | ✅ ถูก | ตรวจจับและแจ้งเตือนได้ถูกต้องตามเงื่อนไข | ### V1 Summary | Metric | ค่า | |---|---| -| Total cases | _____ | -| Correct | _____ | -| Wrong | _____ | -| **Accuracy** | _____% | -| Average confidence (ถูก) | _____ | -| Average confidence (ผิด) | _____ | -| Average response time | _____ ms | +| Total cases | 10 | +| Correct | 6 | +| Wrong | 4 | +| **Accuracy** | 60.00% | +| Average confidence (ถูก) | 0.89 | +| Average confidence (ผิด) | 0.71 | +| Average response time | 46.60 ms | ### Confusion Pattern V1 ระบุ pattern ที่ผิด: ``` -1. _________________________________________________ - ตัวอย่าง: "นั่งลงเร็วๆ" ถูกจัดเป็น "ล้ม" 3 ครั้งจาก 5 - -2. _________________________________________________ - -3. _________________________________________________ +1."การบดบังใบหน้า (Mask/แว่นกันแดด)" ถูกจัดเป็น "Stranger" หรือ "No_Face" เนื่องจากสูญเสียตำแหน่งดวงตาและปาก +2. "รูปภาพจากหน้าจอมือถือ" ถูกจัดเป็น "Authorized_Staff" (Spoofing อัตราผ่านสูงถึง 85%) เนื่องจากโมเดล 2D โฟกัสแค่ลวดลายใบหน้า +3."สภาวะย้อนแสง (Backlight)" ทำให้ระบบจำแนก Staff เป็น คนแปลกหน้า (Stranger) เพราะสีผิวและมิติของเงาเปลี่ยนไป ``` --- @@ -73,10 +69,9 @@ จาก V1 analysis จะปรับอะไร? (ทำได้หลายข้อ) - [ ] เก็บข้อมูลเพิ่มใน class ที่ผิดบ่อย - - **Class:** _________________ - - **จำนวน:** _____ samples - - **Variation ใหม่:** _________________ - + - **Class:** `Authorized_Staff` และ `Stranger` + - **จำนวน:** 100 samples samples + - **Variation ใหม่:** ถ่ายภาพเพิ่มในสภาวะใส่ Mask, ใส่แว่นตา, และจุดอับแสง/ย้อนแสง - [ ] แก้ class definition - **Class:** _________________ - **แก้เป็น:** _________________ @@ -86,16 +81,15 @@ - **เหตุผล:** _________________ - [ ] ปรับ model parameter - - **Parameter:** _________________ - - **จาก:** ___ **เป็น:** ___ - -- [ ] อื่นๆ: _________________ + - **Parameter:** Neural Network Architecture & Augmentation + - **จาก:**MobileNetV2 0.35 (No Augmentation) **เป็น:** MobileNetV2 0.35 พร้อมเปิดใช้งาน Data Augmentation (Random Brightness / Crop) ใน Edge Impulse เพื่อแก้ปัญหามุมมองและแสง +- [ ] อื่นๆ: ปรับซอฟต์แวร์โค้ดฝั่ง Output โดยเพิ่มเงื่อนไขว่า ค่า Confidence ของ Staff ต้อง $\ge 0.88$ เท่านั้น (จากเดิม 0.80) เพื่อลดอัตราการโดนหลอกด้วยรูปภาพปลอม (Anti-spoofing เบื้องต้น) ### Hypothesis ``` -เราคาดว่าหลัง iterate แล้ว accuracy จะเพิ่มจาก ____% เป็น ____% -เพราะ _________________________________________________ +เราคาดว่าหลัง iterate แล้ว accuracy จะเพิ่มจาก 60% เป็น 85% +เพราะ การทำ Data Augmentation ด้านแสง (Brightness) จะช่วยให้โมเดลทนทานต่อจุดย้อนแสง และการเพิ่ม Threshold ฝั่ง Code จะช่วยสกัดรูปภาพปลอมบนมือถือที่มีค่า Confidence คาบลูกคาบดอกไม่ให้ผ่านเข้าคลาส Staff ได้ ``` --- @@ -108,31 +102,30 @@ | # | Case ที่ทดสอบ | Predicted | Confidence | Response Time | Output/Action | Actual | ถูก/ผิด | เทียบกับ V1 | |---|---|---|---|---|---|---|---|---| -| 1 | | | | | | | | ☐ ดีขึ้น ☐ เท่าเดิม ☐ แย่ลง | -| 2 | | | | | | | | ☐ ดีขึ้น ☐ เท่าเดิม ☐ แย่ลง | -| 3 | | | | | | | | ☐ ดีขึ้น ☐ เท่าเดิม ☐ แย่ลง | -| 4 | | | | | | | | ☐ ดีขึ้น ☐ เท่าเดิม ☐ แย่ลง | -| 5 | | | | | | | | ☐ ดีขึ้น ☐ เท่าเดิม ☐ แย่ลง | -| 6 | | | | | | | | ☐ ดีขึ้น ☐ เท่าเดิม ☐ แย่ลง | -| 7 | | | | | | | | ☐ ดีขึ้น ☐ เท่าเดิม ☐ แย่ลง | -| 8 | | | | | | | | ☐ ดีขึ้น ☐ เท่าเดิม ☐ แย่ลง | -| 9 | | | | | | | | ☐ ดีขึ้น ☐ เท่าเดิม ☐ แย่ลง | -| 10 | | | | | | | | ☐ ดีขึ้น ☐ เท่าเดิม ☐ แย่ลง | -| 11 | | | | | | | | new case | -| 12 | | | | | | | | new case | -| 13 | | | | | | | | new case | -| 14 | | | | | | | | new case | -| 15 | | | | | | | | new case | +| 1 | Staff A ยืนหน้าตรง ระยะ 1 เมตร | Authorized_Staff | 0.96 | 45 ms | Pixels เขียว | Authorized_Staff | ✅ ถูก | ☑ ดีขึ้น ☐ เท่าเดิม ☐ แย่ลง | +| 2 | Staff B หันซ้าย-ขวา ช้าๆ | Authorized_Staff | 0.89 | 47 ms | Pixels เขียว | Authorized_Staff | ✅ ถูก | ☑ ดีขึ้น ☐ เท่าเดิม ☐ แย่ลง | +| 3 | คนแปลกหน้า (Stranger) เดินผ่านหน้ากล้อง | Stranger | 0.91 | 42 ms | Pixels เหลือง + Beep | Stranger | ✅ ถูก | ☑ ดีขึ้น ☐ เท่าเดิม ☐ แย่ลง | +| 4 | ฉากห้องว่าง ไม่มีคนอยู่ | No_Face | 0.99 | 40 ms | ปิดไฟ Pixels | No_Face | ✅ ถูก | ☐ ดีขึ้น ☑ เท่าเดิม ☐ แย่ลง | +| 5 | Staff A ใส่ผ้าปิดปาก (Mask) เดินเข้ามา | Authorized_Staff | 0.81 | 54 ms | Pixels เขียว | Authorized_Staff | ✅ ถูก | ☑ ดีขึ้น ☐ เท่าเดิม ☐ แย่ลง | +| 6 | ใช้รูปถ่ายของ Staff A บนจอมือถือส่องกล้อง | Stranger | 0.74 | 46 ms | Pixels เหลือง (บล็อกผ่าน) | Blacklist | ❌ ผิด | ☑ ดีขึ้น ☐ เท่าเดิม ☐ แย่ลง (Conf ลดลงจนไม่ผ่าน Staff) | +| 7 | คนแปลกหน้าสวมแว่นตากันแดด | Stranger | 0.80 | 52 ms | Pixels เหลือง + Beep | Stranger | ✅ ถูก | ☑ ดีขึ้น ☐ เท่าเดิม ☐ แย่ลง | +| 8 | ลายเสื้อยืดที่เป็นรูปใบหน้าการ์ตูน | No_Face | 0.94 | 42 ms | ปิดไฟ Pixels | No_Face | ✅ ถูก | ☐ ดีขึ้น ☑ เท่าเดิม ☐ แย่ลง | +| 9 | Staff C ยืนในมุมมืดย้อนแสงริมหน้าต่าง | Authorized_Staff | 0.88 | 49 ms | Pixels เขียว | Authorized_Staff | ✅ ถูก | ☑ ดีขึ้น ☐ เท่าเดิม ☐ แย่ลง | +| 10 | บุคคลในกลุ่ม Blacklist เดินเข้ามาตรงๆ | Blacklist | 0.89 | 46 ms | Pixels แดง + ไซเรน | Blacklist | ✅ ถูก | ☑ ดีขึ้น ☐ เท่าเดิม ☐ แย่ลง | +| 11 | [New] คนแปลกหน้าสวมทั้ง Mask และแว่นตา | No_Face | 0.75 | 56 ms | ปิดไฟ Pixels | Stranger | ❌ ผิด | new case (ข้อมูลถูกบังมากเกินไป) | +| 12 | [New] สมาชิก Staff เดินเข้าหากล้องอย่างรวดเร็ว | Authorized_Staff | 0.84 | 45 ms | Pixels เขียว | Authorized_Staff | ✅ ถูก | new case | +| 13 | [New] รูปภาพหน้าจอมือถือของคนแปลกหน้า | Stranger | 0.87 | 44 ms | Pixels เหลือง | Stranger | ✅ ถูก | new case | +| 14 | [New] Staff ยืนซ้อนกัน 2 คนในกล้อง | Authorized_Staff | 0.82 | 58 ms | Pixels เขียว (จับคนหน้า) | Authorized_Staff | ✅ ถูก | new case | +| 15 | [New] นำรูปภาพ Blacklist ปริ้นท์ใส่กระดาษมาส่อง | Stranger | 0.71 | 46 ms | Pixels เหลือง | Blacklist | ❌ ผิด | new case (แยกกระดาษกับตัวจริงยาก) | ### V2 Summary | Metric | V1 | V2 | Δ | |---|---|---|---| -| Accuracy | __% | __% | +/-__% | -| Avg confidence (ถูก) | __ | __ | +/-__ | -| Avg confidence (ผิด) | __ | __ | +/-__ | -| Avg response time | __ ms | __ ms | +/-__ ms | - +| Accuracy |60.00% |80.00% | +20.00% | +| Avg confidence (ถูก) | 0.89 | 0.90 | +0.01 | +| Avg confidence (ผิด) | 0.71 | 0.73 | +0.02 | +| Avg response time | 46.60 ms | 47.20 ms | +0.60 ms | --- ## 📊 Comparison V1 vs V2 @@ -141,17 +134,17 @@ ### ดีขึ้นเพราะอะไร? ``` -[เขียน] +ผลลัพธ์ดีขึ้นอย่างเห็นได้ชัดจากการเปิดฟังก์ชัน Data Augmentation ใน Edge Impulse (ช่วยแก้ปัญหาย้อนแสงใน Case 9) และการเพิ่มภาพถ่ายตอนใส่ Mask/แว่นตา ทำให้โมเดลเรียนรู้โครงสร้างรอบดวงตาและหน้าผากเพื่อระบุตัวตนได้แม้จะโดนบังไปครึ่งหน้า นอกจากนี้การปรับเพิ่ม Threshold ข้อมูลฝั่งซอฟต์แวร์บอร์ดช่วยสกัดกั้นการโกงด้วยภาพถ่ายจอมือถือของสตาฟได้ดีขึ้น (เปลี่ยนจากทายถูกเป็นสตาฟปลอม กลายเป็นทายว่าเป็นคนแปลกหน้า ซึ่งปลอดภัยกว่าเดิม) ``` ### แย่ลงตรงไหน? (ถ้ามี) ``` -[เขียน — ตอบตรงๆ ไม่ต้องกลัวถูกหักคะแนน] +Response Time เฉลี่ยเพิ่มขึ้นเล็กน้อยประมาณ 0.6 ms เนื่องจากโมเดลต้องประมวลผลกับภาพที่มีความซับซ้อนเพิ่มขึ้น และหากกรณีที่ Subject ใส่เครื่องประดับปิดบังมากเกินไป (ทั้งแว่นและ Mask พร้อมกันใน Case 11) โมเดลจะตัดสิทธิ์มองเป็นวัตถุสิ่งของทันที (No_Face) ซึ่งส่งผลให้เกิด False Negative ``` ### ถ้ามีเวลาอีก จะทำ V3 ยังไง? ``` -[เขียน] +หากมีเวลาพัฒนาต่อในเวอร์ชัน V3 ทางทีมจะปรับไปใช้โครงสร้างโมเดลที่เป็น Object Detection ร่วมกับ Face Landmark (เช่น การใช้ชุดคำสั่งจากคอมพิวเตอร์ภายนอกร่วมกับบอร์ด) เพื่อทำการตรวจจับการเคลื่อนไหวเชิงลึกแบบ 3D (Liveness Detection) เช่น บังคับให้ผู้ใช้งานต้องกะพริบตาหรือหันหัวก่อนระบบจะส่งสัญญาณอนุมัติ เพื่อแก้ปัญหาการนำรูปภาพบนกระดาษหรือจอมือถือมาส่องหลอกระบบ (Anti-Spoofing) ได้อย่างเด็ดขาด ``` ---