Skip to Content

เมื่อ AI "เก่งเกินไป" จนใช้งานจริงไม่ได้ — บทเรียน Overfitting จากโปรเจกต์อ่านป้ายทะเบียนไทย

เราได้ accuracy 97% ในห้องทดสอบ แต่พอเจอโลกจริง ตัวเลขร่วงเหลือ 37% — นี่คือเรื่องราวว่าเราค้นพบมันได้ยังไง และกำลังแก้ไขอย่างไร
2 พฤษภาคม ค.ศ. 2026 โดย
เมื่อ AI "เก่งเกินไป" จนใช้งานจริงไม่ได้ — บทเรียน Overfitting จากโปรเจกต์อ่านป้ายทะเบียนไทย
PWD Vision Works Co.,Ltd., PWD
| ยังไม่มีความคิดเห็น
97.13%
Val Accuracy
ในชุดข้อมูลทดสอบ (epoch 16)
37.5%
Real-World Accuracy
ทดสอบกับป้ายที่ไม่เคยเห็น
150
Epochs (รอบต่อไป)
พร้อม architecture ใหม่

จุดเริ่มต้น: สอน AI ให้อ่านป้ายทะเบียนไทย

โปรเจกต์นี้เกิดขึ้นจากความต้องการจริงในงาน — เราต้องการระบบกล้อง AI ที่อ่านป้ายทะเบียนรถภาษาไทยได้แบบ Real-time บน Hardware ขนาดเล็กอย่าง Raspberry Pi 5 + Hailo-8 AI Accelerator

ปัญหาแรกที่เจอ: Hailo LPRNet ที่มีให้ใน Model Zoo รู้จักแค่ตัวอักษร Latin ไม่รู้จักภาษาไทยแม้แต่ตัวเดียว ทางออกคือต้อง Fine-Tune โมเดลใหม่ด้วยข้อมูลป้ายทะเบียนไทย

เราเริ่มจากการสร้าง Synthetic Dataset — ใช้ Python + PIL สร้างภาพป้ายทะเบียนสังเคราะห์ 100,000+ ภาพในเวลาเพียง 9 นาที ข้อดีคือได้ Label อัตโนมัติ ไม่ต้องนั่ง annotate ทีละใบ แล้วเริ่ม Training บน Jetson AGX Xavier ผ่าน SSH โดยใช้ tmux ให้โปรเซสทำงานต่อเนื่องข้ามคืน


สิ่งที่เราเห็นในระหว่าง Training

โมเดลเรียนรู้ได้เร็วและดีมาก ตัวเลขพุ่งขึ้นอย่างสม่ำเสมอทุก epoch:

Epoch Val Accuracy หมายเหตุ
1085.36%
1189.71%
1292.78%
1394.66%
1595.75%
16 🏆97.13%Best Checkpoint
1797.13%Plateau
1896.24%เริ่มลดลง
Real ⚠37.5%ทดสอบกับ 200 ภาพที่ไม่เคยเห็น

Train 20 Epoch

Epoch 16 ได้ 97.13% Validation Accuracy และไม่เพิ่มขึ้นอีก เราตัดสินใจหยุด export โมเดลออกมาเป็น ONNX แล้วนำไปทดสอบกับข้อมูลชุดใหม่ — ผลที่ได้ทำให้เราต้องหยุดคิดทบทวนทันที


ช็อค: โมเดล "ฉลาดในห้อง" แต่ "งง" ในโลกจริง

"โมเดลอ่านป้ายในชุดฝึกได้ถูกต้องเกือบทั้งหมด แต่พอเจอป้ายใหม่ที่ไม่เคยเห็น — ความแม่นยำหล่นจาก 97% เหลือ 37%"

Metric Validation Set Calibration Set (ใหม่) ต่าง
Overall Accuracy97.13%37.5%−59.6%
Length Mismatches74 / 200 ภาพ37% ของทั้งหมด
Perfect Matches75 / 200ถูกทั้งคำเพียง 37.5%

AI Training State

Correct OCR Thai LPR

Error ที่พบบ่อยที่สุด: โมเดลสับสน ี → ร, า → ร, ร → ุ ซ้ำๆ — และมักใส่ตัวอักษรผิดตัวหรือผิดจำนวนเข้าไปในผลลัพธ์

Most Thai alphabet mis-Reading

ตัวอย่างความผิดพลาด (จาก test report จริง)
Ground Truth: งง6457สมุทรสงคราม
Prediction: งยง64597สมุทรสงคราม ← ใส่ตัวอักษรเกิน 3 ตัว!
 
Ground Truth: ซฉ4708กาญจนบุรี
Prediction: ซธฉ470สกาญจนบุรี ← สลับตัวและใส่เกิน
 
Ground Truth: กด9554ร้อยเอ็ด
Prediction: กด9554ร้อยเอ็ด ← ถูก ✓

False OCR Thai LPR

ทำไมถึงเกิดขึ้น? — ทำความเข้าใจ Overfitting

📖 Overfitting คืออะไร?

จินตนาการว่าเรามีนักเรียนที่อ่านหนังสือเฉลยข้อสอบจำได้ทุกข้อ — แต่ไม่ได้ "เข้าใจ" หลักการจริงๆ พอออกข้อสอบใหม่ที่ดัดแปลงเล็กน้อย ก็ตอบไม่ได้

Overfitting คือปรากฏการณ์เดียวกันในโมเดล AI — มันจำ pattern ของข้อมูลฝึกได้แม่นมาก แต่พอเจอข้อมูลใหม่ที่ไม่เคยเห็น กลับทำงานผิดพลาด เพราะมัน "ท่องจำ" ไม่ใช่ "เรียนรู้"

ในกรณีของเรา โมเดลอาจเริ่มจดจำรายละเอียดเฉพาะของภาพ synthetic เช่น pattern ของฟอนต์ ขนาด หรือตำแหน่งที่คงที่เกินไป แทนที่จะเรียนรู้ feature ของตัวอักษรภาษาไทยอย่างแท้จริง


สัญญาณที่ควรระวัง

⚠ Warning Signs: Validation Accuracy หยุดขึ้นและเริ่มลง ในขณะที่ Training Loss ยังลดต่อเนื่อง — นั่นหมายความว่าโมเดลกำลัง "ท่องจำ" training data มากขึ้น แต่ไม่ได้ generalize ดีขึ้น

1. Synthetic data มีความหลากหลายน้อยเกินไป — ฟอนต์, ขนาด, ตำแหน่งข้อความ และ background ถูก generate ด้วย pattern ที่ค่อนข้างคงที่

2. หยุด train เร็วเกินไปที่ 20 epoch — โมเดลยังอยู่ในช่วงที่ "จดจำ" ไม่ใช่ "ทำความเข้าใจ"

3. Architecture ยังไม่เหมาะสมที่สุด สำหรับ charset ภาษาไทยที่ซับซ้อนกว่า Latin มาก


แผนการแก้ไข — รอบต่อไปจะต่างออกไป

01
ปรับ Architecture ใหม่
ทบทวนสถาปัตยกรรมโมเดลให้รองรับ character sequence ภาษาไทยได้ดีขึ้น
02
เพิ่ม Augmentation
เพิ่มความหลากหลายของ synthetic data — rotation, blur, noise, lighting ที่รุนแรงขึ้น
03
Train ยาวขึ้น: 150 Epoch
ให้โมเดลเวลา generalize มากขึ้น แทนที่จะหยุดเร็วเกินไปเหมือนรอบที่แล้ว
04
Validation ที่เข้มงวดขึ้น
ใช้ชุดข้อมูลทดสอบที่หลากหลายกว่า และวัดผลกับ real-world images ตั้งแต่ต้น
Training run ใหม่ — กำลังดำเนินการ
$ python train_lprnet.py --max_epochs 150 --augmentation strong --architecture v3
Starting training run v3... Epoch 1: loss=1.82
✓ สิ่งที่ได้เรียนรู้: Overfitting ไม่ใช่ความล้มเหลว — มันคือส่วนหนึ่งของกระบวนการพัฒนา AI ทุกโปรเจกต์ ML จริงต้องผ่านรอบนี้ บทเรียนที่ได้คือ อย่าวัดความสำเร็จจาก Val Accuracy เพียงอย่างเดียว ต้องทดสอบกับข้อมูลที่หลากหลายจริงๆ เสมอ

ติดตามต่อ

เราจะอัปเดตผลลัพธ์ของ Training run ใหม่ที่นี่เมื่อเสร็จสิ้น พร้อมตัวเลขเปรียบเทียบกับรอบที่แล้ว และผลทดสอบบน Raspberry Pi 5 + Hailo-8 จริง

ถ้ากำลังทำโปรเจกต์ที่คล้ายกัน หรือสนใจระบบ Edge AI Camera สำหรับงานของคุณ ติดต่อทีมเราได้ที่ PWD Vision Works

เมื่อ AI "เก่งเกินไป" จนใช้งานจริงไม่ได้ — บทเรียน Overfitting จากโปรเจกต์อ่านป้ายทะเบียนไทย
PWD Vision Works Co.,Ltd., PWD 2 พฤษภาคม ค.ศ. 2026
แชร์โพสต์นี้
เก็บถาวร
ลงชื่อเข้าใช้ เพื่อแสดงความคิดเห็น