ให้ AI ตรวจภาพ AI บนการ์ดจอ 16GB แล้วมันพลาดเคสสำคัญที่สุด
เรารัน Qwen3-VL-8B แบบ local บน RTX 5060 Ti 16GB เพื่อตรวจภาพ production ผลคือถูก 9 จาก 11 เคส ไม่มี false positive แต่พลาดการละเมิดจริงทั้งสองเคส
SXP LAB RECORD
- ทดสอบเมื่อ
- โมเดลที่ทดสอบ
- Qwen3-VL-8B-Instruct-GGUF
- จำนวนเคส
- 11 เคส
- จำนวนรอบ
- 1 รอบ
- ต้นทุน
- ไม่ได้วัด
- ทำซ้ำได้
- ทำซ้ำได้บางส่วน
ประเด็นสำคัญที่คุณจะได้จากบทความนี้
- โมเดล VLM ขนาด 8B รันบนการ์ดจอ 16GB ได้จริง และเหลือ VRAM พอสมควร
- ความแม่นยำรวม 9 จาก 11 เคส ฟังดูดี แต่เป็นตัวเลขที่หลอก
- มันไม่เคยปฏิเสธภาพที่ถูกต้องเลย แต่ก็จับการละเมิดจริงไม่ได้สักเคส
- ด่านตรวจแบบ deterministic ที่ไม่ใช้ AI เลย ยังคงเป็นชั้นที่คุ้มที่สุด
- สิ่งที่เราตัดสินใจทำจริงหลังจากเห็นผล
ใช้เป็นผู้ช่วยดูได้ อย่าใช้เป็นด่านตัดสิน โมเดลขนาด 8B รันบนการ์ดจอ 16GB ได้สบายและตอบเป็นโครงสร้างที่โปรแกรมอ่านต่อได้ 100% แต่ในงานของเรามันจับการละเมิดจริงไม่ได้เลยสักเคส เราจึงเปิดใช้มันในโหมดสังเกตการณ์ที่ไม่มีสิทธิ์ปฏิเสธงาน และปล่อยให้ด่านตรวจแบบ deterministic ที่ไม่ใช้ AI ทำหน้าที่ตัดสินต่อไป
เหมาะสำหรับ (Best For)
- คนที่ผลิตภาพ AI จำนวนมากต่อสัปดาห์ และอยากได้ความเห็นที่สองแบบไม่เสียค่า API
- คนที่มีการ์ดจอ 16GB อยู่แล้วและอยากรู้ว่าโมเดล 8B รันไหวจริงไหม
- คนที่ทำงานกับภาพที่เผยแพร่ไม่ได้ และต้องการให้ทุกอย่างอยู่ในเครื่อง
ไม่เหมาะสำหรับ (Not For)
- คนที่อยากได้ระบบตรวจอัตโนมัติแล้วเลิกดูภาพเอง งานนี้บอกชัดว่ายังไม่ถึงจุดนั้น
- คนที่อยากให้ AI ตัดสินว่าภาพสวยหรือตรงคาแรกเตอร์ไหม ซึ่งเป็นคนละเรื่องกันและโมเดลไม่มีอำนาจตอบ
- คนที่การ์ดจอต่ำกว่า 10GB ซึ่งต้องลด quantization ลงไปอีกและผลอาจต่างจากนี้
คำตัดสินก่อน
ใช้เป็นผู้ช่วยดูได้ อย่าใช้เป็นด่านตัดสิน
เรารัน Qwen3-VL-8B แบบ local บนการ์ดจอ RTX 5060 Ti 16GB เพื่อตรวจว่าภาพที่ระบบเราสร้างขึ้นละเมิดข้อจำกัดที่เขียนไว้ใน prompt หรือไม่ ผลรวมคือตอบตรงกับคำตัดสินของคน 9 จาก 11 เคส และไม่เคยปฏิเสธภาพที่ถูกต้องเลยสักครั้ง
ตัวเลขนั้นดูดี แต่มันหลอก เพราะ 2 เคสที่มันพลาด คือ 2 เคสเดียวที่เป็นการละเมิดจริง
พูดอีกอย่างคือ ในชุดทดสอบนี้ มันปล่อยผ่านทุกอย่าง และการปล่อยผ่านทุกอย่างก็ทำให้ได้คะแนน 9/11 โดยอัตโนมัติ
เราจึงเปิดใช้งานมันในโหมดสังเกตการณ์ที่ไม่มีสิทธิ์ปฏิเสธหรือสั่งสร้างภาพใหม่ และปล่อยให้ด่านตรวจแบบ deterministic ที่ไม่ใช้ AI เลย ทำหน้าที่ตัดสินต่อไป
ทำไมเราถึงทดสอบเรื่องนี้
เราผลิตภาพประกอบด้วย AI เป็นชุด ๆ และทุกชุดต้องมีคนดูก่อนใช้ ปัญหาคือเวลาที่หมดไปกับการดูภาพส่วนใหญ่ไม่ได้หมดไปกับการตัดสินใจเรื่องรสนิยม แต่หมดไปกับการไล่เช็กว่า “ภาพนี้ทำผิดกติกาที่เราเขียนไว้ใน prompt เองหรือเปล่า”
กติกาพวกนี้เป็นเรื่องที่ตอบได้ตรงไปตรงมา เช่น ห้ามมีคนอยู่ในภาพ ห้ามมีตัวหนังสือ ห้ามมีของประดับผนัง ต้องมีวัตถุชิ้นนี้ ต้องมีตัวละครกี่คน
คำถามของงานนี้จึงแคบมาก และตั้งใจให้แคบ คือ โมเดลที่รันในเครื่องตัวเอง แทนคนในขั้นตอนไล่เช็กกติกาได้หรือยัง ไม่ใช่ “โมเดลนี้เก่งแค่ไหน”
เราทดสอบอะไรบ้าง
เราใช้ Qwen3-VL-8B-Instruct เวอร์ชัน GGUF ที่ผู้พัฒนาปล่อยเอง quantize แบบ Q8_0 รันด้วย llama.cpp บนวินโดวส์ ยิงทุกอย่างเข้า endpoint ในเครื่อง ไม่มีภาพออกจากเครื่องแม้แต่ภาพเดียว
เหตุผลที่เลือก Q8_0 แทนที่จะรัน BF16 เต็ม ๆ คือคำนวณคร่าว ๆ แล้วโมเดลขนาดนี้ต้องการหน่วยความจำเกิน 16GB ตั้งแต่ยังไม่นับ projector และ context ส่วน Q8_0 ลงได้พอดีและยังเหลือที่ว่าง
quantization คืออะไร — คือการลดความละเอียดของตัวเลขในโมเดลลง เพื่อให้ใช้หน่วยความจำน้อยลงและรันเร็วขึ้น แลกกับคุณภาพที่ลดลงเล็กน้อย Q8_0 คือระดับที่ยังละเอียดพอสมควร ส่วน Q4 จะเล็กลงอีกเท่าตัวแต่เสียคุณภาพมากกว่า
ชุดทดสอบคือภาพจากงาน production จริงของเรา 11 ภาพ ที่มีคำตัดสินของคนบันทึกไว้แล้วก่อนหน้านี้ แบ่งเป็นภาพที่เคยถูกปฏิเสธ 2 ภาพ และภาพที่เคยผ่าน 9 ภาพ
วิธีทดสอบ
หลักการเดียวที่เราถือคือ ถามคำถามปลายปิดทีละข้อ ไม่ถามว่าภาพนี้ดีไหม ไม่ให้คะแนน ไม่ให้ตัดสินรสนิยม
ตัวอย่างคำถามที่ถามจริง:
- ในภาพนี้มีคนอยู่หรือไม่
- ในภาพนี้มีตัวหนังสือที่อ่านออกหรือไม่ ถ้ามีให้ถอดความ
- ในภาพนี้มีตัวละครกี่คน
- ผนังในภาพนี้มีของประดับหรือไม่
เงื่อนไขที่ตั้งไว้ก่อนรันและไม่แก้ระหว่างทาง:
- ล็อกชุดคำถามไว้ก่อน แล้วรันครั้งเดียว ไม่แก้คำถามหลังเห็นผล เพราะถ้าแก้ ผลที่ได้จะเป็นการปรับ prompt ให้เข้ากับเฉลย ไม่ใช่การวัด
- บังคับให้ตอบเป็น JSON ตาม schema ที่กำหนด เพื่อให้โปรแกรมอ่านต่อได้
- ตรวจภาพด้วยกฎ deterministic ก่อนเสมอ คือดูว่าไฟล์เปิดได้ไหม ขนาดถูกไหม อัตราส่วนถูกไหม ภาพที่ตกด่านนี้ไม่ต้องเปลืองการเรียกโมเดลเลย
- อ่านคำอธิบายของโมเดลทุกครั้ง ไม่ดูแค่คำตอบ ข้อนี้สำคัญที่สุด และเป็นข้อที่เปลี่ยนข้อสรุปของงานนี้ทั้งหมด
ผลที่ได้
ตัวเลขรวม
| รายการ | ผล |
|---|---|
| ทำนายตรงกับคำตัดสินของคน | 9 จาก 11 เคส |
| false positive (ปฏิเสธภาพที่จริง ๆ ผ่าน) | 0 |
| false negative (ปล่อยภาพที่จริง ๆ ต้องปฏิเสธ) | 2 |
| ตอบเป็น JSON ตาม schema สำเร็จ | 13 จาก 13 ครั้ง |
| เวลาตอบเฉลี่ยต่อคำถาม | 7.768 วินาที |
| VRAM สูงสุดที่ใช้ทั้งเครื่อง | 11,809 MiB จาก 16,311 MiB |
จำนวนครั้งที่เรียก (13) มากกว่าจำนวนภาพ (11) เพราะมีภาพสองใบที่ต้องถามสองเรื่องแยกกัน
ด่านที่ไม่ใช้ AI เลย
ก่อนเรียกโมเดล เราตรวจภาพที่รับแล้ว 22 ภาพด้วยกฎธรรมดา คือเปิดไฟล์ได้ไหม เป็น PNG ไหม ขนาดตรงที่ประกาศไว้ไหม อัตราส่วน 16:9 ไหม
ผลคือผ่าน 22 จาก 22
ฟังดูน่าเบื่อ แต่นี่คือชั้นเดียวในงานทั้งหมดนี้ที่เรามั่นใจพอจะให้มันปฏิเสธงานอัตโนมัติได้ มันไม่ใช้ GPU ไม่มีความเห็น และผิดพลาดไม่ได้
สองเคสที่มันพลาด
เคสที่หนึ่ง — รายละเอียดเกินงบที่กำหนด โมเดลดูเฉพาะสิ่งที่มันเรียกว่า “ตัวหลัก” ในภาพ แล้วข้ามตัวประกอบที่อยู่ในกรอบเล็ก ๆ ไป และบรรยายเสื้อผ้าไม่ตรงกับที่เห็นในภาพจริง
เคสที่สอง — รอยเท้าต่อเนื่อง เคสนี้น่าสนใจที่สุด โมเดลนับจำนวนตัวละครได้ถูกต้องว่ามีสามคน แต่พอถามเรื่องรอยเท้าที่ลากยาวจากซ้ายไปขวา มันตอบว่าเป็นรอยเท้าแยกกันเป็นกลุ่ม ๆ และตีความรอยขาดของกระดาษว่าเป็นการขาดตอนของรอยเท้า
ทั้งที่นี่คือการละเมิดที่ชัดที่สุดในชุดทดสอบ และคนตัดสินไว้แล้วว่าไม่ผ่าน
สิ่งที่ล้มเหลว
นอกจากสองเคสข้างบน ยังมีอีกสองอย่างที่เจอจากการอ่านคำอธิบาย ซึ่งถ้าดูแค่คำตอบว่า PASS หรือ FAIL จะไม่มีวันเห็น
ตัดสินถูกด้วยเหตุผลผิด มีภาพหนึ่งที่กติกาคือ “ห้ามมีนิ้วมือที่ละเอียดเกินไป” โมเดลรายงานออกมาเองว่าเห็นนิ้วมือแต่ละนิ้วชัดเจน แล้วสรุปว่า ผ่าน
คำตอบตรงกับเฉลย แต่เหตุผลขัดกับกติกาที่มันเพิ่งอ่านไป ถ้าเรานับเคสนี้เป็น “ถูก” แล้วเอาไปสร้างความมั่นใจ เราจะกำลังนับความบังเอิญเป็นความสามารถ
ตอบถูกโดยไม่ได้ดูสิ่งที่ถาม อีกภาพหนึ่งเราถามให้ตรวจว่าพื้นผิวกระดาษว่างเปล่าหรือมีตัวหนังสือ โมเดลตอบว่าไม่เห็นกระดาษในภาพเลย ผลลัพธ์ออกมาเป็น “ผ่าน” ซึ่งตรงกับเฉลย แต่มันไม่ได้ตรวจสิ่งที่เราถาม
นี่คือเหตุผลที่เราเขียนไว้ในบันทึกว่า การมี false positive เป็นศูนย์ ไม่ได้แปลว่าปลอดภัย ระบบที่ตอบว่าผ่านทุกครั้งก็มี false positive เป็นศูนย์เหมือนกัน
ต้นทุนและเวลา
ค่าไฟและค่าเสื่อมเราไม่ได้วัด จึงไม่รายงานเป็นตัวเลข
สิ่งที่วัดได้คือ ไม่มีค่า API เพราะรันในเครื่องทั้งหมด เวลาตอบเฉลี่ย 7.768 วินาทีต่อคำถาม ซึ่งแปลว่าภาพหนึ่งที่มีสามข้อจำกัดใช้เวลาราวครึ่งนาที
เวลาดาวน์โหลดโมเดลครั้งแรกราว 9–10 GB และหลังจากนั้นทำงานแบบ offline ได้
ข้อจำกัดของงานนี้
อ่านข้อนี้ก่อนเอาผลไปใช้
- รันครั้งเดียว เราไม่ได้รันซ้ำเพื่อดูว่าคำตอบเปลี่ยนไหม โมเดลภาษามีความสุ่มอยู่ ผลอาจไม่เหมือนเดิมทุกครั้ง
- มีภาพที่เคยถูกปฏิเสธจริงให้ทดสอบแค่ 2 ภาพ อีก 5 เคสที่บันทึกไว้ในอดีตไม่มีไฟล์เหลือแล้ว จึงทดสอบไม่ได้ ชุดทดสอบนี้เล็กเกินกว่าจะสรุปอะไรกว้าง ๆ
- ทดสอบโมเดลเดียว quantization เดียว ไม่ได้เทียบกับ Q4 ไม่ได้เทียบกับ BF16 ไม่ได้เทียบกับโมเดลอื่น ผลนี้ไม่ได้บอกว่า Qwen3-VL แย่กว่าหรือดีกว่าใคร
- ไม่ได้ทดสอบภาษาไทย คำถามทั้งหมดเป็นภาษาอังกฤษ ถ้าคุณจะให้มันอ่านตัวหนังสือไทยในภาพ ผลอาจต่างออกไปโดยสิ้นเชิงและต้องทดสอบแยก
- นี่ไม่ใช่ benchmark ของโมเดล เป็นการวัดว่ามันแทนคนในงานเฉพาะของเราได้หรือยัง ซึ่งเป็นคำถามคนละข้อกับ “โมเดลนี้เก่งไหม”
บทเรียนที่เอาไปใช้ได้เลย
1. ความแม่นยำรวมเป็นตัวเลขที่หลอกได้ง่ายที่สุด
ถ้าชุดทดสอบของคุณมีของเสียอยู่ 2 ชิ้นจาก 11 ชิ้น ระบบที่บอกว่า “ผ่านหมด” จะได้ 82% ทันที ดูตัวเลขแยกว่าจับของเสียได้กี่ชิ้น ไม่ใช่ดูคะแนนรวม
2. อ่านเหตุผล ไม่ใช่แค่คำตอบ
เคสที่อันตรายที่สุดในงานนี้ไม่ใช่เคสที่ตอบผิด แต่คือเคสที่ตอบถูกด้วยเหตุผลที่ขัดกับตัวเอง ถ้าเราดูแค่ PASS/FAIL เราจะสรุปว่าใช้ได้ และจะเอาไปใช้จริง
3. เอากฎธรรมดามาก่อนโมเดลเสมอ
ตรวจนามสกุลไฟล์ ขนาด อัตราส่วน ให้จบก่อน ชั้นนี้ถูก เร็ว ไม่มีความเห็น และในงานนี้มันคือชั้นเดียวที่เชื่อถือได้พอจะให้ตัดสินเอง
4. แยก “ผู้ช่วยดู” ออกจาก “ผู้ตัดสิน” ให้ชัด
เราเปิดใช้โมเดลนี้จริง แต่ตั้งค่าให้รายการที่มันมีสิทธิ์ปฏิเสธงานอัตโนมัติเป็น ค่าว่าง มันเขียนความเห็นได้ แต่ปฏิเสธงานไม่ได้ ถ้าจะเลื่อนขั้นให้มันตัดสินเองเมื่อไร ต้องมีตัวอย่างการละเมิดจริงหลายเคสต่อหนึ่งประเภทก่อน
เหมาะกับใคร
เหมาะ ถ้าคุณผลิตภาพ AI เป็นจำนวนมากและอยากได้ความเห็นที่สองโดยไม่เสียค่า API ถ้าคุณมีการ์ดจอ 16GB อยู่แล้วและอยากรู้ว่าโมเดล 8B รันไหวจริงไหม หรือถ้าภาพของคุณเผยแพร่ไม่ได้และทุกอย่างต้องอยู่ในเครื่อง
ไม่เหมาะ ถ้าคุณหวังจะเลิกดูภาพเอง งานนี้บอกชัดว่ายังไม่ถึงจุดนั้น ถ้าคุณอยากให้ AI ตัดสินว่าภาพสวยหรือตรงคาแรกเตอร์ ซึ่งเป็นคนละเรื่องและเราไม่ให้มันตอบ หรือถ้าการ์ดจอคุณต่ำกว่า 10GB ซึ่งต้องลด quantization ลงอีกและผลอาจต่างจากนี้
ถ้าจะลองเอง
ทำซ้ำได้บางส่วน ส่วนที่ทำซ้ำไม่ได้คือภาพ production ของเราซึ่งเผยแพร่ไม่ได้ แต่โครงวิธีทำซ้ำได้ทั้งหมด
- เตรียมภาพของคุณเองที่ มีคำตัดสินของคนบันทึกไว้แล้ว ทั้งกลุ่มที่ผ่านและกลุ่มที่ไม่ผ่าน ถ้าไม่มีกลุ่มที่ไม่ผ่าน คุณจะวัดอะไรไม่ได้เลย
- เขียนข้อจำกัดออกมาเป็นคำถามปลายปิดทีละข้อ
- ล็อกคำถามไว้ แล้วรันครั้งเดียว
- เทียบกับคำตัดสินเดิม แล้ว อ่านคำอธิบายทุกอัน
- นับ false negative แยกจากคะแนนรวม
ขั้นที่ 1 คือขั้นที่คนข้ามบ่อยที่สุด และเป็นขั้นที่ทำให้ผลมีความหมาย
เราทำอะไรต่อ
เปิดใช้โมเดลในโหมดสังเกตการณ์ที่ไม่มีสิทธิ์ปฏิเสธงาน ถ้าโมเดลไม่ได้ติดตั้งอยู่ ระบบยังทำงานปกติ
ขั้นต่อไปที่วางไว้คือรันแบบเงียบ ๆ คู่ขนานไปกับการตรวจของคนในงานจริงหนึ่งชุด เก็บความเห็นของโมเดลไว้เทียบทีหลัง โดยไม่ให้มันมีผลกับงานเลย แล้วค่อยดูว่าเมื่อมีตัวอย่างการละเมิดจริงมากพอ มันจับได้กี่เปอร์เซ็นต์
บันทึกหลักฐานการทดสอบ (Empirical Evidence)
| ตัววัด (Metric) | ผลลัพธ์ (Value) | หน่วย | วิธีวัด (Method) | ประเภท |
|---|---|---|---|---|
| เคสที่ทำนายตรงกับคำตัดสินของมนุษย์ | 9/11 | เคส | เทียบคำตอบกับ ground truth ที่บันทึกไว้ล่วงหน้า | measured |
| false positive (ปฏิเสธภาพที่จริง ๆ ผ่าน) | 0 | เคส | นับจากผลเทียบ ground truth | measured |
| false negative (ปล่อยภาพที่จริง ๆ ต้องปฏิเสธ) | 2 | เคส | นับจากผลเทียบ ground truth | measured |
| เวลาตอบเฉลี่ยต่อคำถาม | 7.768 | วินาที | เฉลี่ยจาก 13 ครั้งเรียก | measured |
| VRAM สูงสุดที่ใช้จริงทั้งเครื่องขณะรัน | 11809 | MiB | อ่านจากเครื่องขณะรัน | measured |
| VRAM เหลือขณะใช้งานสูงสุด | 4502 | MiB | คำนวณจากค่า VRAM รวมลบค่าที่ใช้ | derived |
| คำตอบที่ parse เป็น JSON ตาม schema ได้ | 13/13 | ครั้ง | ใช้ JSON-schema response format ของ llama.cpp | measured |
| ด่านตรวจ deterministic (ไฟล์ ขนาด อัตราส่วน) กับภาพที่รับแล้ว | 22/22 | ภาพผ่าน | ตรวจก่อนเรียกโมเดล ไม่ใช้ GPU | measured |
ข้อจำกัดของการทดลอง (Limitations)
- รันครั้งเดียว ไม่มีการรันซ้ำเพื่อดูความผันผวนของคำตอบ
- มีภาพที่เคยถูกปฏิเสธจริงเหลือให้ทดสอบแค่ 2 เคส อีก 5 เคสที่บันทึกไว้ไม่มีไฟล์ต้นฉบับหลงเหลือ จึงทดสอบไม่ได้
- ทดสอบโมเดลเดียว quantization เดียว ไม่ได้เทียบกับ Q4 หรือ BF16 หรือโมเดลอื่น
- ไม่ได้ทดสอบภาษาไทยในงานนี้ คำถามทั้งหมดเป็นภาษาอังกฤษและเป็นคำถามเชิงวัตถุ
- นี่ไม่ใช่ benchmark ของ Qwen3-VL โดยทั่วไป เป็นการวัดว่ามันใช้แทนคนตรวจงานของเราได้หรือยังเท่านั้น
แหล่งอ้างอิงและเอกสารปฐมภูมิ (Citations)
- ปฐมภูมิQwen3-VL-8B-Instruct
- ปฐมภูมิQwen3-VL-8B-Instruct-GGUF
AI ช่วยจัดโครงสร้างบทความและตรวจทานภาษา ตัวเลขและผลทดสอบทั้งหมดมาจากบันทึกการรันจริงของ SXP ผู้เขียนตรวจสอบทุกตัวเลขด้วยตัวเอง