ประเมินความเชื่อถือได้ของการรับรู้
UAT 307 การมองเห็นด้วยคอมพิวเตอร์และเทคโนโลยีการรับรู้
บทเรียน
เมื่อเรียนจบโมดูลนี้ ผู้เรียนจะสามารถ
- คำนวณความคลาดเคลื่อนของเส้นทาง (ATE) หลังจัดแนวเส้นทางด้วยวิธีของ Umeyama
- อธิบายความต่างของ ATE และ RPE และเลือกใช้ให้ถูกกับคำถาม
- หาช่วงที่ระบบรับรู้เสียการติดตามจาก timestamp
- ระบุข้อจำกัดของภาพ RGB และภาพความร้อนที่ทำให้การรับรู้ผิด
ทำไมต้องรู้
ระบบรับรู้ที่ดูดีในวิดีโอสาธิตอาจล้มเหลวในงานจริง หน่วยความรู้เรื่องรู้ได้อย่างไรว่าตำแหน่งที่ได้เชื่อถือได้ของคลังความรู้โดรนสอนอ่านความคลาดเคลื่อน การจัดแนว และการเสียการติดตาม พร้อมเงื่อนไขที่ทำให้การเปรียบเทียบยุติธรรม หน่วยความรู้เรื่องแบบฝึกอ่านข้อมูลนำทางสังเคราะห์ให้เริ่มจาก 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
ช่วงที่เสียการติดตาม
ระบบรับรู้ด้วยภาพจะเสียการติดตามเมื่อภาพไม่มีลักษณะเด่นพอ เช่น เหนือผิวน้ำ พื้นหญ้าสม่ำเสมอ ถูกแสงแดดส่องตรง หรือเคลื่อนที่เร็วจนภาพเบลอ ระหว่างนั้นระบบอาจไม่ส่งตำแหน่ง หรือส่งค่าที่ลอยตาม 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 วินาทีเป็นช่วงที่อันตราย ถ้าโดรนพึ่งตำแหน่งจากภาพอย่างเดียว ต้องดูบันทึกภาพช่วงนั้นว่าเกิดจากอะไร และกำหนดว่าระบบต้องทำอย่างไรเมื่อเสียการติดตามเกินเวลาที่ยอมรับ เช่น ลดระดับไปใช้โหมดที่ไม่ต้องใช้ตำแหน่ง หรือหยุดลอยตัวรอ
ข้อจำกัดของภาพ RGB และภาพความร้อน
ภาพ RGB ใช้ไม่ได้ในที่มืด หมอก และแสงสะท้อน ภาพความร้อนเห็นในที่มืด แต่แสดง อุณหภูมิที่ปรากฏ ซึ่งขึ้นกับค่าการแผ่รังสีของพื้นผิว ผิวโลหะมันวาวสะท้อนความร้อนจากสิ่งอื่น และสีในภาพความร้อนเป็นการแมปสีที่ตั้งได้ ไม่ใช่สีจริง ก่อนให้ความหมายกับภาพ ต้องรู้ว่าเป็นภาพแบบเรดิโอเมตริกหรือไม่ และตั้งค่าอย่างไร
ปฏิบัติการประจำโมดูล
ปฏิบัติการ: ประเมินระบบรับรู้อย่างยุติธรรม
- สร้างเส้นทางอ้างอิงและเส้นทางที่ประมาณสังเคราะห์ ทดลองตัวอย่างที่ 1 ด้วยมุมและการเลื่อนต่าง ๆ
- ใช้ชุดข้อมูลที่บันทึกไว้ในโมดูล 4 คำนวณ ATE หลังจัดแนว และ RPE ช่วง 1 วินาที
- หาช่วงเสียการติดตามด้วยตัวอย่างที่ 2 แล้วดูภาพช่วงนั้นว่าเกิดจากอะไร
- บินเหนือพื้นผิวต่างกัน (หญ้า ถนน น้ำ) เทียบสัดส่วนเวลาที่เสียการติดตาม
- เขียนเงื่อนไขการใช้งานและข้อจำกัดของระบบรับรู้ของทีม
ข้อผิดพลาดที่พบบ่อย
ระวัง
- เทียบเส้นทางโดยไม่จัดแนว แล้วสรุปว่าระบบแย่
- จัดแนวรวมมาตราส่วน จนซ่อนปัญหามาตราส่วน
- รายงานแค่ ATE เมื่อคำถามคือการลอยสะสม
- ดูแต่ค่าเฉลี่ย ไม่ดูช่วงที่เสียการติดตาม
- อ่านสีในภาพความร้อนเป็นอุณหภูมิจริง โดยไม่รู้ค่าการแผ่รังสี
สรุป
- ATE คำนวณหลังจัดแนวด้วยวิธีของ Umeyama และต้องระบุว่าจัดแนวแบบใด
- ATE บอกความตรงของเส้นทางโดยรวม RPE บอกการลอยในช่วงสั้น
- ช่วงเสียการติดตามหาได้จากช่องว่างของ timestamp และต้องมีการรับมือที่กำหนดไว้
- ภาพ RGB และภาพความร้อนต่างมีข้อจำกัด ต้องรู้ชนิดข้อมูลก่อนตีความ
แบบฝึกตรวจความเข้าใจ
- ทำไมต้องจัดแนวก่อนคำนวณ ATE
- ATE กับ RPE ต่างกันอย่างไร
- ผลลัพธ์ 20 Hz มีช่องว่าง 1.2 s หายไปกี่ผลลัพธ์โดยประมาณ
- ทำไมไม่ควรปรับมาตราส่วนเมื่อจัดแนวผลของกล้องตัวเดียวกับ IMU
- ทำไมภาพความร้อนของหลังคาโลหะอาจแสดงอุณหภูมิผิด
เฉลย
- กรอบพิกัดของสองเส้นทางต่างกัน ถ้าไม่จัดแนว ความคลาดเคลื่อนจะรวมความต่างของกรอบพิกัด
- ATE วัดความตรงของเส้นทางโดยรวม RPE วัดความคลาดของการเคลื่อนที่ในช่วงสั้นหรือการลอย
- ราว ผลลัพธ์ (ประมาณ 23 เพราะช่วงนับจากผลลัพธ์ก่อนหน้า)
- ระบบนั้นควรรู้มาตราส่วนเอง การปรับจะซ่อนความผิดของมาตราส่วน
- โลหะมันวาวมีค่าการแผ่รังสีต่ำและสะท้อนความร้อนจากสิ่งอื่น
สรุปสูตรสำคัญ
| ATE (RMSE หลังจัดแนว) | |
| สัดส่วนเวลาที่เสียการติดตาม |
แหล่งอ้างอิงหลัก
- 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
- 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
- Szeliski, R. (2022). Computer vision: Algorithms and applications (2nd ed.). Springer. link
- Corke, P. (2023). Robotics, vision and control: Fundamental algorithms in Python. Springer. link
อ่านเพิ่มเติม
ศึกษาหน่วยความรู้ที่กำหนดล่วงหน้า ดูสื่อประกอบ และทำ quiz ประจำโมดูล
รู้ได้อย่างไรว่าตำแหน่งที่ได้เชื่อถือได้
แบบฝึกอ่านข้อมูลนำทางสังเคราะห์
ข้อจำกัดภาพ RGB และภาพความร้อน
ในชั้นเรียน / ภาคสนาม
ปฏิบัติการในห้องแล็บหรือภาคสนามตามใบงาน พร้อม checklist ความปลอดภัย
หลักฐานการเรียนรู้: ใบงานที่ผ่านการตรวจและผล quiz