Bloom-Counter: ทดสอบความแม่นยำระบบนับดอกไม้พืชผล
เจาะลึกโปรเจกต์โอเพนซอร์ส Bloom-Counter เผยคะแนนความแม่นยำ 99.7% อาจลวงตาเมื่อเจอแสงเงาและการบัง พร้อมแนวทางแก้ไขด้วยวิธีพรีโปรเซสซิ่ง

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- ระบบนับดอกไม้ต้องแยกผลผลิตเป็นดอกบานและตุ่มดอกเพื่อวางแผนเก็บเกี่ยว
- โปรเจกต์ Bloom-Counter เคยทำคะแนนแม่นยำ 99.7% แต่เป็นเพราะตัวจำลองถูกจูนเข้ากับตัวตรวจจับ
- การทดสอบความเครียด (Stress Test) เผยให้เห็นจุดอ่อนเมื่อเจอสภาวะแสงเปลี่ยนและการบัง
- การทำ Gray-world white balance ร่วมกับ CLAHE ช่วยแก้ปัญหาแสงได้แต่ต้องใช้อย่างระมัดระวัง
ระบบนับผลผลิตทางการเกษตรไม่ได้ต้องการแค่ตัวเลขรวมเพียงตัวเดียว แต่เกษตรกรผู้ปลูกจำเป็นต้องทราบข้อมูลสองส่วนที่แยกจากกันอย่างชัดเจน ได้แก่ จำนวนดอกไม้ที่บานแล้วสำหรับวางแผนการเก็บเกี่ยวในสัปดาห์นี้ และจำนวนตุ่มดอกที่ยังตูมอยู่สำหรับคาดการณ์ผลผลิตในสัปดาห์ถัดไป เป้าหมายที่แท้จริงจึงอยู่ที่สัดส่วนแยกย่อย ไม่ใช่แค่ผลรวมทั้งหมดเท่านั้น
โปรเจกต์โอเพนซอร์สที่มีชื่อว่า Bloom-Counter ถูกพัฒนาขึ้นมาเพื่อตอบโจทย์นี้โดยเฉพาะ ด้วยกระบวนการนำเข้ารูปภาพผ่านการแบ่งส่วนสีแบบ HSV และการวิเคราะห์เส้นขอบ (Contour analysis) ก่อนจะสรุปผลจำนวนดอกบานและตุ่มดอกแยกตามภูมิภาคและวันที่ ในไฟล์ README ของโปรเจกต์ระบุสถิติที่น่าประทับใจด้วยภาพจำลอง 6 ภาพ มีดอกไม้รวม 357 ดอก และอัตราการตรวจจับถูกต้อง (Detection recall) สูงถึง 99.7% อย่างไรก็ตาม บทความนี้เริ่มต้นด้วยข้อสังเกตที่ท้าทายว่าตัวเลขความแม่นยำ 99.7% นั้นอาจไม่ได้พิสูจน์ประสิทธิภาพที่แท้จริง เนื่องจากมีเงื่อนไขซ่อนอยู่ภายในโค้ดที่ทุกคนสามารถตรวจสอบได้
สาเหตุแรกคือตัวจำลอง (Simulator) และตัวตรวจจับ (Detector) ถูกปรับจูนเข้าหากันตั้งแต่ต้น โดยมีความเห็นในโค้ดบรรทัดที่ 23 ของไฟล์ simulator/generate.py ระบุไว้อย่างชัดเจนว่าสีของดอกไม้ในระบบ BGR ถูกปรับให้ตั้งอยู่ภายในช่วงสีกลีบดอกแบบ HSV ของตัวตรวจจับพอดี ระบบจึงสร้างดอกไม้ตามรสนิยมของตัวตรวจจับและให้ตัวตรวจจับนับกลับมา คะแนนที่สมบูรณ์แบบจึงเป็นเรื่องของโครงสร้างระบบมากกว่าความท้าทายจริง สาเหตุที่สองคือฟังก์ชันสุ่มตำแหน่งในตัวจำลองใช้การสุ่มแบบปฏิเสธ (Rejection sampling) เพื่อให้แน่ใจว่าไม่มีดอกไม้ซ้อนทับกัน และการให้คะแนนในไฟล์ตัวอย่างใช้เพียงอัตราส่วนของผลรวมเท่านั้นโดยไม่มีการจับคู่รายวัตถุ
"The flower colors in BGR are tuned to sit inside the detector's HSV petal ranges."
simulator/generate.py (Line 23)

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
ในความเป็นจริง โรงเรือนปลูกพืชไม่ได้ราบรื่นเช่นนั้น แสงสว่างสามารถเปลี่ยนแปลงได้ตลอดทั้งวัน ใบไม้บังช่อดอกเป็นเรื่องปกติ และดอกไม้เติบโตกันเป็นกระจุก ผู้พัฒนาจึงนำตัวตรวจจับแบบดั้งเดิม ColorSegmentationDetector โดยไม่ปรับแต่งพารามิเตอร์ใดๆ (พื้นที่ขั้นต่ำ 120 พิกเซลตาราง พื้นที่ดอกบานขั้นต่ำ 900 พิกเซลตาราง และเคอร์เนลสัณฐานวิทยาขนาด 7) มาทดสอบกับฉากภาพขนาด 1280×960 พิกเซล จำนวน 4 ภาพจากเรโปซิโทรรี ซึ่งมีวัตถุรวมทั้งหมด 210 ชิ้น แบ่งเป็นดอกบาน 134 ดอก และตุ่มดอก 76 ดอก พร้อมทั้งเปลี่ยนวิธีให้คะแนนเป็นการจับคู่ระยะห่างจุดศูนย์กลางแบบGreedy เพื่อวัดความแม่นยำ (Precision) ความครอบคลุม (Recall) และค่า F1 อย่างละเอียด
การทดสอบแบบ Stress-testing ในลักษณะนี้นับเป็นแนวปฏิบัติที่ดีเยี่ยมในการพัฒนาคอมพิวเตอร์วิทัศน์ (Computer Vision) เนื่องจากโมเดลที่ถูกฝึกหรือทดสอบบนชุดข้อมูลสังเคราะห์มักจะเจออาการ Overfitting กับสภาพแวดล้อมจำลองนั้นๆ การทดลองบังคับให้ระบบเผชิญความท้าทายภายนอก เช่น การเปลี่ยนแปลงของแสงเงาหรือการบังของใบไม้ ช่วยให้นักพัฒนาเห็นขีดจำกัดที่แท้จริงก่อนนำไปใช้งานจริงในแปลงเกษตรกรรม
ผลการทดลองชี้ให้เห็นว่าเมื่อเผชิญกับการลดแสง (Exposure -50) และเงา คะแนนรวมตามวิธีเดิมยังคงแสดงความผิดพลาด 0.0% แต่ในความเป็นจริง ดอกไม้บานหายไปถึงหนึ่งในสี่ถึงหนึ่งในหกลึกเข้าไปในเงา และมีตุ่มดอกปลอมปรากฏขึ้นมากว่ายี่สิบตำแหน่ง กลไกเบื้องหลังคือความมืดจะกัดกินหน้ากากสีของกลีบดอกไม้จากขอบเข้ามาก่อน ทำให้ค่าความสว่างตกลงและพื้นที่ลดลงต่ำกว่าเกณฑ์ 900 พิกเซลตาราง ส่งผลให้ระบบจำแนกดอกบานเหล่านั้นกลายเป็นตุ่มดอกแทนที่จะหายไปเฉยๆ ในทางตรงกันข้าม หากแสงสว่างมากเกินไป (Overexposure) จะทำให้เกิดเศษชิ้นส่วนใบไม้ที่ซีดจางกลายเป็นตุ่มดอกปลอมขึ้นมาแทน
ข่าวดีคือระบบยังมีโซนความทนทาน (Robust zone) ที่กว้างพอสมควร เช่น การปรับเพิ่มความสว่างด้วยแกมม่า 0.6 การลดความสว่างถึงแกมม่า 1.6 และสภาพแสงน้อยที่มีสัญญาณรบกวน ซึ่งตัวตรวจจับยังคงทำงานได้อย่างปกติ นอกจากนี้ ผู้พัฒนาได้ทดลองแนวทางแก้ไขสองวิธี ได้แก่ การทำ Gray-world white balance ตามด้วย CLAHE บนช่องความสว่าง V เป็นกระบวนการเตรียมภาพล่วงหน้า และตัวประมาณค่าการแยกตามพื้นที่สำหรับดอกไม้ขนาดใหญ่
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น