โมดูล 5/5 · สัปดาห์ 13–15 · 27 ชม.

ประเมินความเชื่อถือได้ของการรับรู้

UAT 307 การมองเห็นด้วยคอมพิวเตอร์และเทคโนโลยีการรับรู้

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

บทเรียน

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

  1. คำนวณความคลาดเคลื่อนของเส้นทาง (ATE) หลังจัดแนวเส้นทางด้วยวิธีของ Umeyama
  2. อธิบายความต่างของ ATE และ RPE และเลือกใช้ให้ถูกกับคำถาม
  3. หาช่วงที่ระบบรับรู้เสียการติดตามจาก timestamp
  4. ระบุข้อจำกัดของภาพ RGB และภาพความร้อนที่ทำให้การรับรู้ผิด

ความรู้พื้นฐานที่ควรมี: UAT 307 โมดูล 1–4

ทำไมต้องรู้

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

ATE และการจัดแนว

เส้นทางจากระบบนำทางด้วยภาพมักอยู่ในกรอบพิกัดของตัวเอง ซึ่งหมุนและเลื่อนไปจากกรอบพิกัดของค่าอ้างอิง ถ้าเทียบตรง ๆ จะได้ความคลาดเคลื่อนสูงเกินจริง Sturm และคณะ (2012) กำหนดให้ ATE (absolute trajectory error) คำนวณหลังจัดแนวเส้นทางสองเส้นด้วยการแปลงที่ดีที่สุด ซึ่งหาได้ด้วยวิธีกำลังสองน้อยที่สุดของ Umeyama (1991) ส่วน RPE (relative pose error) วัดความคลาดเคลื่อนของการเคลื่อนที่ในช่วงสั้น จึงบอกการลอยสะสม ATE เหมาะตอบว่า “เส้นทางโดยรวมตรงแค่ไหน” RPE เหมาะตอบว่า “ลอยเร็วแค่ไหน”

ตัวอย่างที่ 1 ATE ก่อนและหลังจัดแนว

เส้นทางวงรีอ้างอิง กับเส้นทางที่ประมาณได้ซึ่งหมุนไป 8° เลื่อนไป (3, −2) m และมีสัญญาณรบกวน 0.3 m (ข้อมูลจำลอง)

import math
import numpy as np

t = np.linspace(0, 2 * np.pi, 40)
gt = np.c_[20 * np.cos(t), 10 * np.sin(t)]                           # m
th = math.radians(8)
rot = np.array([[math.cos(th), -math.sin(th)], [math.sin(th), math.cos(th)]])
est = gt @ rot.T + np.array([3.0, -2.0]) + np.random.default_rng(2).normal(0, 0.3, gt.shape)

raw = np.sqrt(np.mean(np.sum((est - gt) ** 2, axis=1)))
mu_e, mu_g = est.mean(0), gt.mean(0)
U, _, Vt = np.linalg.svd((gt - mu_g).T @ (est - mu_e))               # Umeyama แบบไม่ปรับมาตราส่วน
D = np.diag([1, np.sign(np.linalg.det(U @ Vt))])
R = U @ D @ Vt
aligned = (est - mu_e) @ R.T + mu_g
ate = np.sqrt(np.mean(np.sum((aligned - gt) ** 2, axis=1)))
print(f"error without alignment {raw:.2f} m")
print(f"ATE after alignment {ate:.2f} m (rotation found {math.degrees(math.atan2(R[1, 0], R[0, 0])):.1f} deg)")
error without alignment 4.22 m
ATE after alignment 0.42 m (rotation found -7.7 deg)

ก่อนจัดแนว ความคลาดเคลื่อนหลายเมตรมาจากการที่กรอบพิกัดต่างกันเป็นส่วนใหญ่ หลังจัดแนวเหลือใกล้ระดับสัญญาณรบกวน ซึ่งเป็นความคลาดเคลื่อนของรูปร่างเส้นทางจริง การรายงาน ATE ต้องบอกว่าจัดแนวแบบใด (หมุนและเลื่อน หรือรวมมาตราส่วนด้วย) เพราะการปรับมาตราส่วนจะซ่อนปัญหามาตราส่วนของกล้องตัวเดียวที่เรียนในโมดูล 4

เส้นทางวงรีสามเส้น เส้นประสีทองคือค่าอ้างอิง เส้นสีชมพูคือค่าที่ประมาณก่อนจัดแนวซึ่งหมุนและเลื่อนออกไป เส้นสีฟ้าหลังจัดแนวทับเส้นอ้างอิงเกือบพอดี
ภาพที่ 1 เส้นทางก่อนและหลังจัดแนว

ช่วงที่เสียการติดตาม

ระบบรับรู้ด้วยภาพจะเสียการติดตามเมื่อภาพไม่มีลักษณะเด่นพอ เช่น เหนือผิวน้ำ พื้นหญ้าสม่ำเสมอ ถูกแสงแดดส่องตรง หรือเคลื่อนที่เร็วจนภาพเบลอ ระหว่างนั้นระบบอาจไม่ส่งตำแหน่ง หรือส่งค่าที่ลอยตาม IMU การหาช่วงเหล่านี้จาก timestamp ของผลลัพธ์เป็นการตรวจเบื้องต้นที่ทำได้ทันที

ตัวอย่างที่ 2 ช่วงเวลาที่ไม่มีผลลัพธ์

ระบบส่งผลที่ 20 Hz ตลอดเที่ยวบิน 30 วินาที ทีมถือว่าช่องว่างเกิน 0.2 วินาทีคือเสียการติดตาม (ข้อมูลจำลอง)

import numpy as np

ts = np.arange(0, 30, 0.05)
ts = ts[~(((ts > 12.0) & (ts < 13.6)) | ((ts > 21.0) & (ts < 21.4)))]   # ช่วงที่หายไป
gaps = np.diff(ts)
lost = gaps > 0.2
print(f"{ts.size} outputs, {lost.sum()} gaps over 0.2 s")
for start, g in zip(ts[:-1][lost], gaps[lost]):
    print(f"  lost at t = {start:.2f} s for {g:.2f} s")
print(f"time without tracking {gaps[lost].sum():.2f} s = {gaps[lost].sum() / 30:.1%} of the flight, longest {gaps.max():.2f} s")
562 outputs, 2 gaps over 0.2 s
  lost at t = 12.00 s for 1.60 s
  lost at t = 21.00 s for 0.40 s
time without tracking 2.00 s = 6.7% of the flight, longest 1.60 s

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

แถบเวลา 0 ถึง 30 วินาที ส่วนสีฟ้าคือช่วงที่มีผลลัพธ์ ช่องว่างสีชมพูสองช่วง ช่วงแรกราว 12 ถึง 13.6 วินาที ช่วงที่สองราว 21 ถึง 21.4 วินาที
ภาพที่ 2 ช่วงที่ระบบรับรู้เสียการติดตาม

ข้อจำกัดของภาพ RGB และภาพความร้อน

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

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

ปฏิบัติการ: ประเมินระบบรับรู้อย่างยุติธรรม

  1. สร้างเส้นทางอ้างอิงและเส้นทางที่ประมาณสังเคราะห์ ทดลองตัวอย่างที่ 1 ด้วยมุมและการเลื่อนต่าง ๆ
  2. ใช้ชุดข้อมูลที่บันทึกไว้ในโมดูล 4 คำนวณ ATE หลังจัดแนว และ RPE ช่วง 1 วินาที
  3. หาช่วงเสียการติดตามด้วยตัวอย่างที่ 2 แล้วดูภาพช่วงนั้นว่าเกิดจากอะไร
  4. บินเหนือพื้นผิวต่างกัน (หญ้า ถนน น้ำ) เทียบสัดส่วนเวลาที่เสียการติดตาม
  5. เขียนเงื่อนไขการใช้งานและข้อจำกัดของระบบรับรู้ของทีม

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

ระวัง

  • เทียบเส้นทางโดยไม่จัดแนว แล้วสรุปว่าระบบแย่
  • จัดแนวรวมมาตราส่วน จนซ่อนปัญหามาตราส่วน
  • รายงานแค่ ATE เมื่อคำถามคือการลอยสะสม
  • ดูแต่ค่าเฉลี่ย ไม่ดูช่วงที่เสียการติดตาม
  • อ่านสีในภาพความร้อนเป็นอุณหภูมิจริง โดยไม่รู้ค่าการแผ่รังสี

สรุป

  • ATE คำนวณหลังจัดแนวด้วยวิธีของ Umeyama และต้องระบุว่าจัดแนวแบบใด
  • ATE บอกความตรงของเส้นทางโดยรวม RPE บอกการลอยในช่วงสั้น
  • ช่วงเสียการติดตามหาได้จากช่องว่างของ timestamp และต้องมีการรับมือที่กำหนดไว้
  • ภาพ RGB และภาพความร้อนต่างมีข้อจำกัด ต้องรู้ชนิดข้อมูลก่อนตีความ

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

  1. ทำไมต้องจัดแนวก่อนคำนวณ ATE
  2. ATE กับ RPE ต่างกันอย่างไร
  3. ผลลัพธ์ 20 Hz มีช่องว่าง 1.2 s หายไปกี่ผลลัพธ์โดยประมาณ
  4. ทำไมไม่ควรปรับมาตราส่วนเมื่อจัดแนวผลของกล้องตัวเดียวกับ IMU
  5. ทำไมภาพความร้อนของหลังคาโลหะอาจแสดงอุณหภูมิผิด
เฉลย
  1. กรอบพิกัดของสองเส้นทางต่างกัน ถ้าไม่จัดแนว ความคลาดเคลื่อนจะรวมความต่างของกรอบพิกัด
  2. ATE วัดความตรงของเส้นทางโดยรวม RPE วัดความคลาดของการเคลื่อนที่ในช่วงสั้นหรือการลอย
  3. ราว ผลลัพธ์ (ประมาณ 23 เพราะช่วงนับจากผลลัพธ์ก่อนหน้า)
  4. ระบบนั้นควรรู้มาตราส่วนเอง การปรับจะซ่อนความผิดของมาตราส่วน
  5. โลหะมันวาวมีค่าการแผ่รังสีต่ำและสะท้อนความร้อนจากสิ่งอื่น

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

ATE (RMSE หลังจัดแนว)
สัดส่วนเวลาที่เสียการติดตาม

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

  1. Sturm, J., Engelhard, N., Endres, F., Burgard, W., & Cremers, D. (2012). A benchmark for the evaluation of RGB-D SLAM systems. In 2012 IEEE/RSJ International Conference on Intelligent Robots and Systems (pp. 573–580). link
  2. Umeyama, S. (1991). Least-squares estimation of transformation parameters between two point patterns. IEEE Transactions on Pattern Analysis and Machine Intelligence, 13(4), 376–380. link
  3. Szeliski, R. (2022). Computer vision: Algorithms and applications (2nd ed.). Springer. link
  4. Corke, P. (2023). Robotics, vision and control: Fundamental algorithms in Python. Springer. link

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

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

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

ปฏิบัติการในห้องแล็บหรือภาคสนามตามใบงาน พร้อม checklist ความปลอดภัย

หลักฐานการเรียนรู้: ใบงานที่ผ่านการตรวจและผล quiz

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

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

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