โมดูล 4/5 · สัปดาห์ 10–12 · 27 ชม.

วิเคราะห์ความผิดปกติ

UAT 362 เทคโนโลยีระบบอากาศยานไร้คนขับเพื่ออุตสาหกรรม พลังงาน และโครงสร้างพื้นฐาน

เวลาเรียนประมาณ 90 นาทีร่าง รอตรวจปรับปรุงล่าสุด 27 กันยายน 2569

บทเรียน

เมื่อเรียนจบโมดูลนี้ ผู้เรียนจะสามารถ

  1. อ่าน confusion matrix และคำนวณ precision, recall และ F1 ของระบบตรวจหาความผิดปกติ
  2. เลือก threshold ของโมเดลตามต้นทุนของการพลาดกับการเตือนผิด
  3. คำนวณอัตราสุ่มเฟรมจากวิดีโอให้ภาพซ้อนกันพอสำหรับการวิเคราะห์
  4. อธิบายข้อจำกัดของภาพ RGB และภาพความร้อนก่อนสรุปผล

ความรู้พื้นฐานที่ควรมี: UAT 362 โมดูล 1–3 · UAT 322 (AI บนโดรน)

ทำไมต้องรู้

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

Confusion matrix

เมื่อเทียบผลของ AI กับการตรวจยืนยันของผู้เชี่ยวชาญ ได้สี่กลุ่ม

  • TP (true positive) AI บอกผิดปกติ และผิดปกติจริง
  • FP (false positive) AI บอกผิดปกติ แต่ปกติ คือการเตือนผิด
  • FN (false negative) AI บอกปกติ แต่ผิดปกติจริง คือการพลาด
  • TN (true negative) AI บอกปกติ และปกติจริง
ตารางสองคูณสอง แถวคือค่าจริง คอลัมน์คือค่าที่ AI ทำนาย TP 42 สีเขียว FN 8 สีชมพู FP 12 สีส้ม และ TN สีเทา ด้านขวามีสูตร precision recall และ F1
ภาพที่ 1 Confusion matrix ที่ threshold 0.5

ตามนิยามในเอกสารของ scikit-learn precision คือสัดส่วนที่เตือนแล้วถูก recall คือสัดส่วนของความผิดปกติจริงที่หาเจอ และ F1 คือค่าเฉลี่ยฮาร์มอนิกของทั้งสอง ในงานตรวจสินทรัพย์ TN มักมีจำนวนมหาศาล ค่า accuracy จึงดูสูงเสมอและไม่มีประโยชน์นัก

ตัวอย่างที่ 1 เลือก threshold จาก precision และ recall

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

results = {  # threshold: (TP, FP, FN)
    0.3: (46, 30, 4),
    0.5: (42, 12, 8),
    0.7: (33, 4, 17),
}
for th, (tp, fp, fn) in results.items():
    p, r = tp / (tp + fp), tp / (tp + fn)
    f1 = 2 * p * r / (p + r)
    print(f"threshold {th}: precision {p:.3f}, recall {r:.3f}, F1 {f1:.3f}, "
          f"missed {fn}, false alarms {fp}")
threshold 0.3: precision 0.605, recall 0.920, F1 0.730, missed 4, false alarms 30
threshold 0.5: precision 0.778, recall 0.840, F1 0.808, missed 8, false alarms 12
threshold 0.7: precision 0.892, recall 0.660, F1 0.759, missed 17, false alarms 4

threshold 0.5 ได้ F1 สูงสุด แต่ไม่จำเป็นต้องเป็นตัวเลือกที่ดีที่สุด ถ้าการพลาดข้อต่อร้อนหนึ่งจุดอาจทำให้ไฟดับทั้งนิคม ทีมอาจเลือก 0.3 ที่พลาดเพียง 4 จุด แล้วให้คนคัดการเตือนผิด 30 จุดออก การเลือก threshold จึงเป็นการตัดสินใจทางธุรกิจและความปลอดภัย ไม่ใช่เพียงค่าทางสถิติ

กราฟแกนนอน recall แกนตั้ง precision สามจุด threshold 0.7 อยู่ซ้ายบน precision สูง recall ต่ำ threshold 0.5 อยู่กลาง threshold 0.3 อยู่ขวาล่าง recall สูง precision ต่ำ ด้านขวามีกล่องบอกว่า threshold สูงเตือนผิดน้อยแต่พลาดมาก
ภาพที่ 2 การแลกระหว่าง precision กับ recall

จากวิดีโอสู่ภาพที่วิเคราะห์ได้

วิดีโอ 30 เฟรมต่อวินาทีมีภาพซ้ำกันมาก การวิเคราะห์ทุกเฟรมเปลืองเวลาและนับความผิดปกติจุดเดียวซ้ำหลายครั้ง จึงควรสุ่มเฟรมให้ภาพต่อเนื่องซ้อนกันพอดีกับที่ต้องการ

ตัวอย่างที่ 2 สุ่มเฟรมจากวิดีโอ

ภาพหนึ่งเฟรมครอบคลุมพื้นตามแนวบิน 20 m ต้องการซ้อนกัน 80% บิน 5 m/s วิดีโอ 30 fps

FOOT_ALONG, OVERLAP, SPEED, FPS = 20.0, 0.80, 5.0, 30

interval_s = FOOT_ALONG * (1 - OVERLAP) / SPEED
step = int(interval_s * FPS + 1e-9)
print(f"need one frame every {interval_s:.2f} s = one in every {step} frames at {FPS} fps")
print(f"a 10-minute video: {10 * 60 * FPS:,} frames -> {10 * 60 * FPS // step:,} frames to analyse")
need one frame every 0.80 s = one in every 24 frames at 30 fps
a 10-minute video: 18,000 frames -> 750 frames to analyse

การสุ่มเฟรมลดงานลงหลายสิบเท่า แต่ยังต้องตรวจความเบลอ (โมดูล 1) เพราะวิดีโอมักใช้ชัตเตอร์ช้ากว่าภาพนิ่ง และต้องรวมการตรวจพบที่ซ้ำกันในหลายเฟรมให้เป็นจุดเดียวตามตำแหน่ง

ข้อจำกัดของภาพ

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

ปฏิบัติการประจำโมดูล

ปฏิบัติการ: ประเมินโมเดลตรวจหาความผิดปกติ

  1. เตรียมชุดภาพทดสอบที่ผู้เชี่ยวชาญติดป้ายความผิดปกติไว้ แยกจากชุดที่ใช้ฝึกโมเดล
  2. รันโมเดลตรวจจับ (เช่น จาก UAT 322) บันทึก TP, FP, FN ที่ threshold อย่างน้อยสามค่า
  3. ใช้โค้ดตัวอย่างที่ 1 คำนวณ precision, recall และ F1 แล้วเลือก threshold พร้อมเหตุผลด้านต้นทุนและความปลอดภัย
  4. สุ่มเฟรมจากวิดีโอจริงด้วยโค้ดตัวอย่างที่ 2 ตรวจว่าไม่มีช่วงขาดหาย
  5. เขียนรายงานที่แยกสิ่งที่เห็น สิ่งที่ถูกบัง และสิ่งที่ยังไม่ทราบ

ข้อผิดพลาดที่พบบ่อย

ระวัง

  • รายงาน accuracy เมื่อภาพปกติมีมากกว่าภาพผิดปกติมาก
  • ทดสอบด้วยภาพชุดเดียวกับที่ฝึก
  • เลือก threshold จาก F1 อย่างเดียว โดยไม่คิดต้นทุนของการพลาด
  • นับความผิดปกติซ้ำจากหลายเฟรม
  • อ่านอุณหภูมิจากสีของภาพความร้อนที่ไม่มีข้อมูลวัด

สรุป

  • Confusion matrix แยก TP, FP, FN, TN precision บอกความถูกของการเตือน recall บอกการหาเจอ
  • threshold แลก precision กับ recall ต้องเลือกตามต้นทุนของการพลาดและการเตือนผิด
  • สุ่มเฟรมจากวิดีโอตามการซ้อนภาพที่ต้องการ และรวมการตรวจพบซ้ำ
  • สีไม่ใช่ค่าวัด และสิ่งที่ถูกบังไม่ได้แปลว่าไม่มี

แบบฝึกตรวจความเข้าใจ

  1. TP = 30, FP = 10, FN = 20 precision และ recall เท่าใด
  2. จากข้อ 1 F1 เท่าใด
  3. ถ้าการพลาดความเสียหายแพงมาก ควรเลือก threshold สูงหรือต่ำ
  4. footprint 15 m ซ้อน 75% บิน 5 m/s วิดีโอ 30 fps ต้องใช้ทุกกี่เฟรม
  5. ทำไม accuracy จึงทำให้เข้าใจผิดในงานตรวจสินทรัพย์
เฉลย
  1. ,
  2. ต่ำ เพื่อให้ recall สูง แล้วให้คนคัดการเตือนผิด
  3. s ดังนั้นทุก เฟรม
  4. ภาพปกติมีจำนวนมาก โมเดลที่ตอบว่าปกติทุกภาพก็ได้ accuracy สูง

สรุปสูตรสำคัญ

Precision และ recall
F1
ช่วงเวลาระหว่างเฟรมที่ใช้

แหล่งอ้างอิงหลัก

  1. scikit-learn developers. Metrics and scoring: Quantifying the quality of predictions (scikit-learn 1.9). link
  2. Szeliski, R. (2022). Computer vision: Algorithms and applications (2nd ed.). Springer. link
  3. OpenCV. OpenCV documentation. link
  4. Redmon, J., Divvala, S., Girshick, R., & Farhadi, A. (2016). You only look once: Unified, real-time object detection. In Proceedings of CVPR 2016 (pp. 779–788). link
  5. Memari, M., Shakya, P., Shekaramiz, M., Seibi, A. C., & Masoum, M. A. S. (2024). Review on the advancements in wind turbine blade inspection: Integrating drone and deep learning technologies for enhanced defect detection. IEEE Access, 12, 33236–33282. link
  6. O'Connor, J., Smith, M. J., & James, M. R. (2017). Cameras and settings for aerial surveys in the geosciences: Optimising image data. Progress in Physical Geography, 41(3), 325–344. link

อ่านเพิ่มเติม

ศึกษาหน่วยความรู้ที่กำหนดล่วงหน้า ดูสื่อประกอบ และทำ quiz ประจำโมดูล

ในชั้นเรียน / ภาคสนาม

ปฏิบัติการเข้มข้นในแล็บและภาคสนาม บันทึกผลลงสมุดปฏิบัติการ

หลักฐานการเรียนรู้: สมุดปฏิบัติการที่อาจารย์ลงนาม

แบบทดสอบประจำโมดูล

แบบทดสอบนี้ใช้ตรวจความเข้าใจ (formative) ไม่ใช่การสอบเก็บคะแนน

โดเมนความรู้: ปัญญาประดิษฐ์และคอมพิวเตอร์วิทัศน์ · การตรวจสอบ อุตสาหกรรม และการเฝ้าระวัง · การสำรวจ ทำแผนที่ และภูมิสารสนเทศ