Checking datasets before AI training
ฝึกตรวจข้อมูลรั่วจากเที่ยวบินเดียวกัน ภาพซ้ำ และข้อมูลไม่ครบด้วย CSV และ Python ก่อนเริ่มเทรนโมเดลตรวจจับวัตถุ
บทเรียนต้นแบบ · 90 นาที · ฝึกบนคอมพิวเตอร์
ฝึกตรวจข้อมูลรั่วจากเที่ยวบินเดียวกัน ภาพซ้ำ และข้อมูลไม่ครบด้วย CSV และ Python ก่อนเริ่มเทรนโมเดลตรวจจับวัตถุ
เตรียมตัวก่อนเริ่ม
บทนี้ใช้เวลาออกแบบ 90 นาที เป็นส่วนหนึ่งของโมดูลเตรียมข้อมูล 7 ชั่วโมง ยังไม่ได้ฝึกโมเดลหรือทดสอบโดรนจริง เป้าหมายคืออ่าน manifest ซึ่งเป็นตารางบอกที่มาและการแบ่งชุดข้อมูล แล้วอธิบายได้ว่าผลประเมินอาจดูดีเกินจริงจากอะไร
ใช้ Python 3.10 ขึ้นไป และโปรแกรมเปิด CSV ไม่ต้องมี GPU บัญชีเว็บ หรือ package เพิ่ม หากยังไม่พร้อมรัน Python สามารถตรวจตารางด้วยตนเองก่อนแล้วค่อยเทียบผลโปรแกรม
ทำไมสุ่มภาพอย่างเดียวไม่พอ
ภาพหลายเฟรมจากเที่ยวบินเดียวกันอาจคล้ายกันมาก หากภาพใกล้กันอยู่ทั้งชุดฝึกและชุดทดสอบ โมเดลอาจได้คะแนนดีเพราะเห็นสภาพคล้ายกันมาแล้ว แต่ยังไม่แสดงว่าจะใช้กับเที่ยวบินหรือพื้นที่ใหม่ได้
train ใช้เรียนรู้, validation ใช้เลือกโมเดลและค่าตัดสินใจ, test พักไว้ประเมินหลังล็อกทางเลือกแล้ว การใช้ test เลือก confidence threshold ซ้ำ ๆ ทำให้ test ไม่เป็นชุดประเมินอิสระตามเจตนาเดิม
ในแบบฝึกนี้ใช้ flight_id เป็นกลุ่มที่ไม่ข้าม split หากคำถามคือใช้กับ พื้นที่ใหม่ ต้องพิจารณา site_id เป็นหน่วยแบ่งด้วย โปรแกรมตัวอย่างยังไม่ตรวจเงื่อนไขข้ามพื้นที่ให้อัตโนมัติ
อ่าน manifest แล้วหาข้อผิดพลาด
แตก ZIP เปิด dataset-split/manifest-review.csv แล้วอ่านคอลัมน์:
image_id: รหัสระเบียนภาพflight_id: เที่ยวบินต้นทาง ใช้จัดกลุ่มในโจทย์นี้site_id: พื้นที่ต้นทางcontent_id: รหัสเนื้อหาสมมติ ช่วยฝึกกรณีเนื้อหาเดียวกันแต่ชื่อภาพต่างกัน ไม่ใช่ hash ที่คำนวณจากภาพจริงsplit:train,validationหรือtestlicense: ที่มาสิทธิ์ข้อมูลตัวอย่าง โปรแกรมเพียงตรวจว่ามีค่า ไม่รับรองสิทธิ์ทางกฎหมาย
จดเลขบรรทัดและเหตุผลก่อนรันโปรแกรม มองหาห้าประเภท: เที่ยวบินเดียวข้าม split, รหัสภาพซ้ำ, เนื้อหาซ้ำ, ค่าที่ต้องมีหาย และชื่อ split นอกข้อตกลงในโจทย์
รันโปรแกรมตรวจบนคอมพิวเตอร์
เปิด terminal ในโฟลเดอร์ dataset-split หลังแตกไฟล์แล้ว ทดสอบไฟล์ที่ไม่มีปัญหาตามขอบเขตโปรแกรมก่อน
Windows:
py -3 check_split.py manifest-valid.csv
py -3 check_split.py manifest-review.csv
Linux:
python3 check_split.py manifest-valid.csv
python3 check_split.py manifest-review.csv
ผลเป็น JSON ไฟล์แรกคาดว่า valid: true และ errors: [] ไฟล์โจทย์คาดว่า valid: false พร้อมข้อผิดพลาดห้าประเภท GROUP_LEAKAGE, DUPLICATE_IMAGE_ID, DUPLICATE_CONTENT, MISSING_VALUE, INVALID_SPLIT
โปรแกรมจบด้วยรหัส 0 เมื่อไม่พบปัญหาในขอบเขตตรวจ, 1 เมื่อพบปัญหาข้อมูล และ 2 เมื่อเปิดไฟล์หรืออ่านรูปแบบไม่ได้ ข้อความภาษาอังกฤษเป็นชื่อสถานะที่เทียบกับรายการข้างต้น ไม่ใช่คำสั่งให้ติดตั้งโปรแกรมเพิ่ม
สถานะ OS ที่ทดสอบจริงอยู่ใน verification.json ใน ZIP คำสั่งของแต่ละ OS เป็นแนวทางเริ่มต้น ไม่ใช่หลักฐานว่ามีผลทดลองครบทุกเครื่อง
แก้ด้วยหลักฐาน ไม่เดาให้โปรแกรมผ่าน
- เที่ยวบินเดียวควรอยู่ชุดเดียวกันตามโจทย์นี้ เลือกการแบ่งก่อนฝึกและบันทึกเหตุผล
- ภาพซ้ำต้องย้อนตรวจต้นฉบับก่อนเลือกเก็บ ชื่อไฟล์ต่างกันอาจเป็นเนื้อหาเดิม
- ถ้า
flight_idหาย ให้ตรวจแหล่งต้นทางหรือกักรายการไว้ พร้อมบันทึกเหตุผล ห้ามใส่ ID สมมติเพื่อให้โปรแกรมขึ้นผ่าน - ตรวจความหมายของ
holdoutก่อนเปลี่ยนชื่อให้ตรงข้อตกลง ไม่เปลี่ยนทุกค่าที่ผิดเป็น test อัตโนมัติ - ส่งตารางที่แก้แล้ว รายการที่กักออก และ
data-card.mdแล้วรันตรวจซ้ำ
manifest-valid.csv เป็นตัวอย่างโครงสร้างที่ผ่าน ไม่ใช่ข้อมูลจริงที่แก้จากไฟล์โจทย์ ทุกระเบียนและรหัสในชุดนี้เป็นข้อมูลสังเคราะห์ ไม่มีภาพบุคคลหรือภาพภารกิจจริง
รู้ได้อย่างไรว่าทำถูก
เปิด answers.md หลังทำโจทย์ เกณฑ์ร่างคือพบข้อผิดพลาด 30 คะแนน เหตุผลการแก้/กัก 30, data card และหลักฐานทำซ้ำ 25, อธิบายข้อจำกัด 15 เป้าหมายอย่างน้อย 75 และต้องไม่ปกปิดข้อมูลรั่ว
โปรแกรมผ่านยังไม่ยืนยันความถูกต้องของ labels สิทธิ์ภาพ ความสมดุลคลาส หรือภาพใกล้เคียงที่มี content_id ต่างกัน และยังไม่ได้แสดงความแม่นยำของโมเดล ผู้สอนควรถามว่า “มีเรื่องอะไรที่ CSV นี้ยังบอกเราไม่ได้?”
ปัญหาพบบ่อย
- ไม่พบ
pyหรือpython3: ตรวจว่ามี Python ที่ใช้งานได้; หากต้องติดตั้งใช้ Python.org แล้วเปิด terminal ใหม่ - ไม่พบไฟล์: แตก ZIP ก่อนและเปิด terminal ในโฟลเดอร์ที่มี
check_split.py; อย่ารันจากหน้าต่างดู ZIP - Missing columns: คงชื่อ header ตาม README บาง spreadsheet อาจเปลี่ยนตัวคั่น CSV ให้บันทึกเป็น comma-separated และ UTF-8
- คะแนนตรวจไม่ตรงที่คิด: แยกเลขบรรทัดไฟล์จากลำดับข้อมูล Header เป็นบรรทัด 1; ตรวจคำสะกดและตัวพิมพ์ของ split
อ่านต่อและบรรณานุกรม
- Computer Vision และเว็บเทรน AI สำหรับขั้นฝึก ประเมิน ส่งออก และตรวจบนบอร์ด
- ชุดข้อมูลสำหรับทดลอง เพื่อเลือกข้อมูลพร้อมตรวจที่มาและสิทธิ์ก่อนใช้
- scikit-learn developers. (ม.ป.ป.). Cross-validation: evaluating estimator performance. รองรับการแยก test จากการเลือกค่า และการแยกตัวอย่างที่อยู่ในกลุ่มสัมพันธ์กัน
- NIST. (2023). AI Risk Management Framework 1.0. กรอบอ้างอิงการจัดการความเสี่ยงและรายงานข้อจำกัด AI ไม่ใช่ใบรับรองโมเดล
- CDC. (2025). Quality Training Standards. ใช้เป็นแนวทางให้ผู้เรียนได้ฝึกและรับ feedback
สืบค้น 8 กันยายน 2569 การใช้เที่ยวบิน/พื้นที่เป็นหน่วยแบ่งและชุดโจทย์นี้เป็นการประยุกต์ของ PK-Research ต้องเลือกหน่วยแบ่งให้ตรงภารกิจจริงก่อนใช้กับชุดข้อมูลของตน